fix(waybar): carry tray-menu counter-rules in the bar stylesheet itself
Some checks failed
Check / eval (push) Has been cancelled
Some checks failed
Check / eval (push) Has been cancelled
The e8658fe cure (USER-priority gtk.css counter-rules) verified in a
plain GTK app but not in the real Waybar-hosted nm-applet menu: Waybar
adds its provider at GTK_STYLE_PROVIDER_PRIORITY_USER as well
(src/client.cpp), and in practice its rules win the tie against
~/.config/gtk-3.0/gtk.css on GTK 3.24 — reproduced by injecting the
bar stylesheet above USER priority: arrow, checkmark and separator all
vanish, matching the live menu exactly.
The only placement that wins at ANY provider priority is inside the
same stylesheet: after each '*' reset, restore the CSS-sized menu
nodes (menuitem arrow 16px, check/radio 14px, separator 1px line) and
give menus a text face instead of the bar's glyph font. Applied to
boreal + executive-slate waybar.css and waybar.nix generatedStyle;
stylix.nix comment corrected (its rules now cover ordinary GTK apps
only).
Ground truth checked over D-Bus first: nm-applet exports per-network
Wi-Fi icons as dbusmenu icon-data, and with gtk-menu-images=1 the
connected network's icon already renders in the live menu — the
remaining loss was arrows/checks/separators, all CSS-box nodes.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -21,10 +21,11 @@
|
||||
@define-color warn #DBA85A;
|
||||
@define-color bad #D06B71;
|
||||
|
||||
/* NB: this `*` reset reaches the SNI tray menus Waybar hosts too — the
|
||||
menu-side damage (collapsed arrows) is undone by USER-priority rules in
|
||||
stylix.nix. Do NOT scope it to window#waybar: the id's specificity would
|
||||
beat the class rules below and wreck the bar. */
|
||||
/* NB: this `*` reset reaches the SNI tray menus Waybar hosts too (its
|
||||
stylesheet applies process-wide, at a priority user gtk.css cannot
|
||||
out-rank). The menu block right below undoes the damage — keep the two
|
||||
in sync. Do NOT scope `*` to window#waybar instead: the id's
|
||||
specificity would beat the class rules below and wreck the bar. */
|
||||
* {
|
||||
/* Mono Nerd face first for status glyphs: proportional "Symbols Nerd
|
||||
Font" has tight right bearings that make icon+percentage collide. */
|
||||
@@ -36,6 +37,20 @@
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
/* ── Tray menus (nm-applet & co live in Waybar's process) ─────────────
|
||||
Undo the `*` reset for them: same stylesheet, higher specificity.
|
||||
Arrows/checks are CSS-sized nodes — min-height 0 makes them invisible;
|
||||
separators die the same way; the glyph-first face reads wrong in text
|
||||
menus. */
|
||||
menu { font-family: "Inter", sans-serif; }
|
||||
menu menuitem arrow { min-width: 16px; min-height: 16px; }
|
||||
menu check, menu radio { min-width: 14px; min-height: 14px; }
|
||||
menu separator {
|
||||
min-height: 1px;
|
||||
margin: 5px 0;
|
||||
background: alpha(@text, 0.15);
|
||||
}
|
||||
|
||||
/* Solid bar, crisp edge against the content below. */
|
||||
window#waybar {
|
||||
background: @base;
|
||||
|
||||
Reference in New Issue
Block a user