diff --git a/agent/BACKLOG.md b/agent/BACKLOG.md index 43955ea..358b945 100644 --- a/agent/BACKLOG.md +++ b/agent/BACKLOG.md @@ -222,11 +222,6 @@ the same `nomarchy-theme-sync` surface, + a first-boot guided (rollback menu, doctor, validation) are natural panels of it — design them as composable commands, not dead ends. -### 19. Look & Feel menu category -ROADMAP § Menu system, remaining: group Theme + night-light (+ wallpaper -cycle, future appearance toggles) under a Look & Feel submenu once it -earns ≥3 entries — keep the root at six. - ## LATER - **Wallpapers artifact split** (ROADMAP § Faster switches — decided, diff --git a/agent/HARDWARE-QUEUE.md b/agent/HARDWARE-QUEUE.md index cd499a7..2a94cbb 100644 --- a/agent/HARDWARE-QUEUE.md +++ b/agent/HARDWARE-QUEUE.md @@ -167,6 +167,10 @@ QA machine), the **T14s** (webcam case). (tooltips, fastfetch labels) is visible on summer-day + flexoki-light, kanagawa floats are lighter than the bg (upstream sumiInk4). Anything that reads worse than before → reopen 28b. +- [ ] **Look & Feel submenu (item 19)** — root menu: "Look & Feel" + (replacing Theme, root still six rows) → Theme grid opens, Next + wallpaper cycles instantly, Night light toggles (and is GONE + from System). SUPER+T / SUPER+SHIFT+T direct binds unchanged. - [ ] **Launch-or-focus (item 17)** — uncomment the template's `nomarchy.launchOrFocus` firefox example (with firefox installed), `home-update` + reload: SUPER+B launches firefox diff --git a/agent/JOURNAL.md b/agent/JOURNAL.md index ec8fd63..8ee5f54 100644 --- a/agent/JOURNAL.md +++ b/agent/JOURNAL.md @@ -17,6 +17,26 @@ Template: --- +## 2026-07-05 — Look & Feel menu category (iteration #40, item 19) +- **Task:** BACKLOG NEXT#19 — its ≥3-entries gate is met (Theme, Next + wallpaper, Night light). Item deleted. +- **Did:** root's Theme row → "Look & Feel" (pango-escaped — + -markup-rows menus treat & as an entity; matched on *Look*); new + lookfeel mode: Theme (SUPER+T hint), Next wallpaper (SUPER+SHIFT+T + hint via the new generalized hintForAction), Night light row moved + from System (System thins by one). Root stays six. menuHint is now + sugar over hintForAction. +- **Verified:** V0; V1 — menu bash -n, lookfeel mode + escaped label + + night light relocated (4 occurrences, all in lookfeel/nightlight + paths); VISUAL — tokyo-night capture: root renders "Look & Feel" + correctly with six rows and intact hints. Submenu flow → V3 + queued. +- **Pending:** V3. NEXT now: 28 (Bernardo-gated) · 14 (Monday watch) + · 18 [big, Decision-gated] · 20 [human] — the LATER tier or QA + sweeps are next for the loop. +- **Next suggestion:** LATER's OCR screenshot-to-text (two-row + Capture addition, self-contained) — or a QA sweep. + ## 2026-07-05 — launch-or-focus binds (iteration #39, item 17) - **Task:** BACKLOG NEXT#17 (the UI review is Bernardo-gated; back to the queue head). Item deleted. diff --git a/modules/home/rofi.nix b/modules/home/rofi.nix index d89c182..2514b2c 100644 --- a/modules/home/rofi.nix +++ b/modules/home/rofi.nix @@ -138,11 +138,12 @@ let # Dimmed keybind hints on menu rows (item 28c) — the same keybinds.nix # + prettyKeys the cheatsheet uses, so they can never drift from the # live binds. Pango spans; the menus that show them pass -markup-rows. - # Empty (no hint) when a module has no direct bind. - menuHint = module: - let m = lib.filter (b: b.action == "exec, nomarchy-menu ${module}") keybinds.binds; + # Empty (no hint) when nothing binds the action. + hintForAction = action: + let m = lib.filter (b: b.action == action) keybinds.binds; in lib.optionalString (m != [ ]) " ${prettyKeys (lib.head m)}"; + menuHint = module: hintForAction "exec, nomarchy-menu ${module}"; # Apps opens rofi drun directly, not a nomarchy-menu module. appsHint = " SUPER + D"; @@ -398,6 +399,26 @@ ${themeRows} *"Record screen"*) exec nomarchy-record start screen ;; esac ;; + lookfeel) + # Look & Feel — appearance grouped (item 19): the theme picker, + # wallpaper cycling, night light. The root stays six rows; the + # SUPER+T / SUPER+SHIFT+T direct binds still hit the leaves. + choice=$( { + row "Theme${menuHint "theme"}" preferences-desktop-theme + row "Next wallpaper${hintForAction "exec, nomarchy-theme-sync bg next"}" preferences-desktop-wallpaper + if systemctl --user is-active --quiet hyprsunset.service 2>/dev/null + then row "Night light (on)" weather-clear-night + else row "Night light (off)" weather-clear-night + fi + back + } | rofi -dmenu -show-icons -markup-rows -p "Look & Feel") || exit 0 + case "$choice" in + "$BACK") exec "$0" ;; + *Theme*) exec "$0" theme ;; + *wallpaper*) exec nomarchy-theme-sync bg next ;; + *"Night light"*) exec "$0" nightlight ;; + esac ;; + display-profile) # Named multi-output layouts (nomarchy.displayProfiles). Applying is # instant (hyprctl per entry, via nomarchy-display-profile) and @@ -605,10 +626,6 @@ ${themeRows} row "Display" video-display command -v system-config-printer >/dev/null 2>&1 && row "Printers" printer row "Do Not Disturb${menuHint "dnd"}" notification-disabled - if systemctl --user is-active --quiet hyprsunset.service 2>/dev/null - then row "Night light (on)" weather-clear-night - else row "Night light (off)" weather-clear-night - fi if [ "$(nomarchy-theme-sync get settings.autoTimezone 2>/dev/null)" = true ] then row "Auto timezone (on)" preferences-system-time else row "Auto timezone (off)" preferences-system-time @@ -636,7 +653,6 @@ ${themeRows} *Display*) exec "$0" display ;; *Printers*) exec "$0" printers ;; *"Do Not Disturb"*) exec "$0" dnd ;; - *"Night light"*) exec "$0" nightlight ;; *"Auto timezone"*) exec "$0" autotimezone ;; *"Auto-commit"*) exec "$0" autocommit ;; *Snapshots*) exec "$0" snapshot ;; @@ -651,7 +667,7 @@ ${themeRows} # to keep at the top; everything else lives under Tools or System. choice=$( { row "Apps${appsHint}" applications-all - row "Theme${menuHint "theme"}" preferences-desktop-theme + row "Look & Feel" preferences-desktop-theme row "Tools" applications-utilities row "System" preferences-system row "Power${menuHint "power"}" system-shutdown @@ -659,7 +675,7 @@ ${themeRows} } | rofi -dmenu -show-icons -markup-rows -p Menu) || exit 0 case "$choice" in *Apps*) exec rofi -show drun ;; - *Theme*) exec "$0" theme ;; + *Look*) exec "$0" lookfeel ;; *Tools*) exec "$0" tools ;; *System*) exec "$0" system ;; *Power*) exec "$0" power ;; @@ -667,7 +683,7 @@ ${themeRows} esac ;; *) - echo "usage: nomarchy-menu [tools|system|power|power-profile|theme|clipboard|calc|files|emoji|web|network|bluetooth|audio|display|display-profile|printers|capture|colorpicker|keybinds|ask|dnd|nightlight|autotimezone|autocommit|vpn|snapshot]" >&2 + echo "usage: nomarchy-menu [lookfeel|tools|system|power|power-profile|theme|clipboard|calc|files|emoji|web|network|bluetooth|audio|display|display-profile|printers|capture|colorpicker|keybinds|ask|dnd|nightlight|autotimezone|autocommit|vpn|snapshot]" >&2 exit 64 ;; esac '';