From ddcc76efeb7a8a2b359a4b097f34005b6556f760 Mon Sep 17 00:00:00 2001 From: ediblerope Date: Mon, 11 May 2026 10:14:49 +0100 Subject: [PATCH] hyprland: drop hyprspace, cut compositor latency MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Removes the Hyprspace plugin entirely — blank-window snapshots from the 0.52.0/0.52.1 ABI skew aren't worth the patch-pin work right now. With the overview gone, also rebalances the desktop for input latency: - decoration.blur disabled (two passes at 3440x1440 were the biggest per-frame GPU cost) - render.direct_scanout = true so fullscreen apps bypass the compositor - misc.vrr = 2 (always on) instead of fullscreen-only Co-Authored-By: Claude Opus 4.7 --- settings/hyprland.nix | 33 +++++++++------------------------ 1 file changed, 9 insertions(+), 24 deletions(-) diff --git a/settings/hyprland.nix b/settings/hyprland.nix index f7e3556..7452994 100644 --- a/settings/hyprland.nix +++ b/settings/hyprland.nix @@ -57,12 +57,6 @@ enable = true; systemd.variables = [ "--all" ]; - # Native `plugin = ...` directive crashes Hyprland on the current - # nixpkgs combo (compositor 0.52.1 vs plugin built for 0.52.0). - # HM's plugins list routes through `hyprctl plugin load` at runtime, - # which tolerates the patch-level skew. - plugins = [ pkgs.hyprlandPlugins.hyprspace ]; - settings = { # Pin the OC'd 190 Hz mode so we don't fall back to 60. monitor = "DP-2,3440x1440@190,0x0,1"; @@ -91,13 +85,18 @@ decoration = { rounding = 8; + # Blur disabled — two passes at 3440x1440 was the biggest + # contributor to per-frame compositor latency. Re-enable with + # smaller size/passes if you miss the look. blur = { - enabled = true; - size = 6; - passes = 2; + enabled = false; }; }; + render = { + direct_scanout = true; # fullscreen apps bypass compositor + }; + animations = { enabled = true; # speed = tenths of a second; 2 = 0.2s. Drop to 1 for instant-ish. @@ -132,7 +131,7 @@ disable_hyprland_logo = true; disable_splash_rendering = true; focus_on_activate = true; - vrr = 1; # 1 = on for fullscreen, 2 = always + vrr = 2; # 1 = on for fullscreen, 2 = always vfr = false; # keep compositor ticking, don't idle between frames }; @@ -143,17 +142,6 @@ "immediate, class:^(gamescope)$" ]; - # Hyprspace overview plugin — see README for full option set - plugin.overview = { - centerAligned = true; - hideTopLayers = true; - hideOverlayLayers = true; - showNewWorkspace = true; - exitOnClick = true; - exitOnSwitch = true; - dragAlpha = 0.8; - }; - # Mirror the GNOME bindings so muscle memory carries over bind = [ "$mod, T, exec, $term" @@ -168,9 +156,6 @@ "$mod, P, pseudo" "$mod, S, togglesplit" - # Hyprspace overview — routed via hyprctl because home-manager - # loads the plugin in exec-once, after config parse. - "$mod, SPACE, exec, hyprctl dispatch overview:toggle" # Focus "$mod, left, movefocus, l"