As mentioned in my previous post I synchronize my wallpaper folder between my desktop computers.

While the are various ways of setting a random desktop background (XFCE - which I use - has this built in), I’ve had to conclude it’s just easier from the command line.

In XFCE it is not possible to do this from cron it seems, so I made a script which is run at start-up:

#!/bin/bash

IFS='
'
# Change this to where the wallpapers are stored
DIR="$HOME/Pictures/wallpaper"



while true
 do
        PIC=$(ls $DIR/*.* | shuf -n1)
	#PIC2=$(ls $DIR/*.* | shuf -n1)
        # Uncomment based on desktop environment
	# XFCE:
	#/usr/bin/xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitor0/image-show -s true
	#/usr/bin/xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitor0/image-path -s ${PIC}
	#/usr/bin/xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitor0/image-style -s 5
	#/usr/bin/xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitor1/image-show -s true
	#/usr/bin/xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitor1/image-path -s ${PIC2}
        #/usr/bin/xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitor1/image-style -s 5
	# GNOME2
	#gconftool-2 --type=string --set /desktop/gnome/background/picture_filename ${PIC}
	#gconftool-2 --type=string --set /desktop/gnome/background/picture_options zoom
	# GNOME/Unity/Cinnamon
	gsettings set org.gnome.desktop.background picture-uri file://${PIC}
	gsettings set org.gnome.desktop.background picture-options zoom
	# MATE
	#gsettings set org.mate.background picture-filename ${PIC}
	#gsettings set org.mate.background picture-options zoom
	# GNOME screen saver
	gsettings set org.gnome.desktop.screensaver picture-uri file://${PIC}
	gsettings set org.gnome.desktop.screensaver picture-options zoom
	# Generic - uses feh
	#feh --bg-fill ${PIC}
        sleep 60
done

To enable auto-start, add the file ~/.config/autostart/Set_wallpaper.desktop with this content:

[Desktop Entry]
Type=Application
Exec=/home/alj/bin/setwallpaper.sh
X-GNOME-Autostart-enabled=true
NoDisplay=false
Hidden=false
Name[en_GB]=Set wallpaper
Comment[en_GB]=No description
X-GNOME-Autostart-Delay=0

If you are not using a desktop environment like GNOME or XFCE, add the script to .xsession.