I've made a custom directory where I've put a couple of my favourite wallpapers. I made a script which examines this directory, counts the number of PNGs, and then randomly sets one image as a wallpaper. It looks like this:
#!/bin/bash
#number of images in wallpaper folder
cd $HOME/Favourite\ wallpapers/
numImages=`ls *.png | wc -l`
#randomly chose one number
randomNum=$[ ( $RANDOM % $numImages ) + 1 ]
#command to set wallpaper
gsettings set org.gnome.desktop.background picture-uri file://$HOME/Favourite\ wallpapers/00$randomNum.png
Now, how can I make this script runs on each login (this is very easy thou) or once a day if not has been already run on login?
The problem is that I often suspend my Ubuntu and then awake it tomorrow morning, so in this case I never log in again. Setting this script as startup job would not help me as, obviously, when awaken from suspend, I never re-log in. I cannot simply set it via cron
job as well because in cases when I do log in, the wallpaper would be changed two times a day.
PS. anyone feel free to use this script with cron
(just set your own path and filename template or wait for a solution like mine 🙂
Best Answer
Set this as a startup application:
Replace the
/path/to/your/script
(inside the while loop) with the path to your script.Call this script passing first a path to a file that will serve as a stamp followed by an interval in days, for example
scriptname /home/user/stampfile 1
. It will run endlessly and check the current time against the stamp every 10 minutes (sleep 600
). If the difference is greater than the interval it runs your script and updates the stamp.