fix(hyprland): stay_focused not stayfocused (0.55)
Some checks failed
Check / eval (push) Has been cancelled

Hyprland 0.55 renamed the effect; stayfocused 1 → invalid field type
on line 158 (polkit rules). Keep float/center/workspace current.
This commit is contained in:
2026-07-10 13:38:54 +01:00
parent d7427ae5da
commit 1e1d568947
3 changed files with 11 additions and 4 deletions

View File

@@ -128,6 +128,9 @@ iteration would otherwise rediscover.
`nomarchy-rebuild` then `nomarchy-home`, or desktop changes are silently
skipped against the old
lock (README § 3).
- Hyprland 0.55 renames `stayfocused``stay_focused` (and similar
underscore effects); `stayfocused 1` is `invalid field type` at parse
(§ polkit workspace rules, 2026-07-10 hardware).
- Hyprland 0.53 rewrote window rules: `windowrulev2` is a hard error and
the old rule-first `float, class:^…$` no longer parses — both surface a
red config-error banner on the default desktop. Hyprlang legacy form is

View File

@@ -495,12 +495,12 @@ in
# and pinentry-qt (keys.nix default; org.gnupg.pinentry-qt desktop).
# workspace current: agent was started on ws1 at login; without this
# the dialog opens on that workspace and the current one looks dead
# (hardware: Snapshots menu from ws≠1). stayfocused so it grabs
# attention when it lands.
# (hardware: Snapshots menu from ws≠1). stay_focused (0.55 name;
# was stayfocused) so it grabs attention when it lands.
"float 1, match:class (?i)^(hyprpolkitagent|\\.hyprpolkitagent-wrapped)$"
"center 1, match:class (?i)^(hyprpolkitagent|\\.hyprpolkitagent-wrapped)$"
"workspace current, match:class (?i)^(hyprpolkitagent|\\.hyprpolkitagent-wrapped)$"
"stayfocused 1, match:class (?i)^(hyprpolkitagent|\\.hyprpolkitagent-wrapped)$"
"stay_focused 1, match:class (?i)^(hyprpolkitagent|\\.hyprpolkitagent-wrapped)$"
"float 1, match:class (?i)^(pinentry(-qt)?|org\\.gnupg\\.pinentry-qt)$"
"center 1, match:class (?i)^(pinentry(-qt)?|org\\.gnupg\\.pinentry-qt)$"
"workspace current, match:class (?i)^(pinentry(-qt)?|org\\.gnupg\\.pinentry-qt)$"

View File

@@ -31,10 +31,14 @@ conf = sys.argv[1]
lines = open(conf).read().splitlines()
# Effect keywords that in the dead grammar sat directly before the comma.
# Effect keywords that in the dead grammar sat directly before the comma.
# Hyprland 0.55 renames: stayfocused → stay_focused (underscore). Keep the
# old name in the dead-grammar list so a regression to bare `stayfocused,`
# still fails the check.
EFFECTS = (
"float", "center", "tile", "pin", "fullscreen", "maximize",
"size", "move", "opacity", "workspace", "monitor", "fullscreenstate",
"group", "stayfocused", "pseudo", "immediate",
"group", "stayfocused", "stay_focused", "pseudo", "immediate",
)
rule_first = re.compile(
r"windowrule\s*=\s*(?:" + "|".join(EFFECTS) + r")\s*,"