diff --git a/modules/home/wallpaper/default.nix b/modules/home/wallpaper/default.nix index a906b53..e66e799 100644 --- a/modules/home/wallpaper/default.nix +++ b/modules/home/wallpaper/default.nix @@ -26,11 +26,11 @@ in { systemd.user.services.swww = { Unit = { - Description = "swww daemon"; + Description = "swww init (Wayland wallpaper daemon)"; After = [ "graphical-session.target" ]; }; Service = { - ExecStart = "${pkgs.swww}/bin/swww-daemon"; + ExecStart = [ "${pkgs.swww}/bin/swww" "init" ]; Restart = "on-failure"; }; Install = { @@ -46,7 +46,7 @@ in { }; Service = { Type = "oneshot"; - ExecStart = "${pkgs.bash}/bin/bash -lc $HOME/.local/bin/set-wallpaper.sh"; + ExecStart = [ "${pkgs.bash}/bin/bash" "${config.home.homeDirectory}/.local/bin/set-wallpaper.sh" ]; }; Install = { WantedBy = [ "default.target" ]; diff --git a/modules/home/wallpaper/set-wallpaper.sh b/modules/home/wallpaper/set-wallpaper.sh index 0d68b97..ddc1129 100644 --- a/modules/home/wallpaper/set-wallpaper.sh +++ b/modules/home/wallpaper/set-wallpaper.sh @@ -4,8 +4,13 @@ set -euo pipefail WALLS="${HOME}/wallpapers" -# Pick up wallpaper(jpg/jpeg/png/webp) +if ! swww query >/dev/null 2>&1; then + swww init +fi + mapfile -t files < <(find "$WALLS" -type f \( -iname '*.jpg' -o -iname '*.jpeg' -o -iname '*.png' -o -iname '*.webp' \)) + + [[ ${#files[@]} -gt 0 ]] || exit 0 pick="${files[RANDOM % ${#files[@]}]}"