fix(gtk): tray-menu arrows via USER-priority counter-rule; show menu icons
Some checks failed
Check / eval (push) Failing after 1m26s

Two corrections to ac7e6bd, which broke the bar it meant to spare:

1. Scoping the waybar '*' reset to 'window#waybar *' gave every reset
   property id-level specificity, so it started BEATING the later
   class rules (Boreal's pill border-radius/borders, workspace pills)
   that plain '*' correctly lost to — visibly wrecking the bar.
   Reverted all three stylesheets to the plain '*' block (bar restored
   byte-identical to pre-ac7e6bd) and instead restored the arrow where
   priority genuinely outranks waybar's stylesheet: stylix's gtk.css
   loads at USER priority (800) vs waybar's APPLICATION (600), so a
   'menu menuitem arrow { min-width/height: 16px }' there survives the
   reset in Waybar-hosted menus — the exact mechanism the neighbouring
   check/radio rule already uses for the same collapse. NB comments at
   each '*' block warn against re-scoping.

2. The 'missing icons' were never just arrows: GTK3 ships
   gtk-menu-images=false since 3.10, so image menu items (nm-applet's
   Wi-Fi list, udiskie) render iconless everywhere. Set
   gtk.gtk3.extraConfig.gtk-menu-images = 1 (merges into the
   settings.ini Stylix already writes).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-12 08:01:01 +01:00
parent 4cdc80c9bc
commit e8658fea5f
4 changed files with 35 additions and 33 deletions

View File

@@ -381,12 +381,13 @@ let
/* Palette baked from theme-state.json */
${colorDefs}
/* Scoped to the bar window: Waybar's stylesheet applies process-wide,
so a bare `*` also hits the SNI tray menus Waybar hosts (nm-applet
& co) `min-height: 0` there collapses the submenu arrow node to
invisible. Whole-swap theme waybar.css files scope the same way. */
window#waybar,
window#waybar * {
/* NB: this `*` reset reaches the SNI tray menus Waybar hosts too
(its stylesheet applies process-wide) the menu-side damage
(collapsed arrows/checks) is undone by USER-priority counter-rules
in stylix.nix, which outrank any waybar.css. Do NOT scope this to
window#waybar: the id's specificity would beat the class rules
below (pills, workspaces) and wreck the bar. */
* {
font-family: "${t.fonts.ui}", "${t.fonts.mono}";
font-size: ${toString t.fonts.size}pt;
min-height: 0;
@@ -499,10 +500,6 @@ let
background: @surface;
border: ${toString t.ui.borderSize}px solid alpha(@accent, 0.4);
border-radius: ${toString t.ui.rounding}px;
/* Tooltips are separate toplevels, outside the window#waybar scope
restate the bar font (calendar columns need consistent metrics). */
font-family: "${t.fonts.ui}", "${t.fonts.mono}";
font-size: ${toString t.fonts.size}pt;
}
tooltip label { color: @text; }
'';