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
|
## 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]`
|
### 14. Automated upstream lock bumps (maintainer CI, slices b+c) `[big]`
|
||||||
ROADMAP § Automated upstream lock bumps — the scheduled half (the
|
ROADMAP § Automated upstream lock bumps — the scheduled half (the
|
||||||
checks-on-push workflow shipped; see item 20 for the runner status):
|
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).
|
now reflects the real state (the `= true` comparison fix).
|
||||||
— 2026-07-04 Bernardo: PASS — theme changes committed and the
|
— 2026-07-04 Bernardo: PASS — theme changes committed and the
|
||||||
toggle self-committed.
|
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
|
- [ ] **Low-battery toasts (item 13 slice)** — on battery, drain past
|
||||||
25%: one "Battery low" toast; past 10%: a critical "Battery
|
25%: one "Battery low" toast; past 10%: a critical "Battery
|
||||||
critical" toast that stays up until dismissed (swaync); plug in,
|
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)
|
## 2026-07-05 — low-battery notifications (iteration #24, item 13 slice)
|
||||||
- **Task:** BACKLOG NEXT#13 second slice — the bar colors the battery
|
- **Task:** BACKLOG NEXT#13 second slice — the bar colors the battery
|
||||||
at 25/10% but nothing *notified*.
|
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 = "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 = "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 = "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 = "A"; action = "exec, nomarchy-menu ask"; desc = "Ask Claude"; }
|
||||||
{ mods = "$mod CTRL"; key = "D"; action = "exec, nomarchy-menu dnd"; desc = "Do Not Disturb toggle"; }
|
{ 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 ;;
|
*"Record screen"*) exec nomarchy-record start screen ;;
|
||||||
esac ;;
|
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)
|
keybinds)
|
||||||
# Read-only cheatsheet, generated from keybinds.nix at build time.
|
# Read-only cheatsheet, generated from keybinds.nix at build time.
|
||||||
# Enter on a row is a deliberate no-op (nothing to launch); ↩ Back
|
# Enter on a row is a deliberate no-op (nothing to launch); ↩ Back
|
||||||
@@ -507,6 +518,7 @@ ${themeRows}
|
|||||||
row "Files" system-file-manager
|
row "Files" system-file-manager
|
||||||
row "Web search" system-search
|
row "Web search" system-search
|
||||||
row "Capture" applets-screenshooter
|
row "Capture" applets-screenshooter
|
||||||
|
command -v hyprpicker >/dev/null 2>&1 && row "Color picker" preferences-desktop-color
|
||||||
row "Ask Claude" internet-chat
|
row "Ask Claude" internet-chat
|
||||||
back
|
back
|
||||||
} | rofi -dmenu -show-icons -p Tools) || exit 0
|
} | rofi -dmenu -show-icons -p Tools) || exit 0
|
||||||
@@ -518,6 +530,7 @@ ${themeRows}
|
|||||||
*Files*) exec "$0" files ;;
|
*Files*) exec "$0" files ;;
|
||||||
*Web*) exec "$0" web ;;
|
*Web*) exec "$0" web ;;
|
||||||
*Capture*) exec "$0" capture ;;
|
*Capture*) exec "$0" capture ;;
|
||||||
|
*Color*) exec "$0" colorpicker ;;
|
||||||
*Ask*) exec "$0" ask ;;
|
*Ask*) exec "$0" ask ;;
|
||||||
esac ;;
|
esac ;;
|
||||||
|
|
||||||
@@ -597,7 +610,7 @@ ${themeRows}
|
|||||||
esac ;;
|
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 ;;
|
exit 64 ;;
|
||||||
esac
|
esac
|
||||||
'';
|
'';
|
||||||
|
|||||||
@@ -367,6 +367,7 @@ in
|
|||||||
wl-clipboard
|
wl-clipboard
|
||||||
grim
|
grim
|
||||||
slurp
|
slurp
|
||||||
|
hyprpicker
|
||||||
] ++ lib.optional (cfg.snapper.enable && (config.fileSystems."/".fsType or "") == "btrfs")
|
] ++ lib.optional (cfg.snapper.enable && (config.fileSystems."/".fsType or "") == "btrfs")
|
||||||
# Snapshot, then rebuild — rollback material for system changes
|
# Snapshot, then rebuild — rollback material for system changes
|
||||||
# (theme changes don't need it; HM generations already roll back).
|
# (theme changes don't need it; HM generations already roll back).
|
||||||
|
|||||||
Reference in New Issue
Block a user