Cómo cambiar automáticamente el fondo de escritorio

Este tutorial explica como cambiar automáticamente el fondo de escritorio en Ubuntu

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