hyprland: drop hyprspace, cut compositor latency

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 <noreply@anthropic.com>
This commit is contained in:
ediblerope 2026-05-11 10:14:49 +01:00
parent 64a3051b82
commit ddcc76efeb

View file

@ -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"