Come cambiare automaticamente lo sfondo del desktop

Questo tutorial spiega come cambiare automaticamente lo sfondo del desktop in Ubuntu.

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