Fluxcripts, controlando fluxbox desde PHP

LibFluxcripts es una biblioteca de funciones en PHP para controlar el entorno gráfico fluxbox. Son funciones básicas para leer y modificar escritorios y ventanas desde scripts en PHP invocados mediante el teclado o bien ejecutándose en segundo plano.

A modo de ejemplo se incluye un script para atraer al escritorio actual todas las ventanas que coincidan con un texto introducido por el usuario


Fluxcripts

Dependencias

Si estamos haciendo todo esto es porque probablemente somos usuarios de fluxbox y lo tenemos instalado, si no, en Ubuntu:

sudo aptitude install fluxbox

Los scripts están en PHP, así que obviamente nos hará falta tener este lenguaje de scripting instalado. En ubuntu:

sudo aptitude install php5-cli

LibFluxcripts requiere el programa wmctrl, disponible en los repositorios de muchas distribuciones. En Ubuntu:

sudo aptitude install wmctrl

Adicionalmente, si queremos usar los diálogos gráficos de usuario, podemos instalar zenity, un generador de diálogos para ser llamado desde la consola. En ubuntu:

sudo aptitude install zenity

Ejemplo simple, mover ventanas al escritorio actual

Este script de ejemplo, esta pensado para ser lanzado mediante una pulsación de tecla (yo uso WinKey+M), al ejecutarse nos permite introducir un texto, al pulsar OK o presionar retorno, el script moverá al escritorio actual todas las ventanas que contengan en su nombre de ventana o nombre de aplicación el texto introducido.

<?php

	require 'fluxbox.inc.php';

	$text=zenityAsk("Search?");
	$windows=getAllWindows();

	if( !empty($text) ){
		foreach ( $windows as $window ){
			if( strpos($window[app_name],$text) !== false ||
                               strpos($window[name],$text) !==false ){

				windowMoveToDesktop($window[id],getCurrentDesktopId());
			}
		}
	}

?>

Para ejecutar ejecutar este script yo lo he añadido a la combinación de teclas (win+m), para ello añadiriamos la siguiente linea al fichero ~/.fluxbox/keys

Mod4 m :ExecCommand /usr/bin/php /home/usuario/.fluxbox/fluxcripts/movehere.php

Nota: El espacio entre la 'm' y los ':' es obligatorio,



Otro ejemplo, diferentes fondos para cada escritorio en fluxbox

Este script debe ser llamado al iniciarse fluxbox, se ejecuta en segundo plano y cada medio segundo comprueba cual es el escritorio actual seleccionado.

Para cada escritorio disponemos de un directorio de imágenes, el script tomara una imagen aleatoria dentro de las disponibles para ese escritorio y la pondrá de fondo. Así, podemos tener diferente temáticas de fondo para cada escritorio, por ejemplo, solo fondos de naturaleza para el escritorio uno, fondos de color rojo para el escritorio dos, fondos urbanos para el tres, ....





Obviamente nada nos impide dejar solo una imagen en el directorio para que ese escritorio siempre tenga la misma imagen.

Las imágenes se encuentran en ~fluxbox/fluxcripts/wallpapers_rand/NUMESCRITORIO/

<?php

	require 'fluxbox.inc.php';
	
	// initial whait
	sleep(4);
	
	chdir(dirname(__FILE__));
	$last_desktop=999;
	
	while(1){
	
		$current_desktop_id = getCurrentDesktopId();
		if( $current_desktop_id != $last_desktop ){
			
			// Load possible wallpapers
			$files=glob("./wallpapers_rand/".($current_desktop_id+1)."/*");
			
			/* Wallpaper at random, change frecuency */
			//srand(ceil(time()/60/60/24));		// Every day change (unix_day)
			//srand(ceil(time()/60/60/24/7));	// Every week
	
			// Set and remember wallpaper		
			$r=rand(0,count($files)-1);
			setCurrentDesktopWallpaper($files[$r]);
			$last_desktop = $current_desktop_id;		

			// whait time			
			sleep(0.5);
		}
	}

?>

Este script lo podemos ejecutar al iniciar fluxbox añadiendo la siguiente linea al fichero ~/.fluxbox/startup

/usr/bin/php /home/srfosc/.fluxbox/fluxcripts/wallpainter.php &

Nota: El símbolo & al final de la linea ES necesario, de lo contrario, fluxbox esperará a que el script termine de ejecutarse para iniciarse, y eso no ocurrirá nunca.


Descargar y instalar 0.1beta

user@host# cd ~/.fluxbox/
user@host# wget http://nidodecuervos.comentalo.net/fluxcripts.current.tar.gz
user@host# tar -zxvf fluxcripts.current.tar.gz

En los dos ejemplos anteriores, se explica como activar los ejemplos incluidos en el tar.


Hacer nuestros scripts

Podemos hacer nuestros propios scripts a nuestro gusto si sabemos programar en PHP, si alguien echa de menos alguna funcionalidad no incluida en las funciones disponibles, que deje nota en los comentarios y intentaré añadirla.

Si has creado algún script útil con esto, no dudes en enviárnoslo a admin[garrofa]comentalo.net y lo publicaremos.


Bugs

Imposible, eso es que algo hiciste mal ;)

Aún así, si encontraste algún problema, email a: admin[garrofa]comentalo.net

Quizás te interese:

Gravatar en PHP, Clase para generar avatares.

¡Malditos derechos de autor y malditos grupos de comunicación! Retiramos las traducciones...

Jedit, un editor de texto para programadores

Envía un comentario, es gratis.

NidoDeCuervos | Comprar TwoNav | Gir360 - Tienda online | RSS | Enlaces | Contacto