From 5c5b377bd68d4b6f8dcfaccc9db4a564599b2dea Mon Sep 17 00:00:00 2001 From: Bernardo Magri Date: Thu, 30 Apr 2026 20:01:48 +0100 Subject: [PATCH] fix(menu): quick-state actions return to their submenu instead of exiting After the cancel-branch sweep, the remaining UX inconsistency was in action branches: changing one setting kicked the user out of the menu, forcing a relaunch to change the next. Brought 16 actions across 5 submenus into the same return-to-self pattern theme/background got. Classification rule applied: - Quick-state actions (toggle, set, restart-service - finishes in milliseconds, no window opens) -> back_to , so the user can chain "toggle nightlight, then toggle gaps, then restart waybar" without rerunning nomarchy-menu each time. - Window-opening actions (editor, floating terminal, audio/wifi/bt launcher, browser, hyprpicker overlay, screenshot, screenrecord, share dialogs, lock/shutdown/logout) stay as one-shot exits - re-popping the menu over the new window would be visual noise. Submenus changed: - show_toggle_menu (8 toggles): screensaver, nightlight, idle, top bar, workspace layout, window gaps, 1-window ratio, display scaling. - show_setup_power_menu: powerprofilesctl set returns; cancel still goes up to show_setup_menu (different destinations on each branch, so the if/else stays). - show_font_menu: nomarchy-font-set returns; cancel still goes up. - show_setup_system_menu: the suspend toggle (quick) returns; hibernate enable/disable (terminal) still exit. - show_update_process_menu (5 service restarts): hypridle, hyprsunset, swayosd, walker, waybar. For dynamically-rendered menus (show_setup_system_menu rebuilds its options each invocation based on current state) this also gives free visual feedback - the toggle's label flips between "Enable Suspend" and "Disable Suspend" when the menu re-renders. Co-Authored-By: Claude Opus 4.7 --- features/scripts/utils/nomarchy-menu | 30 +++++++++++++++------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/features/scripts/utils/nomarchy-menu b/features/scripts/utils/nomarchy-menu index bc87152..743903a 100755 --- a/features/scripts/utils/nomarchy-menu +++ b/features/scripts/utils/nomarchy-menu @@ -146,14 +146,14 @@ show_share_menu() { show_toggle_menu() { case $(menu "Toggle" "󱄄 Screensaver\n󰔎 Nightlight\n󱫖 Idle Lock\n󰍜 Top Bar\n󱂬 Workspace Layout\n Window Gaps\n 1-Window Ratio\n󰍹 Display Scaling") in - *Screensaver*) nomarchy-toggle-screensaver ;; - *Nightlight*) nomarchy-toggle-nightlight ;; - *Idle*) nomarchy-toggle-idle ;; - *Bar*) nomarchy-toggle-waybar ;; - *Layout*) nomarchy-hyprland-workspace-layout-toggle ;; - *Ratio*) nomarchy-hyprland-window-single-square-aspect-toggle ;; - *Gaps*) nomarchy-hyprland-window-gaps-toggle ;; - *Scaling*) nomarchy-hyprland-monitor-scaling-cycle ;; + *Screensaver*) nomarchy-toggle-screensaver; back_to show_toggle_menu ;; + *Nightlight*) nomarchy-toggle-nightlight; back_to show_toggle_menu ;; + *Idle*) nomarchy-toggle-idle; back_to show_toggle_menu ;; + *Bar*) nomarchy-toggle-waybar; back_to show_toggle_menu ;; + *Layout*) nomarchy-hyprland-workspace-layout-toggle; back_to show_toggle_menu ;; + *Ratio*) nomarchy-hyprland-window-single-square-aspect-toggle; back_to show_toggle_menu ;; + *Gaps*) nomarchy-hyprland-window-gaps-toggle; back_to show_toggle_menu ;; + *Scaling*) nomarchy-hyprland-monitor-scaling-cycle; back_to show_toggle_menu ;; *) back_to show_trigger_menu ;; esac } @@ -193,6 +193,7 @@ show_font_menu() { back_to show_style_menu else nomarchy-font-set "$theme" + back_to show_font_menu fi } @@ -225,6 +226,7 @@ show_setup_power_menu() { back_to show_setup_menu else powerprofilesctl set "$profile" + back_to show_setup_power_menu fi } @@ -268,7 +270,7 @@ show_setup_system_menu() { fi case $(menu "System" "$options") in - *Suspend*) nomarchy-toggle-suspend ;; + *Suspend*) nomarchy-toggle-suspend; back_to show_setup_system_menu ;; *"Enable Hibernate"*) present_terminal nomarchy-hibernation-setup ;; *"Disable Hibernate"*) present_terminal nomarchy-hibernation-remove ;; *) back_to show_setup_menu ;; @@ -292,11 +294,11 @@ show_update_menu() { } show_update_process_menu() { case $(menu "Restart" " Hypridle\n Hyprsunset\n Swayosd\n󰌧 Walker\n󰍜 Waybar") in - *Hypridle*) nomarchy-restart-hypridle ;; - *Hyprsunset*) nomarchy-restart-hyprsunset ;; - *Swayosd*) nomarchy-restart-swayosd ;; - *Walker*) nomarchy-restart-walker ;; - *Waybar*) nomarchy-restart-waybar ;; + *Hypridle*) nomarchy-restart-hypridle; back_to show_update_process_menu ;; + *Hyprsunset*) nomarchy-restart-hyprsunset; back_to show_update_process_menu ;; + *Swayosd*) nomarchy-restart-swayosd; back_to show_update_process_menu ;; + *Walker*) nomarchy-restart-walker; back_to show_update_process_menu ;; + *Waybar*) nomarchy-restart-waybar; back_to show_update_process_menu ;; *) back_to show_update_menu ;; esac }