Commit Graph
5 Commits
Author SHA1 Message Date
Ryan Hughes 1c559d2231 Default settings panel to Defaults category on open 2026-05-14 02:25:05 -04:00
Ryan Hughes 3595279dce Park focus on a sink Item when leaving body
The previous clearBodyFocus() set focus = false on navRoot.activeFocusItem
and called navRoot.forceActiveFocus(), which works for plain Rectangles
but not for Controls 2 widgets like ComboBox: the combo keeps an internal
focused child that the surrounding FocusScope happily restores, so the
accent focus border on the Position/Center anchor dropdowns lingered
after backing out to the sidebar.

Add an invisible 1x1 navFocusSink Item inside navRoot and force focus
onto it whenever the user leaves the body (h/Esc/Shift-Tab, category
changes from sidebar nav, or panel reopens). The sink reliably owns
activeFocus so every body control \u2014 ComboBox included \u2014 falls back to
its unfocused style.
2026-05-14 02:25:05 -04:00
Ryan Hughes 9bb35dd7c1 Differentiate focus from selected; clear focus when leaving body
Two related fixes from user feedback on the keyboard nav:

1. Focused and selected controls were drawing the same 2px accent border
   so it was impossible to tell where the keyboard cursor was on a row
   that happened to also be the current value. Focused now uses a 3px
   accent border plus a translucent accent fill; selected keeps its 2px
   border with no fill. Centralized into focusBorderColor /
   focusBorderWidth / focusFillColor so all components share the look.

2. Backing out of the body to the sidebar (h/Left/Esc) left the focus
   ring lingering on the body item. FocusScope was restoring activeFocus
   to its remembered descendant when navRoot reclaimed focus.
   exitBodyZone (and onActiveCategoryChanged when not in body mode) now
   clears focus from the previously active descendant before forcing
   focus back onto navRoot.
2026-05-14 02:25:05 -04:00
Ryan Hughes 6f5fac3f13 Add keyboard navigation to settings panel
Two zones — sidebar and body — with vim-style bindings:

  sidebar  j/Down  next category
           k/Up    previous category
           l/Right/Tab/Enter/Ctrl-L  enter body
           Esc     close panel

  body     j/Down/Tab        next focusable
           k/Up/Shift-Tab    previous focusable
           Enter/Space       activate focused control
           h/Left/Esc/Ctrl-H back to sidebar

Wraps panel content in a FocusScope with Keys.priority: Keys.BeforeItem
so j/k always reach the nav handler even when a child control has focus.
Body focusables are gathered by walking the visible subtree of the active
category for items with activeFocusOnTab — automatically excluding
hidden category branches. Sidebar shows an accent-tinted highlight when
focused; each interactive control (DefaultsRow, StyleOptionTile,
StyleChip, FontRow, StyleToggleRow, ActionPill, IconButton, PluginRow)
renders an accent focus ring while focused.
2026-05-14 02:25:05 -04:00
Ryan Hughes c7da0f74aa Replace bar-settings with unified settings plugin
Consolidates bar-settings into a single 'settings' plugin with sidebar
categories: Defaults, Style, Bar, System, Plugins. Updates supporting
commands (omarchy-launch-settings, omarchy-style-corners-quickshell,
omarchy-theme-list-with-previews, omarchy-hyprland-monitor-scaling-set)
and refreshes sidebar glyphs to Nerd Font icons.
2026-05-14 02:25:05 -04:00