From 13ecfa92f09a0b64e7ce7ca7a348d51c6d7f6bee Mon Sep 17 00:00:00 2001 From: Bernardo Magri Date: Sat, 11 Jul 2026 18:58:27 +0100 Subject: [PATCH] =?UTF-8?q?fix(gtk):=20bundle=20the=20submenu=20arrow=20?= =?UTF-8?q?=E2=80=94=20Papirus=20has=20no=20pan-end-symbolic?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 05bab55's menu fix pointed -gtk-icon-source at the icon theme, but Papirus doesn't ship pan-end-symbolic and its inheritance chain (breeze-dark → hicolor) has no provider installed, so GTK menu submenu arrows rendered as nothing (nm-applet: no cue that 'VPN Connections' opens a submenu). Bundle the triangle as a store-path SVG recolored via -gtk-recolor(url(…)) — the same mechanism adw-gtk3 uses for its own check-mark assets, immune to icon-pack coverage. Co-Authored-By: Claude Fable 5 --- modules/home/stylix.nix | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/modules/home/stylix.nix b/modules/home/stylix.nix index bef8207..f3fc856 100644 --- a/modules/home/stylix.nix +++ b/modules/home/stylix.nix @@ -35,6 +35,19 @@ let base0E = hex c.accentAlt;# magenta base0F = hex c.bad; # brown/deprecated }; + + # Submenu arrow, bundled: adw-gtk3 (and our earlier fix) look up + # pan-end-symbolic in the ICON theme, but Papirus doesn't ship it and + # its inheritance chain (breeze-dark → hicolor) is broken here — so + # menu arrows rendered as nothing (nm-applet: no hint that "VPN + # Connections" opens a submenu). Same trick adw-gtk3 uses for its + # check marks: a bundled asset via -gtk-recolor(url(…)), immune to + # icon-pack coverage. Shape traced from Adwaita's pan-end-symbolic. + panEndSvg = pkgs.writeText "nomarchy-pan-end-symbolic.svg" '' + + + + ''; in { config = lib.mkIf cfg.stylix.enable { @@ -67,14 +80,16 @@ in menu menuitem:disabled, .menu menuitem:disabled { color: #${base16.base03}; } - /* Submenu disclosure arrows — without this they pick muted. */ + /* Submenu disclosure arrows — bundled asset, NOT an icon-theme + lookup: pan-end-symbolic is missing from Papirus and its + broken inheritance chain, so -gtk-icontheme() drew nothing. */ menu menuitem arrow, .menu menuitem arrow, menu menuitem:hover arrow, menu menuitem:selected arrow { min-width: 16px; min-height: 16px; margin-left: 8px; color: inherit; - -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); + -gtk-icon-source: -gtk-recolor(url("${panEndSvg}")); } menu menuitem:hover arrow, menu menuitem:selected arrow { color: #${base16.base00};