diff --git a/modules/home/hyprland.nix b/modules/home/hyprland.nix index 29046bb..6a44b8a 100644 --- a/modules/home/hyprland.nix +++ b/modules/home/hyprland.nix @@ -26,6 +26,11 @@ in package = 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 = { "$mod" = "SUPER"; "$terminal" = config.nomarchy.terminal; @@ -33,9 +38,10 @@ in monitor = [ ",preferred,auto,1" ]; 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 - # swww-daemon internally). + # the daemon internally). "nomarchy-theme-sync wallpaper" ]; @@ -89,13 +95,13 @@ in touchpad.natural_scroll = true; }; - dwindle = { - pseudotile = true; - preserve_split = true; - }; + # dwindle:pseudotile was removed in Hyprland 0.55 (the `pseudo` + # dispatcher still exists); setting it aborts config parsing. + dwindle.preserve_split = true; misc = { disable_hyprland_logo = true; + disable_splash_rendering = true; force_default_wallpaper = 0; }; diff --git a/pkgs/nomarchy-theme-sync/nomarchy-theme-sync.py b/pkgs/nomarchy-theme-sync/nomarchy-theme-sync.py index 3bf3a9c..ba136a7 100644 --- a/pkgs/nomarchy-theme-sync/nomarchy-theme-sync.py +++ b/pkgs/nomarchy-theme-sync/nomarchy-theme-sync.py @@ -168,16 +168,18 @@ def apply_wallpaper(state: dict, wait: bool = False) -> None: if wallpaper is None: log(f"no wallpaper for theme '{state.get('slug', '?')}', skipping") return - if shutil.which("swww") is None: - log("swww not found, skipping wallpaper") + # nixpkgs renamed swww to awww (CLI-compatible fork); accept either. + swww = shutil.which("awww") or shutil.which("swww") + if swww is None: + log("awww/swww not found, skipping wallpaper") 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): - if subprocess.run(["swww", "query"], capture_output=True).returncode == 0: + if subprocess.run([swww, "query"], capture_output=True).returncode == 0: break time.sleep(0.5) result = subprocess.run( - ["swww", "img", str(wallpaper), + [swww, "img", str(wallpaper), "--transition-type", "grow", "--transition-pos", "center", "--transition-duration", "1", @@ -185,7 +187,7 @@ def apply_wallpaper(state: dict, wait: bool = False) -> None: capture_output=True, ) log(f"wallpaper: {wallpaper.name}" if result.returncode == 0 - else "wallpaper: swww failed (daemon not running?)") + else "wallpaper: awww failed (daemon not running?)") # ─── Commands ─────────────────────────────────────────────────────────────