Para cambiar el fondo de escritorio de Gnome desde la línea de comandos, puedes usar gconftool-2, la sintaxis para cambiar el fondo es:
gconftool-2 -s /desktop/gnome/background/picture_filename -t string nuevo_fondoAhora bien, mi objetivo es crear un script en bash que ofrezca las siguientes funcionalidades:
- Establecer un fondo de pantalla aleatoro.
- Sólo usar imágenes jpg o png.
- Verificar que el directorio fuente exista.
- Cambiar automáticamente el fondo cada cierto tiempo (me aburre ver siempre lo mismo).
- Usando el archivo .bash_profile, para cambiar el fondo en cada inicio se sesión.
- Usando cron, para establecer un intervalo de tiempo más personalizado.
- Establecer un color de fondo.
- Ajustar el tamaño de la imagen, de acuerdo a la resolución de la pantalla.
- Escribir un manual de usuario.
- Crear wallpaper clock (gracias por la idea Alan).
La primera vesión de mi script (asquerosamente ducumentado), implementa mi objetivo 1.1
Código fuente:
Código fuente:
#!/bin/bashEn el siguiente avance espero cumplir los puntos 2.1 y 2.2 :)
# Autor: Saúl Martínez Vidals.
# Fecha: domingo, 08 de junio de 2008.
# Descripción: Cambia el fondo de pantalla cada
# cierto tiempo.
declare directorio="$1"
declare imagen
declare -a imagenes
declare -i indice
declare archivos=$(mktemp -t)
ls -1 "$directorio" > "$archivos"
while read imagen; do
if [[ "$imagen" = *.jpg ]] || \
[[ "$imagen" = *.png ]]; then
imagenes[$indice]="$imagen"
((indice++))
fi
done < "$archivos"
# coloca el fondo de pantalla
imagen="$directorio"/
imagen+="${imagenes[$(($RANDOM%$indice))]}"
gconftool-2 -s \
/desktop/gnome/background/picture_filename -t \
string "$imagen"
# elimina el archivo temporal
rm "$archivos"
exit 0
6 comentarios:
Incluso - digamos para la versión 2.0 - podrías crear un wallpaper clock. Ya sabes, uno de esos fondos que te incluyen la hora mediante un reloj digital o analógico. Creo que usando comandos del ImageMagick eso se puede lograr sin mucho esfuerzo. Por lo pronto, considerame usuario de tu script, y a la espera de las nuevas versiones.
uuuuuuu, buen consejo Alan, me late mucho; ya lo agregue como último objetivo para mi "chafascript"
Está pasado de su almuerzo tu script. Recuerdo que alguna vez en KDE vi la opción de que cambiara el fondo aleatorio cada determinado tiempo, me imagino que hacen algo respecto a lo que me mostraste la vez pasada
No lo sé. Para mi son muchas lineas para un script en bash.
Tan simple:
for i in\
'ls dir |grep png;|ls dir grep jpg';\
do\
gconftool-2 -s /desktop/gnome/background/picture_filename -t string $i;\
done
el punto 1.2 aún más fácil.
if [ -f directorio ] ; then dir=directorio; done
Para el punto 2.2 yo usaría un simple bucle en conjunto con el comando sleep
sleep -20m
esperará 20 minutos para volver a ejecutarse...
que bonito es el bash, no? :P
if [ -d directorio ] ; then dir=directorio; done
@Anónimo: No me late lo de usar grep, por lo menos no como lo sugieres, pude que una archivo se llame "imjpg.doc" y la tomaría en cuenta, siendo un archivo de texto.
Pero lo que menos me late es que te volaste lo aleatorio del "script", ya que sugieres colocar las imágenes secuencialmente. Lo del sleep tampoco me late mucho porque se están desperdiciando ciclos de reloj, en lugar de eso pienso usar un planificador que me mencionó un amigo hace poco, se llama at.
Sigue visitando el blog, espero te agrade la versión final.
Publicar un comentario