From 7cb8ad061116141650d86ffcaa39997bc7796f30 Mon Sep 17 00:00:00 2001 From: rope Date: Wed, 3 Jun 2026 13:22:36 +0100 Subject: [PATCH] hyprland: add xembed-sni-proxy for Wine tray icons, hide special workspaces MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Package standalone xembed-sni-proxy (XEmbed→SNI bridge) for Wine/Battle.net tray icons. Unlike snixembed, this doesn't register its own StatusNotifierWatcher so it won't conflict with Quickshell's tray. Also filter special workspaces (id < 0) from the bar to fix phantom "al:special". Co-Authored-By: Claude Opus 4.6 --- settings/hyprland.nix | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/settings/hyprland.nix b/settings/hyprland.nix index 1f662d1..1d4c3c9 100644 --- a/settings/hyprland.nix +++ b/settings/hyprland.nix @@ -4,6 +4,36 @@ let isMacbook = config.networking.hostName == "FredOS-Macbook"; isGaming = !isMacbook; + xembed-sni-proxy = pkgs.stdenv.mkDerivation { + pname = "xembed-sni-proxy"; + version = "unstable-2026-01-22"; + + src = pkgs.fetchFromGitHub { + owner = "BLumia"; + repo = "xembed-sni-proxy"; + rev = "c3afbd4c1d26a19622cd7c2cae3db3d35fdd0d33"; + hash = "sha256-cxEOrPUPtNTFSgH8hsbft/1dmPsXhONQgFnOWuzFfTk="; + }; + + nativeBuildInputs = with pkgs; [ + cmake + pkg-config + kdePackages.extra-cmake-modules + qt6.wrapQtAppsHook + ]; + + buildInputs = with pkgs; [ + qt6.qtbase + kdePackages.kwindowsystem + xorg.libX11 + xorg.libxcb + xorg.xcbutil + xorg.xcbutilimage + xorg.xcbutilwm + xorg.libXtst + ]; + }; + in { config = lib.mkIf (lib.elem config.networking.hostName [ "FredOS-Gaming" "FredOS-Macbook" ]) { @@ -238,6 +268,7 @@ in hl.exec_cmd("hyprctl setcursor Bibata-Modern-Ice 24") hl.exec_cmd("swayosd-server") ${lib.optionalString isMacbook ''hl.exec_cmd("hypridle")''} + ${lib.optionalString isGaming ''hl.exec_cmd("${xembed-sni-proxy}/bin/xembedsniproxy")''} end) -- Animation curve and definitions @@ -665,7 +696,8 @@ in Item { required property var modelData - width: 28 + visible: modelData.id > 0 + width: visible ? 28 : 0 height: 30 Text {