feat(menu): hyprpicker color picker — Tools › row + SUPER+CTRL+P (item 13 done)
All checks were successful
Check / eval (push) Successful in 3m0s
All checks were successful
Check / eval (push) Successful in 3m0s
The last niceties slice: pick a pixel's color into the clipboard. hyprpicker joins grim/slurp in systemPackages; a new nomarchy-menu `colorpicker` mode captures its output, wl-copies it, and toasts the hex (Esc = silent cancel). Tools › row self-gates on hyprpicker being present; SUPER+CTRL+P added in keybinds.nix, so the Hyprland bind and the SUPER+? cheatsheet row come from the one source. Item 13 complete and deleted from BACKLOG. Verified: V0 (flake check); V1 — template-home and template-system build; rendered nomarchy-menu passes bash -n and contains the mode + gated row; cheatsheet has the SUPER+CTRL+P row; hyprland.conf has the bind; the system toplevel ships sw/bin/hyprpicker. Remains: V3 — real loupe → click → wl-paste round-trip in a session (HARDWARE-QUEUE). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -26,13 +26,6 @@ next, in what order*.
|
||||
|
||||
## NEXT
|
||||
|
||||
### 13. Small niceties batch (one slice per iteration)
|
||||
Each is a small, self-contained polish item in the existing patterns
|
||||
(shipped: idle-inhibit/caffeine 2026-07-04; low-battery notifications
|
||||
2026-07-05 — sysfs watcher + checks.battery-notify):
|
||||
- **Color picker:** `hyprpicker` → clipboard as a Tools › entry +
|
||||
`SUPER+CTRL` bind; pairs naturally with theme work.
|
||||
|
||||
### 14. Automated upstream lock bumps (maintainer CI, slices b+c) `[big]`
|
||||
ROADMAP § Automated upstream lock bumps — the scheduled half (the
|
||||
checks-on-push workflow shipped; see item 20 for the runner status):
|
||||
|
||||
@@ -140,6 +140,10 @@ QA machine), the **T14s** (webcam case).
|
||||
now reflects the real state (the `= true` comparison fix).
|
||||
— 2026-07-04 Bernardo: PASS — theme changes committed and the
|
||||
toggle self-committed.
|
||||
- [ ] **Color picker (item 13, final slice)** — SUPER+CTRL+P (or Tools ›
|
||||
Color picker): hyprpicker's zoom loupe appears; click a pixel →
|
||||
toast shows the hex and `wl-paste` yields it; Esc cancels with no
|
||||
toast. Row present in the SUPER+? cheatsheet.
|
||||
- [ ] **Low-battery toasts (item 13 slice)** — on battery, drain past
|
||||
25%: one "Battery low" toast; past 10%: a critical "Battery
|
||||
critical" toast that stays up until dismissed (swaync); plug in,
|
||||
|
||||
@@ -17,6 +17,22 @@ Template:
|
||||
|
||||
---
|
||||
|
||||
## 2026-07-05 — color picker (iteration #25, item 13 final slice → item done)
|
||||
- **Task:** BACKLOG NEXT#13 last slice — hyprpicker → clipboard from
|
||||
the menu + a direct bind. Item 13 complete; deleted from BACKLOG.
|
||||
- **Did:** hyprpicker into systemPackages (next to grim/slurp); rofi.nix
|
||||
`colorpicker` mode (hyprpicker → wl-copy → hex-in-toast, Esc = silent
|
||||
cancel) + self-gated Tools › "Color picker" row + usage line;
|
||||
keybinds.nix SUPER+CTRL+P row (feeds bind + cheatsheet).
|
||||
- **Verified:** V0; V1 — template-home AND template-system build;
|
||||
rendered nomarchy-menu bash -n OK with mode + gated row; cheatsheet
|
||||
txt has the SUPER+CTRL+P row; hyprland conf has the bind; system
|
||||
toplevel ships sw/bin/hyprpicker. Picking needs a compositor → V3.
|
||||
- **Pending:** V3 queued (loupe → click → wl-paste round-trip).
|
||||
- **Next suggestion:** #15 (display profiles) needs a design pass
|
||||
written into the entry first; #16 (greeter theming) is the next
|
||||
directly codeable item — or #14's bump workflow (eval-tier gate).
|
||||
|
||||
## 2026-07-05 — low-battery notifications (iteration #24, item 13 slice)
|
||||
- **Task:** BACKLOG NEXT#13 second slice — the bar colors the battery
|
||||
at 25/10% but nothing *notified*.
|
||||
|
||||
@@ -49,6 +49,7 @@
|
||||
{ mods = "$mod CTRL"; key = "N"; action = "exec, nomarchy-menu network"; desc = "Network (nmtui)"; }
|
||||
{ mods = "$mod CTRL"; key = "B"; action = "exec, nomarchy-menu bluetooth"; desc = "Bluetooth"; }
|
||||
{ mods = "$mod CTRL"; key = "S"; action = "exec, nomarchy-menu capture"; desc = "Screenshot / capture"; }
|
||||
{ mods = "$mod CTRL"; key = "P"; action = "exec, nomarchy-menu colorpicker"; desc = "Color picker (→ clipboard)"; }
|
||||
{ mods = "$mod CTRL"; key = "A"; action = "exec, nomarchy-menu ask"; desc = "Ask Claude"; }
|
||||
{ mods = "$mod CTRL"; key = "D"; action = "exec, nomarchy-menu dnd"; desc = "Do Not Disturb toggle"; }
|
||||
|
||||
|
||||
@@ -377,6 +377,17 @@ ${themeRows}
|
||||
*"Record screen"*) exec nomarchy-record start screen ;;
|
||||
esac ;;
|
||||
|
||||
colorpicker)
|
||||
# Pick a pixel's color (hyprpicker's zoom loupe) → clipboard, hex
|
||||
# in the confirmation toast. Esc/cancel exits silently. Self-gated
|
||||
# in the Tools row; guarded here too for direct invocation.
|
||||
command -v hyprpicker >/dev/null 2>&1 \
|
||||
|| { notify-send "Color picker" "hyprpicker is not installed."; exit 0; }
|
||||
color=$(hyprpicker) || exit 0
|
||||
[ -n "$color" ] || exit 0
|
||||
printf '%s' "$color" | wl-copy
|
||||
notify-send "Color picker" "$color copied to the clipboard." ;;
|
||||
|
||||
keybinds)
|
||||
# Read-only cheatsheet, generated from keybinds.nix at build time.
|
||||
# Enter on a row is a deliberate no-op (nothing to launch); ↩ Back
|
||||
@@ -507,6 +518,7 @@ ${themeRows}
|
||||
row "Files" system-file-manager
|
||||
row "Web search" system-search
|
||||
row "Capture" applets-screenshooter
|
||||
command -v hyprpicker >/dev/null 2>&1 && row "Color picker" preferences-desktop-color
|
||||
row "Ask Claude" internet-chat
|
||||
back
|
||||
} | rofi -dmenu -show-icons -p Tools) || exit 0
|
||||
@@ -518,6 +530,7 @@ ${themeRows}
|
||||
*Files*) exec "$0" files ;;
|
||||
*Web*) exec "$0" web ;;
|
||||
*Capture*) exec "$0" capture ;;
|
||||
*Color*) exec "$0" colorpicker ;;
|
||||
*Ask*) exec "$0" ask ;;
|
||||
esac ;;
|
||||
|
||||
@@ -597,7 +610,7 @@ ${themeRows}
|
||||
esac ;;
|
||||
|
||||
*)
|
||||
echo "usage: nomarchy-menu [tools|system|power|power-profile|theme|clipboard|calc|files|emoji|web|network|bluetooth|audio|display|printers|capture|keybinds|ask|dnd|nightlight|autotimezone|autocommit|vpn|snapshot]" >&2
|
||||
echo "usage: nomarchy-menu [tools|system|power|power-profile|theme|clipboard|calc|files|emoji|web|network|bluetooth|audio|display|printers|capture|colorpicker|keybinds|ask|dnd|nightlight|autotimezone|autocommit|vpn|snapshot]" >&2
|
||||
exit 64 ;;
|
||||
esac
|
||||
'';
|
||||
|
||||
@@ -367,6 +367,7 @@ in
|
||||
wl-clipboard
|
||||
grim
|
||||
slurp
|
||||
hyprpicker
|
||||
] ++ lib.optional (cfg.snapper.enable && (config.fileSystems."/".fsType or "") == "btrfs")
|
||||
# Snapshot, then rebuild — rollback material for system changes
|
||||
# (theme changes don't need it; HM generations already roll back).
|
||||
|
||||
Reference in New Issue
Block a user