fix: live-VM desktop fixes — Hyprland 0.55 compat + swww→awww rename
Found by booting the live ISO (docs/TESTING.md checklist): - pin HM configType = "hyprlang" (26.05 stateVersion defaults to the new Lua config and renders these settings as broken hl.$mod(...) calls, booting Hyprland into emergency mode) - drop dwindle:pseudotile (removed in Hyprland 0.55; aborts config parse) - disable splash rendering alongside the logo - launch awww-daemon and call awww with swww fallback (nixpkgs' swww is the renamed awww fork; no `swww` binary exists anymore) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -26,6 +26,11 @@ in
|
|||||||
package = null;
|
package = null;
|
||||||
portalPackage = null;
|
portalPackage = null;
|
||||||
|
|
||||||
|
# HM defaults stateVersion >= 26.05 to the new Lua config and would
|
||||||
|
# render these hyprlang-style settings as broken `hl.$mod(...)` Lua
|
||||||
|
# (Hyprland then boots into emergency mode with no binds).
|
||||||
|
configType = "hyprlang";
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
"$mod" = "SUPER";
|
"$mod" = "SUPER";
|
||||||
"$terminal" = config.nomarchy.terminal;
|
"$terminal" = config.nomarchy.terminal;
|
||||||
@@ -33,9 +38,10 @@ in
|
|||||||
monitor = [ ",preferred,auto,1" ];
|
monitor = [ ",preferred,auto,1" ];
|
||||||
|
|
||||||
exec-once = [
|
exec-once = [
|
||||||
"swww-daemon"
|
# nixpkgs' swww is awww (renamed fork); the binary is awww-daemon.
|
||||||
|
"awww-daemon"
|
||||||
# Paint the wallpaper as soon as the session is up (waits for
|
# Paint the wallpaper as soon as the session is up (waits for
|
||||||
# swww-daemon internally).
|
# the daemon internally).
|
||||||
"nomarchy-theme-sync wallpaper"
|
"nomarchy-theme-sync wallpaper"
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -89,13 +95,13 @@ in
|
|||||||
touchpad.natural_scroll = true;
|
touchpad.natural_scroll = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
dwindle = {
|
# dwindle:pseudotile was removed in Hyprland 0.55 (the `pseudo`
|
||||||
pseudotile = true;
|
# dispatcher still exists); setting it aborts config parsing.
|
||||||
preserve_split = true;
|
dwindle.preserve_split = true;
|
||||||
};
|
|
||||||
|
|
||||||
misc = {
|
misc = {
|
||||||
disable_hyprland_logo = true;
|
disable_hyprland_logo = true;
|
||||||
|
disable_splash_rendering = true;
|
||||||
force_default_wallpaper = 0;
|
force_default_wallpaper = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -168,16 +168,18 @@ def apply_wallpaper(state: dict, wait: bool = False) -> None:
|
|||||||
if wallpaper is None:
|
if wallpaper is None:
|
||||||
log(f"no wallpaper for theme '{state.get('slug', '?')}', skipping")
|
log(f"no wallpaper for theme '{state.get('slug', '?')}', skipping")
|
||||||
return
|
return
|
||||||
if shutil.which("swww") is None:
|
# nixpkgs renamed swww to awww (CLI-compatible fork); accept either.
|
||||||
log("swww not found, skipping wallpaper")
|
swww = shutil.which("awww") or shutil.which("swww")
|
||||||
|
if swww is None:
|
||||||
|
log("awww/swww not found, skipping wallpaper")
|
||||||
return
|
return
|
||||||
# At session start swww-daemon may still be coming up.
|
# At session start the daemon may still be coming up.
|
||||||
for _ in range(10 if wait else 1):
|
for _ in range(10 if wait else 1):
|
||||||
if subprocess.run(["swww", "query"], capture_output=True).returncode == 0:
|
if subprocess.run([swww, "query"], capture_output=True).returncode == 0:
|
||||||
break
|
break
|
||||||
time.sleep(0.5)
|
time.sleep(0.5)
|
||||||
result = subprocess.run(
|
result = subprocess.run(
|
||||||
["swww", "img", str(wallpaper),
|
[swww, "img", str(wallpaper),
|
||||||
"--transition-type", "grow",
|
"--transition-type", "grow",
|
||||||
"--transition-pos", "center",
|
"--transition-pos", "center",
|
||||||
"--transition-duration", "1",
|
"--transition-duration", "1",
|
||||||
@@ -185,7 +187,7 @@ def apply_wallpaper(state: dict, wait: bool = False) -> None:
|
|||||||
capture_output=True,
|
capture_output=True,
|
||||||
)
|
)
|
||||||
log(f"wallpaper: {wallpaper.name}" if result.returncode == 0
|
log(f"wallpaper: {wallpaper.name}" if result.returncode == 0
|
||||||
else "wallpaper: swww failed (daemon not running?)")
|
else "wallpaper: awww failed (daemon not running?)")
|
||||||
|
|
||||||
|
|
||||||
# ─── Commands ─────────────────────────────────────────────────────────────
|
# ─── Commands ─────────────────────────────────────────────────────────────
|
||||||
|
|||||||
Reference in New Issue
Block a user