Dmenu Navigator, acceso directo a ficheros con dmenu

Hace ya algún tiempo un amigo me comento la existencia de dwm, un tiled window manager liviano y simple de la gente de suckless.org

Aunque le di mas de una oportunidad, no me acabo de convencer, quizás por el engorro de tener que compilar para modificar la configuración, o simplemente porque no se adaptaba al tipo de trabajo que realizo habitualmente, en todo caso, gracias a esto descubrí una pequeña joya, uno de esos pequeños programas de linux que antes no conocía, y que en el momento en que te acostumbras, simplemente no puedes vivir sin él: dmenu.


Dmenu


Dmenu es un menú genérico para las X, originalmente desarrollado para usarse desde dwm, aunque podemos usarlo en cualquier window manager. Dmenu lee la entrada estándar y con las lineas recibidas, genera un menu que aparecerá en la parte superior del monitor, el usuario puede usar las teclas de flecha izquierda y flecha derecha para desplazarse por el menú, también puede teclear unas cuantas letras y asi activar un modo filtro que solo mostrará los elementos coincidentes.

El uso más tipíco de dmenu es mediante dmenu_run, un programa que toma todos los ficheros del path y los pasa a dmenu para que así tengamos un acceso rápido a cualquier aplicación, al ejecutar dmenu_run, este nos mostrará un menú con todas las aplicaciones, pero si tecleamos por ejemplo 'ge', solo nos motrara las aplicaciones que contengan 'ge', como por ejemplo gedit, geany, gencat, etc...

Obviamente la gracia de este programa es enlazarlo a alguna tecla desde nuestro window manager, asi si queremos ejecutar por ejemplo el programa 'jedit', basta con que pulsemos ALT+R(en mi caso), tecleemos 'je' y pulsemos intro.


Dmenu navigator, configuración


DMenu Navigator es un pequeño script en PHP para acceder rápidamente a directorios, o a ficheros. Basta con que sepamos el nombre o parte del nombre de un directorio o fichero para poder abrirlo rápidamente. La configuración de de este script esta en el script mismo, y por defecto tiene una pinta tal que así:
/* *****************************************************
	CONFIGURATION START
****************************************************** */	

$file_managers[]	= array('thunar {file}','thunar');

$applications[] 	= array('text/*','gedit {file}','gedit');

$applications[] 	= array('image/*','feh {file}','Feh');
$applications[] 	= array('image/*','gimp {file}','Gimp');

$locations[] = array( '/home/srfosc','*',DIRS_ONLY);
$locations[] = array( '/home/srfosc/Documentos','*',FILES_ONLY);
$locations[] = array( '/home/srfosc/Apps','*',FILES_ONLY);


/* *****************************************************
	CONFIGURATION END
****************************************************** */	

El navegador de ficheros


Vamos a explicar como esto, en primer lugar tenemos el array $file_managers. Que contiene información acerca de como se abrirán los directorios, en este caso solo tenemos un file manager llamado 'thunar' y cuyo comando es 'thunar nombre_directorio'.

$file_managers[]	= array('thunar {file}','thunar');

Si bien lo normal es tener uno, también podríamos especificar varios, por ejemplo, imaginemos que además de thunar a veces queremos abrirlo con dolphin.

$file_managers[]	= array('thunar {file}','thunar');
$file_managers[]	= array('dolphin {file}','dolphin');

Listo, a partir de ahora siempre que seleccionemos un directorio dmenu nos ofrecerá dos opciones, 'thunar' y 'dolphin'


Las rutas donde mirar


En esta zona de configuración también encontramos las rutas donde queremos que dmenu navigator busque los archivos entre los que nos dejará elegir.

$locations[] = array( '/home/srfosc','*',DIRS_ONLY);
$locations[] = array( '/home/srfosc/Documentos','*',FILES_ONLY);
$locations[] = array( '/home/srfosc/Apps','*',FILES_ONLY);

El primer parametro indica el directorio inicial, el segundo parametro el patrón de filtro, y el tercer parametro puede ser una de las dos constantes 'DIRS_ONLY' y 'FILES_ONLY'. Así pues el siguiente location, nos permitira elegir entre todos los ficheros .png del directorio '~/Documentos/imagenes', ademas, especificamos que solo queremos ver archivos, ignorando cualquier directorio que coincida con el patrón.

$locations[] = array( '/home/srfosc/Documentos/imagenes','*.png',FILES_ONLY);

Aplicaciones predefinidas


Para que dmenu navigator sepa con que aplicacion queremos abrir cada fichero, debemos especificarlo mediante el mimetype de estos, para conocer el mimetype de un fichero podemos hacerlo con el comando file de linux:

srfosc@inferno:~/Apps/cdmenu$ file -b -i cdmenu
text/x-php; charset=us-ascii
srfosc@inferno:~/Apps/cdmenu$

En este caso el mime type es text/x-php, si queremos que todos los ficheros de texto se abran con gedit podríamos añadir la siguiente linea de configuración de aplicación.

$applications[] 	= array('text/*','gedit {file}','gedit');

El primer parametro es el patrón de coincidencia con el mimetype, el segundo parametro es el comando para ejecutar jedit, y el tercer parametro es el nombre de la aplicación. Si queremos que todos los ficheros del tipo 'cualquier_cosa/x-php' se abran con el editor jedit, podríamos hacer esto:

$applications[] 	= array('*/x-php','jedit {file}','jEdit');

En este caso tenemos dos applications que se están superponiendo, porque:

"*/x-php" = "text/x-php" ( se abre con gedit )
"text/*" = "text/x-php" ( se abre con jEdit )

En estos casos, justo despues de seleccionar el fichero, dmenu navigator nos mostrara una lista para elegir la aplicacion, en este caso entre 'jEdit' y 'gedit'


Instalación


Esta programado en php, si no tenemos php tendremos que instalarlo, en ubuntu el paquete en cuestión es 'php5-cli'

sudo aptitude install php5-cli

Necesitaremos dmenu, podemos instalarlo desde los fuentes de suckless.org, o en ubuntu podemos bajarlo de repositorios

sudo aptitude install dmenu
Ahora ya podemos bajar el script y darle permisos de ejecución.
 wget http://nidodecuervos.comentalo.net/dmenu_navigator
 chmod a+x dmenu_navigator

A tener en cuenta que viene con mis directorios así que tendréis que editarlo, que probablemente querréis moverlo a algún directorio a vuestra discreción, y que hay que asignarlo a alguna tecla rápida desde vuestro window manager para que sea útil.

A mi particularmente me va de coña, espero que a alguien más le sea útil.

Bugs, problemas, dudas, agradecimientos, amenazas: en los comentarios

Saludos

Quizás te interese:

Jedit, un editor de texto para programadores

Gravatar en PHP, Clase para generar avatares.

Introducción a la programación de virus en PHP

Envía un comentario, es gratis.

NidoDeCuervos | Comprar GPS TwoNav | Regalos eróticos | Cosmética y perfumes | Enlaces | Contacto