Keep the wallpaper when movie restores the screen layout

.fehbg now saves its random picks to ~/.cache/wallpapers and redraws them with
--keep; screen-layout passes this through with --keep-wallpaper, used by movie.
This commit is contained in:
Daniele Fucini
2026-10-24 16:31:02 +02:00
parent 12ba85b83b
commit b10970bf36
3 changed files with 20 additions and 2 deletions
Executable
+13
View File
@@ -0,0 +1,13 @@
#!/bin/bash
# Sets a random wallpaper on each monitor; with --keep, redraws the last ones picked instead.
cache=${XDG_CACHE_HOME:-$HOME/.cache}/wallpapers
if [[ $1 != --keep || ! -s $cache ]]; then
# One image per connected output, so --keep still has enough after an output was off
count=$(xrandr --query | grep -c ' connected')
shuf -n "$count" -e ~/.local/share/backgrounds/random/* > "$cache"
fi
mapfile -t walls < "$cache"
exec /usr/bin/feh --no-fehbg --bg-fill "${walls[@]}"
+1 -1
View File
@@ -7,7 +7,7 @@ if ! xrandr --query | grep -q '^HDMI-1-0 connected'; then
exec mpv "$@" exec mpv "$@"
fi fi
trap ~/.local/bin/screen-layout EXIT trap '"$HOME"/.local/bin/screen-layout --keep-wallpaper' EXIT
trap 'exit 130' INT TERM HUP trap 'exit 130' INT TERM HUP
xrandr --output eDP-1 --off xrandr --output eDP-1 --off
+6 -1
View File
@@ -1,6 +1,7 @@
#!/bin/bash #!/bin/bash
# Sets up the outputs, wallpaper and trayer for whatever monitors are connected. # Sets up the outputs, wallpaper and trayer for whatever monitors are connected.
# Called by xmonad at startup and on monitor (dis)connect, and by `movie` on exit. # Called by xmonad at startup and on monitor (dis)connect, and by `movie` on exit.
# --keep-wallpaper redraws the current wallpaper instead of picking new random ones.
if xrandr --query | grep -q '^HDMI-1-0 connected'; then if xrandr --query | grep -q '^HDMI-1-0 connected'; then
xrandr --output HDMI-1-0 --preferred --primary --output eDP-1 --right-of HDMI-1-0 --preferred xrandr --output HDMI-1-0 --preferred --primary --output eDP-1 --right-of HDMI-1-0 --preferred
@@ -10,7 +11,11 @@ else
tray=0 tray=0
fi fi
~/.fehbg if [[ $1 == --keep-wallpaper ]]; then
~/.fehbg --keep
else
~/.fehbg
fi
# Replace any running trayer, so there's never more than one # Replace any running trayer, so there's never more than one
pkill -x trayer pkill -x trayer