Come cambiare automaticamente lo sfondo del desktop
In Ubuntu Unity esiste già uno sfondo del desktop dinamico che cambia durante il giorno selezionando le immagini della directory /usr/share/backgrounds
, però dopo un pó mi sono stufato di vedere sempre le stesse immagini così ho deciso di utilizzare la mia collezione di immagini scaricate dal sito APOD, Astronomy Picture of the Day.
Inizialmente credevo che bastasse impostare la directory in System Settings -> Appearance però ho scoperto che è solo possibile selezionare la directory ~/Pictures
, mentre io volevo solo la subdirectory ~/Pictures/Wallpapers
. Avrei potuto risolver il mio problema editando il file /usr/share/backgrounds/contest/precise.xml
, pero questo mi avrebbe obbligato ad aggiornarlo manualmente ogni volta che scarico una nuova immagine da APOD, così ho dovuto risolvere questo problema a modo mio.
La idea è abbastanza semplice:
- selezionare una immagine a caso nella directory
~/Pictures/Wallpapers
- cambiare lo sfondo del desktop dalla linea di comando
- crear un cron job per cambiare lo sfondo ogni 15 minuti
Selezionare una immagine a caso
Questo si risolve facilmente con un paio di linee scritte in Python:
import os,random return random.choice(os.listdir('/home/your-name/Pictures/Wallpapers'))
Puoi copiare dal mio repository in GitHub lo script migliorato random-file, nella tua /home/your-name/bin
directory.
Cambiare lo sfondo del desktop dalla linea di comando
Per cambiar lo sfondo del desktop dalla linea di comando si usa il comando gsettings
:
$ gsettings set org.gnome.desktop.background picture-uri "file:///path/to/wallpaper.jpg"
Nota che gsettings
è un comando nuovo introdotto con GNOME3 e Unity, se hai il vecchio GNOME2 allora devi usar gconftool
:
$ gconftool-2 --type=string --set /desktop/gnome/background/picture_filename /path/to/wallpaper.jpg
Per sapere quale versione di Gnome stai usando esegui:
$ gnome-session --version
Puoi mettere questo comando in uno script bash però non funzionerà se lo chiami da un cron job perché cron ha bisogno che sia settata la variabile DBUS_SESSION_BUS_ADDRESS.
Puoi copiar lo script corretto change-wallpaper dal mio repository in GitHub nella tua directory /home/your-name/bin
.
Siccome io uso Ubuntu 12.04, nel mio script c'è il comando gsettings
, se scrivi una versione per Gnome2, sentiti libero di fare un "fork" di dd-scripts e mandami una "pull request".
Crear un Cron Job
Adesso solo devi dire al tuo sistema di cambiare il desktop ogni 15 minuti creando un cron job. Edita la lista dei cron jobs con il comando:
$ crontab -e
Quindi aggiungi queste linee:
# Edit this file to introduce tasks to be run by cron. # # m h dom mon dow command */15 * * * * /home/your-name/bin/change-wallpaper
Perfetto! Goditi i tuoi nuovi sfondi del desktop!
Danilo
Referenze: AskUbuntu.com