miércoles, 27 de julio de 2011

IceWM, ROX-filer y montaje de dispositivos extraibles


IceWM y ROX-filer hacen una buena combinación para escritorios ligeros, pero a costa de sacrificar algunas características. Por ejemplo, el automontaje de memorias y discos ópticos. En esta entrada, dos soluciones para que no nos digan que no se puede, usando puntos de montaje estáticos (forma tradicional) o usando un programa de automontaje para el mismo ROX.


Tradicionalmente, la combinación IceWM + ROX-filer han resultado una de las más modestas en cuestión de recursos, y una de las más cómodas en términos de usabilidad, una vez configuradas*. Sin embargo son el blanco de muchas críticas por parte de los usuarios de entornos más completos como XFCE o GNOME porque la gestión de los dispositivos extraíbles es más bien pobre, o inexistente por defecto.

Para los que no saben de qué hablo, IceWM es un adminitrador de ventanas muy ligero que permite muchas opciones de configuración y varias herramientas respecto al manejo de ventanas, como moverlas sin tener que hacer click en la barra de título, ocultarlas y recuperarlas, que inicien sin un botón en la barra de tareas (mi opción preferida para Audacious2, Banshee y otros programas que ofrecen un ícono en la bandeja del sistema, al lado del reloj), manejo de escritorios virtuales (workspaces, para separar las tareas en las que uno se concentra), pero con una gran falla: no ofrece íconos en el escritorio. Esto es considerado por muchos como una herramienta muy potente de la que carece IceWM.

Entra en juego: ROX-filer. Se trata de un gestor de archivos orientado al DragAndDrop (Arrastrar-y-soltar), es decir, muchas de sus acciones se realizan con el ratón, ya sea con click, click secundario, click central o arrastrar a un lanzador de aplicación. Además, ROX soporta paneles (similares a la barra de tareas de Windows, aunque ROX soporta 4 simultáneamente) y pinboard, que es el módulo que soporta íconos en el escritorio y fondo. Para ROX hay una aplicación que sirve para cambiar el fondo de escritorio automáticamente cada cierto tiempo.

Para el montaje de dispositivos tenemos dos opciones: Montaje estático, que requiere permisos de administrador para crear los puntos de montaje, o usar un programa de automontaje:


ROX-Filer: Método estático a la izquierda, y método de manejador de dispositivos a la derecha

Método 1: Puntos de montaje estáticos

La opción preferida para principiantes, y la que yo recomendaré por algún tiempo, en el método 2 entenderán por qué. Consiste en crear algunos directorios vacíos, normalmente en /media, con los nombres de los dispositivos que se van a montar. Para las memorias USB normalmente son sdb, sdb1, sdc, sdc1, y así, por cada dispositivo completo o partición que se vaya a montar. También es posible crear reglas para UDEV para que siempre se utilice el punto de montaje que esté disponible, pero eso es demasiado avanzado para la mayoría de los usuarios. Por ahora creemos esos cuatro directorios:

# mkdir /media/sdb ; mkdir /media/sdb1 ; mkdir /media/sdc ; mkdir /media/sdc1

Y uno más para el CD/DVD (si es que no existe ya):

mkdir /media/cdrom0

Luego creamos las entradas correspondientes en el archivo fstab. Con un editor de texto, y siendo root, agregamos estas líneas:

/dev/cdrom /media/cdrom0 udf,iso9660 user,noauto 0 0
/dev/sdc /media/sdc vfat noauto,users,umask=0,utf8 0 0
/dev/sdc1 /media/sdc1 vfat noauto,users,umask=0,utf8 0 0
/dev/sdd /media/sdd vfat noauto,users,umask=0,utf8 0 0
/dev/sdd1 /media/sdd1 vfat noauto,users,umask=0,utf8 0 0

La opción utf8 es opcional, pero permite diferenciar mayúsculas y minúsculas en los nombres de archivo, de modo que Archivo.txt y archivo.txt sean archivos diferentes. Si quieren pueden omitirla.

Lo siguiente es iniciar ROX con un pinboard que siempre vayamos a usar:

$ rox -p $USER

donde $USER es el nombre del usuario. Realmente se puede usar cualquier cadena de texto ahí, ya que como dije antes ROX permite usar diferentes pinboards, aunque sólo uno a la vez.

Hecho esto, usamos ROX para navegar hasta el directorio /media. Podemos hacer click (o doble click si ya se ha configurado así) sobre el ícono de Home que hay en la parte superior por defecto, o con otro comando:

$ rox /media

Finalmente arrastramos los íconos de los puntos de montaje que creamos hasta el escritorio. Al acceder a ellos de esta manera, ROX los montará automáticamente y mostrará su contenido en una nueva ventana. Cuando la última ventana que los estaba usando se cierra, ROX muestra un mensaje que permite desmontarlos o expulsarlos. Ojo en este punto, ya que al Desmontarlos se pueden volver a montar cómodamente, mientras que al Expulsarlos ya no se pueden volver a montar sin soltar y volver a conectar el dispositivo. Principalmente se deben expulsar los teléfonos inteligentes que funcionan como memorias USB, los dispositivos Palm y otros similares, para que no salga el error de desconexión incorrecta. Las memorias USB sí se pueden sólo desmontar, al igual que los discos ópticos. Éstos últimos, al expulsarse, salen en la bandeja de la unidad. Genial, ¿no?


Método 2: DeviceHandler

DeviceHandler hace parte del paquete de aplicaciones ROX-All, que se consigue en la página de SourceForge para descarga. También se puede usar 0install, pero no me ha funcionado muy bien porque muchos programas ya no tienen su feed actualizado. El paquete que estoy usando lo encuentran más abajo, en caso de que no quieran hacer unos cambios que menciono a mano.

Para usar DeviceHandler se debe tener al menos un panel en ROX. Para ello:

$ rox -b $USER

El panel empieza con un tamaño enorme para mis estándares, y más si se trata de una pantalla de portátil o miniportátil, en formato widescreen. Si se está usando Debian, hay un bug que evita que aparezca la ventana de configuración del panel, por lo que toca descargar el archivo Templates.glade-2.8 y copiarlo a /usr/share/rox/ con el nombre Templates.glade. El archivo se puede encontrar en algunos sitios de Internet bajo el nombre "134110-rox-build-debs-scripts-0.2". Un enlace directo al que yo encontré no estaba disponible al momento de escribir esta entrada.

Con esto, ya podemos hacer que el panel tenga un alto de 16 pixeles, para ocultarlo detrás de la barra de IceWM. El panel no me sirve para nada más, pero Uds puede que le encuentran alguna otra aplicación.

Lo siguiente es descomprimir DeviceHandler en alguna carpeta. Yo lo tengo en $HOME/Apps. Al hacerle Click secundario con ROX aparece un menú con la opción "Show Default Handlers", que nos abre la carpeta con los manejadores de dispositivo predeterminados. Debemos dejar sólamente la que se llama Volume, ya que las otras no parecen ser compatibles con los sistemas actuales (Con AlsaSoundCard simplemente no funciona DeviceHandler en mi sistema).

Finalmente, arrastramos DeviceHandler al panel de ROX recién creado, y ya tenemos montaje automático de dispositivos. Podemos configurar DeviceHandler para que no monte automáticamente todo, o para que ejecute un programa automáticamente al insertar el dispositivo.

Adicionalmente tuve que hacer otro cambio en el tamaño del ícono de DeviceHandler, ya que el que trae por defecto es muy grande y no me permite ocultar el panel lo suficiente. También modifiqué un poco el código para que los íconos aparecieran debajo de mis íconos en el pinboard. El paquete modificado lo encuentran aquí.

Finalmente una nota sobre DeviceHandler: Está diseñado para usar HAL como método de detección para los dispositivos extraíbles. Como ya algunos sabrán, HAL está en proceso de eliminación, de modo que en algún futuro que no parece demasiado cercano, ya no estará disponible en las distribuciones. Un reemplazo sería UDISKS y DBUS, pero DeviceHandler fue actualizado en 2007, por lo que no creo que haya una nueva versión usando el nuevo sistema. Como proyecto personal, me he propuesto crear una aplicación pequeña en Python que interactúe con ROX para crear los íconos del escritorio de la forma en que lo hace DeviceHandler, pero utilizando un ícono en la bandeja en lugar de un panel de ROX. Espero poder dedicarle tiempo a la programación en las próximas vacaciones, aunque ya tengo la documentación básica necesaria.

*Nota: Configurar IceWM me llevó algunos días, puesto que al iniciar sesión me arranca por defecto algunos programas, como el Conky, el Skype, el DropBox, el medidor interactivo de volumen Volumeicon, el Orage (para calendario), y por supuesto, ROX, entre otras configuraciones propias como el tema visual mejorado, los menús, los colores de los medidores de red y CPU, y mis preferencias de manejo de ventanas y atajos de teclado. Además, ROX también lo tengo muy personalizado, con lanzadores para muchos programas y tipos de archivo.

No hay comentarios.:

Buscar entradas