From 3cd7289646dd061cc87d6543edf03b1a4e3e70b6 Mon Sep 17 00:00:00 2001 From: Henry-Hiles Date: Tue, 20 Oct 2026 15:33:01 -0400 Subject: [PATCH 1/4] configure walker fully --- .../quadraticpc/fht-compositor/default.nix | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/clients/quadraticpc/fht-compositor/default.nix b/clients/quadraticpc/fht-compositor/default.nix index 9cdc685..9a0c01a 100644 --- a/clients/quadraticpc/fht-compositor/default.nix +++ b/clients/quadraticpc/fht-compositor/default.nix @@ -1,5 +1,6 @@ { inputs, + config, pkgs, lib, ... @@ -43,6 +44,54 @@ in theme = "system"; }; + environment.etc = { + # Only load the providers Walker uses + "xdg/elephant/elephant.toml".source = (pkgs.formats.toml { }).generate "elephant.toml" { + terminal_cmd = "ptyxis -x"; + ignored_providers = [ + "1password" + "aptpackages" + "archlinuxpkgs" + "bitwarden" + "bluetooth" + "bookmarks" + "clipboard" + "dnfpackages" + "files" + "menus" + "niriactions" + "nirisessions" + "playerctl" + "protonpass" + "providerlist" + "runner" + "snippets" + "symbols" + "todo" + "unicode" + "windows" + "wireplumber" + ]; + }; + + # Use the same search engines as LibreWolf, with its aliases as prefixes (e.g. "no nix") + "xdg/elephant/websearch.toml".source = + let + inherit (config.programs.firefox.policies) SearchEngines; + in + (pkgs.formats.toml { }).generate "websearch.toml" { + entries = map ( + engine: + { + name = engine.Name; + url = lib.replaceStrings [ "{searchTerms}" ] [ "%TERM%" ] engine.URLTemplate; + default = engine.Name == SearchEngines.Default; + } + // lib.optionalAttrs (engine ? Alias) { prefix = "${engine.Alias} "; } + ) SearchEngines.Add; + }; + }; + # The default theme, minus its hardcoded @define-color palette, so the GTK theme's colors show through environment.etc."xdg/walker/themes/system/style.css".source = pkgs.runCommand "walker-system-style.css" { } From d5017cbd178c0b1d90d1a0c5e8c3270fbfe903df Mon Sep 17 00:00:00 2001 From: Henry-Hiles Date: Tue, 20 Oct 2026 15:42:32 -0400 Subject: [PATCH 2/4] configure default portals --- .../quadraticpc/fht-compositor/default.nix | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/clients/quadraticpc/fht-compositor/default.nix b/clients/quadraticpc/fht-compositor/default.nix index 9a0c01a..0b6f05e 100644 --- a/clients/quadraticpc/fht-compositor/default.nix +++ b/clients/quadraticpc/fht-compositor/default.nix @@ -38,6 +38,21 @@ in { imports = [ inputs.fht-compositor.nixosModules.default ]; + # Prefer the GNOME portal (e.g. Nautilus as the file picker), falling back to GTK. This replaces + # the portal config fht-compositor ships. + xdg.portal.config.fht-compositor = { + default = [ + "gnome" + "gtk" + ]; + + # GNOME's sends them to GNOME Shell, GTK's to any notification daemon + "org.freedesktop.impl.portal.Notification" = [ "gtk" ]; + + # GNOME's needs GNOME Shell, and GTK doesn't have one + "org.freedesktop.impl.portal.ScreenCast" = [ "fht-compositor" ]; + }; + # Take keyboard focus when opened, so you can type into the search straight away environment.etc."xdg/walker/config.toml".source = (pkgs.formats.toml { }).generate "walker.toml" { force_keyboard_focus = true; @@ -144,6 +159,10 @@ in action = "run-command"; arg = "nautilus"; }; + Super-c = { + action = "run-command"; + arg = "codium"; + }; Super-Down = { action = "change-window-proportion"; From 68e8b33e08c612b7f7188c51bf19869aa707b2c0 Mon Sep 17 00:00:00 2001 From: Henry-Hiles Date: Tue, 20 Oct 2026 15:43:42 -0400 Subject: [PATCH 3/4] add librewolf bind --- clients/quadraticpc/fht-compositor/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/clients/quadraticpc/fht-compositor/default.nix b/clients/quadraticpc/fht-compositor/default.nix index 0b6f05e..3de5e74 100644 --- a/clients/quadraticpc/fht-compositor/default.nix +++ b/clients/quadraticpc/fht-compositor/default.nix @@ -163,6 +163,10 @@ in action = "run-command"; arg = "codium"; }; + Super-b = { + action = "run-command"; + arg = "librewolf"; + }; Super-Down = { action = "change-window-proportion"; From 70771bbac3d0b15451d5632d6b12915c26e52d40 Mon Sep 17 00:00:00 2001 From: Henry-Hiles Date: Tue, 20 Oct 2026 16:12:59 -0400 Subject: [PATCH 4/4] setup SwayOSD and SwayNC --- .../quadraticpc/fht-compositor/default.nix | 97 ++++++++++++++++++- wrappers/desktop/gaypanel/default.nix | 10 ++ 2 files changed, 106 insertions(+), 1 deletion(-) diff --git a/clients/quadraticpc/fht-compositor/default.nix b/clients/quadraticpc/fht-compositor/default.nix index 3de5e74..6a10873 100644 --- a/clients/quadraticpc/fht-compositor/default.nix +++ b/clients/quadraticpc/fht-compositor/default.nix @@ -8,6 +8,84 @@ let filename = "fht-compositor.toml"; + swaync = pkgs.swaynotificationcenter; + swaync-config = (pkgs.formats.json { }).generate "swaync.json" ( + let + default = lib.importJSON "${swaync}/etc/xdg/swaync/config.json"; + in + default + // lib.genAttrs (map (side: "control-center-margin-${side}") [ + "top" + "bottom" + "right" + ]) (_: 8) + // { + notification-window-width = 420; + ignore-gtk-theme = false; + fit-to-screen = false; + control-center-height = -1; + widget-config = default.widget-config // { + notifications = default.widget-config.notifications or { } // { + vexpand = false; + }; + }; + } + ); + swaync-style = pkgs.writeText "swaync.css" '' + @import url("file://${swaync}/etc/xdg/swaync/style.css"); + + :root { + --noti-bg-focus: transparent; + --noti-border-color: transparent; + --notification-shadow: none; + --border-radius: 16px; + --notification-icon-size: 48px; + --font-size-summary: 14px; + --font-size-body: 14px; + } + + .control-center { + background: @theme_bg_color; + } + + .notification-row .notification-background .notification, + .notification-group.collapsed .notification-row .notification { + background: shade(@theme_bg_color, 1.25); + } + + .notification-row .notification-background .notification .notification-default-action:hover, + .control-center .control-center-list .notification .notification-default-action:hover, + .notification-group.collapsed:hover .notification-row:not(:only-child) .notification { + background: shade(@theme_bg_color, 1.4); + } + + .control-center .control-center-list-placeholder { + margin-bottom: 24px; + } + + .notification-row .notification-background .notification .notification-default-action .notification-content { + padding: 6px; + } + + .notification-row .notification-background .notification .notification-default-action .notification-content .text-box .time { + font-size: 12px; + font-weight: normal; + opacity: 0.6; + } + + .notification-row .notification-background .notification .notification-default-action .notification-content .text-box .body { + opacity: 0.8; + } + ''; + + osd-style = pkgs.writeText "swayosd.css" '' + @import url("file://${pkgs.swayosd}/etc/xdg/swayosd/style.css"); + + window#osd { + background: shade(@theme_bg_color, 1.15); + } + ''; + session-programs = lib.getExe ( pkgs.writeShellApplication { name = "session-programs"; @@ -31,6 +109,8 @@ let restart 'walker.* --gapplication-service' walker --gapplication-service restart 'gaypanel-wrapped_' systemd-cat -t gaypanel gaypanel restart 'bin/swaybg ' ${lib.getExe pkgs.swaybg} -i ${../../../background.jpg} -m fill + restart 'bin/swayosd-server ' ${lib.getExe' pkgs.swayosd "swayosd-server"} --style ${osd-style} + restart 'bin/swaync ' ${lib.getExe' swaync "swaync"} --style ${swaync-style} --config ${swaync-config} ''; } ); @@ -193,7 +273,22 @@ in arg = i; }; }) 9 - ); + ) + # Media keys, with a SwayOSD popup + // + lib.mapAttrs + (_: args: { + action = "run-command"; + arg = "${lib.getExe' pkgs.swayosd "swayosd-client"} ${args}"; + # Holding raise/lower keeps changing the volume, but holding mute shouldn't keep toggling + repeat = !lib.hasSuffix "mute-toggle" args; + }) + { + XF86AudioRaiseVolume = "--output-volume raise"; + XF86AudioLowerVolume = "--output-volume lower"; + XF86AudioMute = "--output-volume mute-toggle"; + XF86AudioMicMute = "--input-volume mute-toggle"; + }; mousebinds = { Super-Left = "swap-tile"; diff --git a/wrappers/desktop/gaypanel/default.nix b/wrappers/desktop/gaypanel/default.nix index e3176e0..e5ef6be 100644 --- a/wrappers/desktop/gaypanel/default.nix +++ b/wrappers/desktop/gaypanel/default.nix @@ -1,6 +1,7 @@ { inputs, pkgs, + lib, ... }: let @@ -43,6 +44,15 @@ let "flat", ] } + $CommandButton { + styles [ + "pill", + "flat", + ] + + icon-name: "notification-symbolic"; + command: "${lib.getExe' pkgs.swaynotificationcenter "swaync-client"} --toggle-panel --skip-wait"; + } $SystemControlsWidget { styles [