PreguntasLinux

Versión Completa: [HOWTO] Wallpaper dinamico
Actualmente estas viendo una versión simplificada de nuestro contenido. Para ver la versión completa en el formato correcto, dale click aquí
Cómo cambiar el fondo de escritorio dinámicamente según pasan las horas.

Siempre me llamó la atención de cómo va cambiando el tema de la página
de iGoogle a medida que pasan las horas.
Podemos ver como un tema que tiene un espectacular cielo azul se va tornando
en noche, y si nos gusta trasnochar incluso hasta veremos como amanece.

Bueno, esto es posible hacerlo con nuestro escritorio.
El truco consiste en utilizar por línea de comando la herramienta correcta
para cambiar el fondo de pantalla a la hora deseada.

Deberemos contar con tantas imágenes como queramos mostrar,
en mi caso serán 10 que usaré a lo largo de las 24 horas del día
(obviamente algunas imágenes casi nunca las veré) pero las programaré
para esos días en que decido trasnochar.
Comencemos...

Escritorio
Para Gnome bastará con usar la herramienta gconftool-2 y asignar el wallpaper deseado a la hora deseada.
Para KDE 3.X tendremos que utilizar dcop para asignar el wallpaper deseado.

En este howto vamos a crear un script que nos setearía el fondo de pantalla
ni bien nos logueamos según la hora y que iría cambiando según lo definamos.
He conseguido unas imágenes de la vista de una ciudad en distintos momentos del día,
así que las he ordenado para que simulen el paso del día en mi propio escritorio
[info]Ok, se que para KDE existe la opción de ir cambiando el wallpaper aleatoriamente, pero no me digan que no es más gratificante hacerlo 'a mano' y que podamos poner las imágenes que queramos a la hora que queramos... 1-wink

Dejo a continuación el script que utilizo:

Código:
#!/bin/bash
RUTA="/pictures"              #defino la ruta de mis imágenes
HORA=$(date +%H)              # aquí obtenemos el dígito de la hora
case $HORA in
00|01|02|03|04|05)
    PIC="$RUTA/a.png"
    ;;
06|07)
    PIC="$RUTA/b.jpg"
    ;;
08|09)
    PIC="$RUTA/c.jpg"
    ;;
10|11)
    PIC="$RUTA/d.jpg"
    ;;
12|13)
    PIC="$RUTA/e.jpg"
    ;;
14|15)
    PIC="$RUTA/f.jpg"
    ;;
16|17)
    PIC="$RUTA/g.png"
    ;;
18|19)
    PIC="$RUTA/h.jpg"
    ;;
20|20)
    PIC="$RUTA/i.png"
    ;;
22|23)
    PIC="$RUTA/j.jpg"
    ;;
esac
# GNOME
gconftool-2 -t str --set /desktop/gnome/background/picture_filename "$PIC"
gconftool-2 -t str --set /desktop/gnome/background/picture_options "stretched"
# posibles valores "none", "wallpaper" (mosaico), "centered", "scaled", "stretched"

# KDE
# dcop kdesktop KBackgroundIface setWallpaper "$PIC" 6
# Los posibles valores a asignar como último parámetro son:
# 1 - Centrado
# 2 - Mosaico
# 3 - Mosaico Centrado
# 4 - Maxpect centrado
# 5 - Maxpect embaldosado
# 6 - Escalado
# 7 - Auto ajuste centrado
# 8 - Escalar y Cortar

Obviamente el script se puede mejorar mucho, incluso sería muy bueno
poder determinar que escritorio estamos corriendo y que seleccione automáticamente
el método de seteo de wallpaper ya sea para Gnome o KDE.
Este script es válido también para adaptar cuando se utiliza otros
escritorios como Fluxbox o XFCE, por ejemplo.

Ejecución
Guardamos el script y le damos permisos de ejecución
# chmod a+x changewallpaper

Para que inicie con nuestra sesión:
en Gnome:
Menú Sistema -> Preferencias -> Personal -> Sesiones
y agregamos el script.

en KDE:
generamos un link en Autostart:
# cd ~/.kde/Autostart
# ln -s /ruta/script .

Ahora solo resta programar el cron para que lo corra según pasen las horas:
# crontab -e
para abrir la edición de crontab y como quiero que se ejecute en todas las horas pongo:

Código:
0 0-2,7-23 * * * cd /ruta_del_script/; ./changewallpaper

Donde el primer 0 representan los minutos (0 a 59)
Los valores separados por coma son las horas (0 a 23) y se correrá de 0 a 2 y de 7 a 23
El primer * representa el día de la semana (0 a 6) domingo a sábado, en este caso todos los días de la semana
El segundo * es el mes (1 a 12) en este caso todos los meses
El tercer * es el día del mes (1 a 31) también en este caso son todos los días del mes
y la última parte es el comando a ejecutar (en este caso son dos comandos separados por un ";" )

Otro ejemplo

Código:
15 16 1,3,5 5,6 * echo "hola mundo"

esta línea de crontab
ejecutaría el fabuloso echo "hola mundo" los días lunes, miércoles y viernes,
en los meses de mayo y junio a las 16:15

Eso es todo!
Ahora a buscar una buenas imágenes para poner de fondo de pantalla y a disfrutar!

URLs de Referencia