Cambiar Wallpaper de GNOME con PHP-CLI Automaticamente
July 25th, 2010 by pako received No Comments »Buscando un comando para cambiar el wallpaper desde la consola en linux, se me ocurrió hacer un deamon para que este se cambiara automáticamente, así llegue a este pequeño script en PHP que cambia el papel tapiz en un determinado tiempo tomando las imágenes aleatoriamente de una carpeta
Quien en realidad hace la magia es el comando gconftool-2, el cual nos permite manipular el gconf-editor que seria como “el regedit” de gnome desde donde se pueden manipular diferentes aspectos del entorno Gnome
Yo he utilizando Ubuntu10.4 y PHP5.3 con CLI y me ha funcionado de maravilla espero a ustedes les funcione.
Para cambiar el papel tapiz de linux con gnome desde la linea de comando debemos de editar la variable /desktop/gnome/background/picture_filename del gconf-editor a la cual se le asignará la ruta a la imagen que queremos de papel tapiz. Para hacerlo desde consola como lo comente nos valemos de comando gconftool-2 para ello ejecutamos el siguiente comando:
gconftool-2 -t str -s /desktop/gnome/background/picture_filename /home/usuario/wallpaper.jpg
Ahora en PHP, podemos ejecutar comandos del S.O con las funciones system, exec, passthru o shell_exec, en el script utilizo exec, en algunos servidores de hosting por seguridad estas funciones las deshabilitan :(, pero por lo pronto esto no nos afecta ya que se supone este script correrá en nuestro Desktop y no en un servidor.
En PHP podemos crear deamons que se ejecuten como procesos independientes, entonces uniendo todo esto podemos crear un script que este corriendo en segundo plano y en determinado tiempo nos cambie el papel tapiz :)
#!/usr/bin/php
<?php
/*
* Fco Diaz
* www.devtics.com.mx
* Twitter: @fcodiaz
* 25/jul/2010
*/
$segundos = 5*60;//segundos a esperar antes de cambiar al siguiente wallpaper
$path = "/home/pakos/Pictures/wallpapers";//path de las imagenes
$pid = pcntl_fork();//se crea el pid de proceso
if($pid == -1)die("El Deamons no arranco");
if($pid) die("PID=$pidn");//salgo del padre y muestro su pid
posix_setsid();//con esto suelto la terminal para q el proceso quede independiente
$ultimoWall = false;
while( true ){//se cicla el proceso para q nunca termine
$files = array();//inicializo el arreglo $files
exec("ls $path/*.jpg",$files);//busco los .jpg en el $path indicado
do{
$newWall = $files[rand(0,count($files)-1)];
}while($newWall == $ultimoWall);//si es el utimo wall cambio por otro
$ultimoWall = $newWall;//el nuevo a la vuelta siguiete sera el ultimo wall
exec("gconftool-2 -t str -s /desktop/gnome/background/picture_filename "{$newWall}"");//coloco el papel tapiz
exec("gconftool-2 -t str -s /desktop/gnome/background/picture_options zoom");//le digo a gnome que haga un zoom a la wallpaper si no se ajusta en la resolución
sleep($segundos);//se duerme el proceso por el tiempo indicado
}
ahora para arrancar nuestro deamons, tenemos que darle permisos de ejecución
chmod +x phpcwall.php
para ejecutarlo vasta con ejecutar
./phpcwall.php
pero el fin de un deamon es que no tengamos que inicializarlo nosotros, para ello podemos agregarlo al grupo de aplicaciones que se ejecutan al iniciar nuestra sesión para ello vamos a Sistema/Preferencias/Aplicaciones al Inicio
y agregamos nuestro script a la lista de aplicaciones
Con esto cada que iniciemos nuestro escritorio se arrancara este script y cambiara nuestro papel tapiz en el tiempo indicado en el script
Posted under: PHP-CLI










