diff --git a/modules/programs/hyprland/_config.nix b/modules/programs/hyprland/_config.nix index eaa5a2e..c508c8a 100644 --- a/modules/programs/hyprland/_config.nix +++ b/modules/programs/hyprland/_config.nix @@ -221,4 +221,6 @@ in # Move/resize windows with mainMod + LMB/RMB and dragging bindm = $mainMod, mouse:272, movewindow bindm = $mainMod, mouse:273, resizewindow + + exec-once=${getExe config.my.programs.wallpaper.package} -r '' diff --git a/modules/programs/hyprland/default.nix b/modules/programs/hyprland/default.nix index a7c5eed..aec526e 100644 --- a/modules/programs/hyprland/default.nix +++ b/modules/programs/hyprland/default.nix @@ -92,7 +92,6 @@ in }; }; - # lock screen after timeout home-manager.users.moritz = { services.swayidle = { @@ -138,40 +137,6 @@ in # adds pam module for swaylock security.pam.services.swaylock = { }; - - # start hyprpaper daemon using systemd unit (to set wallpaper) - systemd.user.services.hyprpaper = - let - wallpaper = "/home/moritz/.config/wallpapers/a_short_walk.png"; - config = pkgs.writeTextFile { - name = "hyprpaper.conf"; - text = '' - preload = ${wallpaper} - wallpaper = ,${wallpaper} - ''; - }; - in - { - wantedBy = [ "graphical-session.target" ]; - serviceConfig = { - ExecStartPre = "${pkgs.coreutils}/bin/sleep 0.5"; - ExecStart = "${getExe pkgs.hyprpaper} -c ${config}"; - RestartSec = "500ms"; - Restart = "on-failure"; - }; - }; - - systemd.user.services.random-wallpaper = { - wantedBy = [ "graphical-session.target" ]; - requires = [ "hyprpaper.service" ]; - serviceConfig = { - ExecStartPre = "${pkgs.coreutils}/bin/sleep 0.5"; - ExecStart = "${getExe config.my.programs.wallpaper.package} -r"; - RestartSec = "500ms"; - Restart = "on-failure"; - }; - }; - # only consider graphical-session.target started when hyprland-sesstion.target is reached systemd.user.targets.hyprland-session = { partOf = [ "graphical-session.target" ]; diff --git a/modules/programs/wallpaper/default.nix b/modules/programs/wallpaper/default.nix index 0412238..2fdec75 100644 --- a/modules/programs/wallpaper/default.nix +++ b/modules/programs/wallpaper/default.nix @@ -8,7 +8,7 @@ let script = pkgs.writeShellApplication { name = "wallpaper"; - runtimeInputs = with pkgs; [ findutils coreutils feh hyprland jq fzf viu ]; + runtimeInputs = with pkgs; [ findutils coreutils feh swaybg fzf viu ]; text = builtins.readFile ./wallpaper.sh; }; in diff --git a/modules/programs/wallpaper/wallpaper.sh b/modules/programs/wallpaper/wallpaper.sh old mode 100644 new mode 100755 index 2cc7e17..8e94670 --- a/modules/programs/wallpaper/wallpaper.sh +++ b/modules/programs/wallpaper/wallpaper.sh @@ -14,20 +14,23 @@ function help() { } function randomWallpaper() { - find ~/.config/wallpapers/ -type f,l | shuf -n 1 + echo "$WALLPAPERS" | shuf -n 1 +} + +function setWallpaperX { + feh --bg-fill "$1" +} + +function setWallpaperWayland { + swaybg --mode fill -i "$1" 2>/dev/null & } function setWallpaper() { - case "${XDG_CURRENT_DESKTOP,,}" in - hyprland) - hyprctl hyprpaper preload "$1" &>/dev/null - hyprctl monitors -j | jq '.[].name' | xargs -I{} -P 0 hyprctl hyprpaper wallpaper '{}',"$1" &>/dev/null - hyprctl hyprpaper unload all &>/dev/null - ;; - *) - feh --bg-fill "$1" &>/dev/null - ;; - esac +if [[ -z ${WAYLAND_DISPLAY+x} ]]; then + setWallpaperX "$1" + else + setWallpaperWayland "$1" + fi } # Parse arguments