miércoles, 29 de julio de 2009

Script para aleatorizar grandes colecciones de wallpapers en KDE4

#!/bin/sh


# Este script sirve para crear un directorio de enlaces simbolicos
# a imagenes en otros directorios de una coleccion
#
# Escribí el script porque KDE4 lee todos las imagenes incluídas en
# el arranque cuando se elije el modo "Presentación"
# lo que eleva el tiempo de arranque y utiliza memoria inutilmente
# (no vas cambiar entre 20.000 imagenes en una sesion de 3 hs.)
#
# El modo en que se crean los nombres de archivo - los de los enlaces -
# garantiza que KDE4 no dejará de usar los nuevos wallpapers
# (ya que usará el nombre cargado en memoria, no conoce en particular
# ninguna imagen).
#
# Necesitas ordernar tu coleccion ordenando las imagenes en subdirectorios
# dentro de una carpeta que luego puedes colocar en la variable "COLECCION"
#
# Necesitas crear también un directorio donde se crearan los enlaces
# "WALLS"
# debes ubicarlo fuera de particiones de Windows (FAT32 y NTFS)
# ya que no soportan crear enlaces simbolicos
#
# El script elige aleatoriamente - sort -R - 6 directorios de
# de imagenes del directorio donde este la coleccion, luego elige
# al azar de vuelta, 50 imagenes de cada directorio.
#
# El script crea los enlaces con nombres genéricos y extension .jpg.
#
# No lo probé exhaustivamente, pero casi de seguro KDE4 carga las
# imagenes basado en el contenido del archivo, asi que la extension .jpg
# no importaría mucho en eso caso...
#
# El script vuelve a elegir al azar imagenes de la coleccion
# cada 30 min. (sleep 1800s)
#
# El mejor modo de usarlo en KDE4 sería
# probablemente lo ideal sería correrlo desde CRON o desde un script
# accesorio que ponga este otro script en background y cargar ese otro
# script desde la opción del panel de control de KDE4
# "Avanzado">"Autoarranque">"Añadir script"
#
# un ejemplo de un script lanzador de otros scripts?
#
# #!/bin/sh
# exec script.sh &
# exec otro-script.sh &
# exit



# directorio con directorios de wallpapers
COLECCION=/home/usuario/path/a/tus/carpetas/de/imagenes

# donde crear los links
WALLS=/home/usuario/crea/un/directorio/para/esto


while true; do

# esperar 30 min. antes de correr
sleep 1800s


# limpia los enlaces anteriores
rm -f $WALLS/*

# usar al azar 6 - seis - directorios de wallpapers
NUEVOS=`ls $COLECCION| sort -R | tail -n 6`

let NOMDIR=0
let NOMFILE=0

for i in $NUEVOS
do

let NOMDIR=$NOMDIR+1

# contar 50 archivos por directorio
CUENTA=`ls $COLECCION/$i/* | sort -R | tail -n 50`
# si quieres mas de 50, solo cambia el número luego de -n
for c in $CUENTA
do
let NOMFILE=$NOMFILE+1
ln -s $c $WALLS/$NOMFILE.jpg
done
done

done

exit

No hay comentarios: