Pacman

Script bash para cambiar fondo automáticamente

3 posts en este tema

Ayer como escribí en el otro tema, hice un miniscript para cambiar el fondo, era muy simple ya que sólo iba recorriendo una carpeta alternando entre un fondo y otro, de uno en uno, y pensé como hacerlo para que fuese aleatorio y no fuera de uno en uno, así que me puse manos a ello y después de unos cuantos dolores de cabeza (por una chorrada, no me acordaba que había que usar "let" en bash) hice el pequeño script que funciona a la perfección, lo comparto con ustedes:

#!/bin/bash

if [ -z "$1" ] || [ -z "$2" ] || [ "$1" == "--help" ]; then
echo "cw 0.1"
echo "changes your wallpaper every x seconds"
echo ""          
echo "Use: cw /path/of/wallpapers/directory seconds"
echo "Example: cw /home/charlie/wallpapers 120"
exit
fi

if ! [ -e "$1" ]; then
echo "El directorio $1 no existe"
exit
fi

cd $1

function comprobar() {
num=1
for x in *;
do
       let num=$num+1

done
}

while [ 1 ]; do
        comprobar
	var_ran=$(($RANDOM%$num))
        var_aum=1
	for y in *; do
		if [ "$var_ran" -eq "$var_aum" ]; then
			feh --bg-scale $y
			sleep $2
			break
		fi		
		
		let var_aum=$var_aum+1
	done
done

Funciona exactamente igual que el anterior:

cw /carpeta/de/mis/wallpapers segundos

Pero este es realmente aleatorio, lo que hace es lo siguiente:

 

1.- Entra en un bucle infinito "while [ 1 ]"

2.- Comprueba la cantidad de archivos que hay dentro de la carpeta cada vez que se va a cambiar el fondo con la función comprobar, por lo que se pueden añadir fondos sin tener que reiniciar el script

3.- Genera un número aleatorio cada vez que se va a cambiar el fondo entre 1 y la cantidad de fondos que existen

4.- Con un for va recorriendo los archivos de uno en uno y cuando el número de archivo que lleva coincide con el generado aleatoriamente, lo cambia

5.- Vuelve al paso 2

 

Es muy sencillo el script pero me parecía que podía ser realmente útil a la hora de personalizar un wm, yo tengo el script con nombre "cw" en /usr/bin y como tiro i3wm con startx, en el .xinitrc tengo un:

cw /home/francisco/wallpapers 300 &

Así que cada vez que arranco va sólo.

 

Saludos.

Compartir este post


Enlace al post
Compartir en otros sitios

Había hecho algo del estilo, generaba un wallpaper (pegando posiciones de satélites en un mapa) y después cambiaba el fondo con un comando. Lo hice para XFCE con Python, PyEphem y Imagemagick.

 

Para cambiar el fondo usé este comando para XFCE:

xfconf-query --channel xfce4-desktop --property /backdrop/screen0/monitor0/image-path --set [image location]

Qué comando usas para cambiar el fondo? feh? No lo conocía

Compartir este post


Enlace al post
Compartir en otros sitios

Había hecho algo del estilo, generaba un wallpaper (pegando posiciones de satélites en un mapa) y después cambiaba el fondo con un comando. Lo hice para XFCE con Python, PyEphem y Imagemagick.

 

Para cambiar el fondo usé este comando para XFCE:

xfconf-query --channel xfce4-desktop --property /backdrop/screen0/monitor0/image-path --set [image location]

Qué comando usas para cambiar el fondo? feh? No lo conocía

 

Joder, que currazo, lo mio es más sencillo. Y sí, uso feh, es de lo más simple que hay y es muy conocido dentro de los windows managers para cambiar el fondo.

Compartir este post


Enlace al post
Compartir en otros sitios

Registra una cuenta o conéctate para comentar

Debes ser un miembro de la comunidad para dejar un comentario

Crear una cuenta

Regístrate en nuestra comunidad. ¡Es fácil!

Registrar una cuenta nueva

Iniciar Sesión

¿Ya tienes cuenta? Conéctate aquí.

Iniciar Sesión