Cómo cambiar automáticamente el fondo de escritorio
Ubuntu Unity ya tiene esta funcionalidad de cambiar automáticamente el fondo de escritorio, durante el día las imágenes cambian siendo seleccionada desde la carpeta /usr/share/backgrounds
, pero después de un tiempo me aburrí de ver siempre las mismas imágenes así que decidí de usar mi colección de imágenes desde el sitio web APOD, Astronomy Picture of the Day.
Creí que era tan sencillo como poner en System Settings -> Appearance el nombre de la carpeta pero descubri que podia poner seleccionar solo la carpeta ~/Pictures
mientras yo quieria solo la sub-carpeta ~/Pictures/Wallpapers
. Para resolver el problema habría podido editar el fichero /usr/share/backgrounds/contest/precise.xml
, pero esto me habría obligado a actualizar el fichero cada vez que descargaba una nueva imagen desde APOD, así que he tenido que buscar mi propia manera de resolver este asunto.
La idea es bastante sencilla:
- seleccionar una imagen al azar en la carpeta
~/Pictures/Wallpapers
- cambiar el fondo de escritorio desde la linea de comandos
- programar una tarea en cron que cambie el fondo cada 15 minutos
Seleccionar una imagen al azar
Esto se resuelve fácilmente con un par de lineas escritas en Python:
import os,random return random.choice(os.listdir('/home/your-name/Pictures/Wallpapers'))
Puedes copiar en tu directorio /home/your-name/bin
una versión más completa de este script desde mi repositorio en Github random-file,
Cambiar el fondo de escritorio desde la linea de comandos
Para cambiar el fondo de escritorio desde la linea de comandos se usa gsettings
:
$ gsettings set org.gnome.desktop.background picture-uri "file:///path/to/wallpaper.jpg"
Ten cuidado pero que este es un nuevo comando de GNOME3 y Unity, si usa el viejo GNOME2 debe usar gconftool
:
$ gconftool-2 --type=string --set /desktop/gnome/background/picture_filename /path/to/wallpaper.jpg
Para saber cual versión estas usando ejecuta:
$ gnome-session --version
Puedes poner este comando en un script de bash pero así no funcionará si lo usas desde una tarea programada con cron ya que este necesita que se definida la variable DBUS_SESSION_BUS_ADDRESS.
Puedes copiar la versión correcta de este script change-wallpaper desde mi repositorio en Github en tu directorio /home/your-name/bin
.
Como yo uso Ubuntu 12.04, mi script ejecuta gsettings
, si haces una versión para Gnome2 puede hacer un "fork" de mi repositorio dd-scripts y enviarme una "pull request".
Programar una tarea en Cron
Ahora sólo hace falta decir a nuestro Ubuntu de ejecutar el script cada 15 minutos editando la tabla cron del usuario:
$ crontab -e
y añadiendo las siguientes lineas:
# Edit this file to introduce tasks to be run by cron. # # m h dom mon dow command */15 * * * * /home/your-name/bin/change-wallpaper
¡Perfecto! Ahora puedes disfrutar de tus fondo de escritorio!
Danilo
Referencia: AskUbuntu.com