Here is a simple way to organize a random desktop wallpaper by means of
crontab.
We'll use feh application here. Let's put the following code into
~/bin/wallpaper-change file:
#!/bin/bash -
# Pick and set a random wallpaper
: ${DISPLAY:=":0"}
if [ $# -lt 1 ]; then
echo >&2 "No source directory specified"
exit 1
fi
dir="$1"
if [[ ! -d "$dir" ]]; then
echo >&2 "Directory $dir doesn't exist"
exit 1
fi
find $dir/ -maxdepth 1 -type f | sort -R | tail -1 | while read f
do
feh --bg-fill "$f" &
done
(Don't forget to make it executable.)
Now we can adjust the crontab, e.g.:
DISPLAY=:0 @hourly ~/bin/wallpaper-change ~/Pictures/wallpapers
Note, setting the DISPLAY environment variable is crucial.