nixos/settings
rope a8d7d8ca64 quickshell: survive Hyprland dropping the focus grab
Hyprland 0.55.4 CXDGShellProtocol::onPopupDestroy() calls
setGrab(nullptr) unconditionally when the popup owning the xdg-popup grab
dies, without checking that grab is still the installed one. So opening
the launcher while some app holds a grabbing popup steals the seat grab,
that popup gets popup_done, the client destroys it, and its destructor
clears OUR grab — one client round trip later, measured at 1-2ms.

A clear that fast is not a click-outside, so re-arm instead of closing.
The offending popup is gone by then, so the second grab sticks. Capped at
3 tries so a hostile client can't spin it.
2026-08-01 21:16:37 +01:00
..
audio.nix audio: lower mic boost from 2.0 to 1.5 2026-04-24 22:30:22 +01:00
desktop.nix desktop: drop plymouth-quit-wait from boot (6s idle-timeout stall) 2026-08-01 09:32:02 +01:00
hyprland.nix hyprland: fix Battle.net activation rule matching a stale class 2026-08-01 20:32:23 +01:00
locale.nix locale + crowdsec: pin timezone, declare static crowdsec user 2026-04-29 14:00:41 +01:00
quickshell.nix quickshell: survive Hyprland dropping the focus grab 2026-08-01 21:16:37 +01:00
shell.nix fastfetch: drop display + theme lines 2026-07-28 22:50:22 +01:00
stylix.nix stylix: switch to caelestia fonts (Rubik + CaskaydiaCove NF) 2026-07-29 21:46:13 +01:00
ui.nix quickshell: hold tray menu height so switching morphs instead of regrowing 2026-07-28 15:05:05 +01:00
users.nix users: add work laptop ssh key 2026-07-28 08:44:42 +01:00