feat(menu): Look & Feel category — theme, wallpaper, night light (item 19)
All checks were successful
Check / eval (push) Successful in 3m3s
All checks were successful
Check / eval (push) Successful in 3m3s
The gate was >=3 appearance entries and it's met: the root's Theme row becomes "Look & Feel" (pango-escaped & — the root passes -markup-rows; matched on *Look*), a new lookfeel submenu carries the Theme grid (SUPER+T hint), Next wallpaper (SUPER+SHIFT+T hint via the new generalized hintForAction, which menuHint is now sugar over), and the Night light toggle moved out of System — which thins by one row. The root stays at six entries; both direct binds still hit the leaves. Verified: V0; V1 — rendered menu passes bash -n with the mode, escaped label and relocated night-light row; visual — tokyo-night 1080p capture renders "Look & Feel" correctly with hints intact. Submenu flow queued for a session test (HARDWARE-QUEUE). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -222,11 +222,6 @@ the same `nomarchy-theme-sync` surface, + a first-boot guided
|
|||||||
(rollback menu, doctor, validation) are natural panels of it — design
|
(rollback menu, doctor, validation) are natural panels of it — design
|
||||||
them as composable commands, not dead ends.
|
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
|
## LATER
|
||||||
|
|
||||||
- **Wallpapers artifact split** (ROADMAP § Faster switches — decided,
|
- **Wallpapers artifact split** (ROADMAP § Faster switches — decided,
|
||||||
|
|||||||
@@ -167,6 +167,10 @@ QA machine), the **T14s** (webcam case).
|
|||||||
(tooltips, fastfetch labels) is visible on summer-day +
|
(tooltips, fastfetch labels) is visible on summer-day +
|
||||||
flexoki-light, kanagawa floats are lighter than the bg (upstream
|
flexoki-light, kanagawa floats are lighter than the bg (upstream
|
||||||
sumiInk4). Anything that reads worse than before → reopen 28b.
|
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
|
- [ ] **Launch-or-focus (item 17)** — uncomment the template's
|
||||||
`nomarchy.launchOrFocus` firefox example (with firefox
|
`nomarchy.launchOrFocus` firefox example (with firefox
|
||||||
installed), `home-update` + reload: SUPER+B launches firefox
|
installed), `home-update` + reload: SUPER+B launches firefox
|
||||||
|
|||||||
@@ -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)
|
## 2026-07-05 — launch-or-focus binds (iteration #39, item 17)
|
||||||
- **Task:** BACKLOG NEXT#17 (the UI review is Bernardo-gated; back to
|
- **Task:** BACKLOG NEXT#17 (the UI review is Bernardo-gated; back to
|
||||||
the queue head). Item deleted.
|
the queue head). Item deleted.
|
||||||
|
|||||||
@@ -138,11 +138,12 @@ let
|
|||||||
# Dimmed keybind hints on menu rows (item 28c) — the same keybinds.nix
|
# Dimmed keybind hints on menu rows (item 28c) — the same keybinds.nix
|
||||||
# + prettyKeys the cheatsheet uses, so they can never drift from the
|
# + prettyKeys the cheatsheet uses, so they can never drift from the
|
||||||
# live binds. Pango spans; the menus that show them pass -markup-rows.
|
# live binds. Pango spans; the menus that show them pass -markup-rows.
|
||||||
# Empty (no hint) when a module has no direct bind.
|
# Empty (no hint) when nothing binds the action.
|
||||||
menuHint = module:
|
hintForAction = action:
|
||||||
let m = lib.filter (b: b.action == "exec, nomarchy-menu ${module}") keybinds.binds;
|
let m = lib.filter (b: b.action == action) keybinds.binds;
|
||||||
in lib.optionalString (m != [ ])
|
in lib.optionalString (m != [ ])
|
||||||
" <span size='small' alpha='55%'>${prettyKeys (lib.head m)}</span>";
|
" <span size='small' alpha='55%'>${prettyKeys (lib.head m)}</span>";
|
||||||
|
menuHint = module: hintForAction "exec, nomarchy-menu ${module}";
|
||||||
# Apps opens rofi drun directly, not a nomarchy-menu module.
|
# Apps opens rofi drun directly, not a nomarchy-menu module.
|
||||||
appsHint = " <span size='small' alpha='55%'>SUPER + D</span>";
|
appsHint = " <span size='small' alpha='55%'>SUPER + D</span>";
|
||||||
|
|
||||||
@@ -398,6 +399,26 @@ ${themeRows}
|
|||||||
*"Record screen"*) exec nomarchy-record start screen ;;
|
*"Record screen"*) exec nomarchy-record start screen ;;
|
||||||
esac ;;
|
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)
|
display-profile)
|
||||||
# Named multi-output layouts (nomarchy.displayProfiles). Applying is
|
# Named multi-output layouts (nomarchy.displayProfiles). Applying is
|
||||||
# instant (hyprctl per entry, via nomarchy-display-profile) and
|
# instant (hyprctl per entry, via nomarchy-display-profile) and
|
||||||
@@ -605,10 +626,6 @@ ${themeRows}
|
|||||||
row "Display" video-display
|
row "Display" video-display
|
||||||
command -v system-config-printer >/dev/null 2>&1 && row "Printers" printer
|
command -v system-config-printer >/dev/null 2>&1 && row "Printers" printer
|
||||||
row "Do Not Disturb${menuHint "dnd"}" notification-disabled
|
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 ]
|
if [ "$(nomarchy-theme-sync get settings.autoTimezone 2>/dev/null)" = true ]
|
||||||
then row "Auto timezone (on)" preferences-system-time
|
then row "Auto timezone (on)" preferences-system-time
|
||||||
else row "Auto timezone (off)" preferences-system-time
|
else row "Auto timezone (off)" preferences-system-time
|
||||||
@@ -636,7 +653,6 @@ ${themeRows}
|
|||||||
*Display*) exec "$0" display ;;
|
*Display*) exec "$0" display ;;
|
||||||
*Printers*) exec "$0" printers ;;
|
*Printers*) exec "$0" printers ;;
|
||||||
*"Do Not Disturb"*) exec "$0" dnd ;;
|
*"Do Not Disturb"*) exec "$0" dnd ;;
|
||||||
*"Night light"*) exec "$0" nightlight ;;
|
|
||||||
*"Auto timezone"*) exec "$0" autotimezone ;;
|
*"Auto timezone"*) exec "$0" autotimezone ;;
|
||||||
*"Auto-commit"*) exec "$0" autocommit ;;
|
*"Auto-commit"*) exec "$0" autocommit ;;
|
||||||
*Snapshots*) exec "$0" snapshot ;;
|
*Snapshots*) exec "$0" snapshot ;;
|
||||||
@@ -651,7 +667,7 @@ ${themeRows}
|
|||||||
# to keep at the top; everything else lives under Tools or System.
|
# to keep at the top; everything else lives under Tools or System.
|
||||||
choice=$( {
|
choice=$( {
|
||||||
row "Apps${appsHint}" applications-all
|
row "Apps${appsHint}" applications-all
|
||||||
row "Theme${menuHint "theme"}" preferences-desktop-theme
|
row "Look & Feel" preferences-desktop-theme
|
||||||
row "Tools" applications-utilities
|
row "Tools" applications-utilities
|
||||||
row "System" preferences-system
|
row "System" preferences-system
|
||||||
row "Power${menuHint "power"}" system-shutdown
|
row "Power${menuHint "power"}" system-shutdown
|
||||||
@@ -659,7 +675,7 @@ ${themeRows}
|
|||||||
} | rofi -dmenu -show-icons -markup-rows -p Menu) || exit 0
|
} | rofi -dmenu -show-icons -markup-rows -p Menu) || exit 0
|
||||||
case "$choice" in
|
case "$choice" in
|
||||||
*Apps*) exec rofi -show drun ;;
|
*Apps*) exec rofi -show drun ;;
|
||||||
*Theme*) exec "$0" theme ;;
|
*Look*) exec "$0" lookfeel ;;
|
||||||
*Tools*) exec "$0" tools ;;
|
*Tools*) exec "$0" tools ;;
|
||||||
*System*) exec "$0" system ;;
|
*System*) exec "$0" system ;;
|
||||||
*Power*) exec "$0" power ;;
|
*Power*) exec "$0" power ;;
|
||||||
@@ -667,7 +683,7 @@ ${themeRows}
|
|||||||
esac ;;
|
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 ;;
|
exit 64 ;;
|
||||||
esac
|
esac
|
||||||
'';
|
'';
|
||||||
|
|||||||
Reference in New Issue
Block a user