La Gaceta de Linux ...¡ haciendo a Linux un poco más divertido !

Fvwm

Por Thomas Adam

Traducción al español por Gustavo Conturzo
el día 31 de Marzo de 2005, para La Gaceta de Linux

Introducción

Fvwm! Estoy seguro que algunos de ustedes lo recordará bastante bien como un administrador de ventanas de días pasados - y serían perdonados por pensar que no existe más. Es, tal vez, una pena que haya sido eclipsado por los administradores de escritorio más nuevos y elegantes tales como KDE y GNOME, pero supongo que los tiempos han cambiado. Las personas son más atraídas por los ojos que antes - ¿cierto? Bien, yo no. Mientras puede ser cierto que a todos nosotros nos gusten las cosas lindas, a menudo estas cosas vienen con un sacrificio. La cosa más notable para mi durante los años ha sido que el uso de KDE y GNOME requiere una supercomputadora con toneladas de RAM, mientras que Fvwm anda rápido como alivianando máquinas incluso con recursos mínimos. Para aquellos de nosotros quienes deseamos obtener un uso completo de nuestro hardware existente en lugar de ir en busca de la más última y grandiosa maquinara siempre cambiante con nuestro dinero duramente ganado, software tal como Fvwm puede ser el factor que hace la diferencia clave.

Lo que distingue a un administrador de ventanas de un entorno de escritorio es que el primero no tiene aplicaciones integradas tales como administradores de archivos y utilidades para realizar finos ajustes a todo el entorno. En su lugar, todas estas utilidades son externas - precisamente como deberían ser. El trabajo de un administrador de ventanas es justamente ese, administra ventanas.

Fvwm fue creado por Robert Nation. Está basado en el código de 'twm' (Tom's Window Manager o Administrador de Ventanas de Tom) el cual era en el momento quizá el único administrador de ventanas real disponible. Frustrado con la escasez de características y el hecho que 'twm' estaba lleno de agujeros de memoria, Rob comenzó a hackearlo; el resultado fue que Fvwm se puso en marcha a principio de 1993. Rob, de hecho, ya se había hecho de un nombre como el autor del popular emulador de terminal rxvt, el cual todavía es utilizado por muchas personas hoy en día.

Lo que me propongo demostrar aquí es cómo iniciar desde una configuración mínima de Fvwm y trabajar de ahí en más, discutiendo cómo funciona Fvwm y cómo configurarlo para hacer varias cosas. Hay mucho para Fvwm, de modo que esto no será rápido - pero sin embargo espero que sea interesante.

Instalación

Puesto que Fvwm ha estado incorporado a todas las distribuciones que he utilizado, oportunidades de tenerlo de todos modos. No deberías utilizar Fvwm1, puesto que este es viejo y no está soportado más por los desarrolladores. Actualmente, la versión estable es la 2.4.18 mientras que la versión inestable es la 2.5.10. A diferencia de muchas clasificaciones estables/inestables, la versión inestable de Fvwm nunca ha fallado para mí, así que puedo recomendar utilizarla. De hecho, la mayoría de lo que hablaré durante los próximos meses dependerá de las características en esta versión, y que están ausentes en la versión 'estable'.

Como una nota al margen el uso de binarios precompilados, depende de la distribución utilizada, algunas características que puedo mencionar podrían no estar compiladas. Sin embargo, si quieres tener todas las características que discutiré, estarías bien informado para descargar la versión inestable y completarla. Hay mucha información útil en los archivos  README e INSTALL.

Características de Fvwm

Hay demasiadas características para listar, pero como una perspectiva general de lo que proporciona Fvwm, aquí están algunas de las más interesantes:

También hay soporte de administración de sesiones para aquellos que lo quieran.

Inicio y Configuración de Fvwm

La configuración de Fvwm se hace mejor por usuario, aunque es posible una configuración global. Cuando Fvwm se carga, busca los siguientes archivos y utilizará el primero que encuentre:

Si ningún archivo es encontrado, Fvwm se carga con el menú interno por defecto. Inicialmente éste se puede utilizar para crear un archivo ~/.fvwm/.fvwm2rc básico, como se muestra en la Figura 1.

Fvwm startup
Figura 1: Modo de estado de caída que Fvwm utiliza si no encuentra archivos de configuración.

Luego puedes volver a cargar Fvwm, y tendrás un archivo de configuración mínimo. Por defecto, Fvwm toma la apariencia de mwm y aunque el estilo de mwm se puede emular completamente, el estilo interno propio de Fvwm es tener bordes y un título levantados, como se muestra en la Figura 2.

Fvwm's initial config
Figure 2: Captura de pantalla de las configuraciones producidas después del archivo de configuración generado.

Bien puedes estar pensando "yuck!" - y no te culparía. Hay ciertas cosas acerca de esto que son horribles, lo sé. Pero todo lo que ves en la captura de pantalla es configurable. Por supuesto, las características de todos los administradores de ventanas actuales están soportadas; hay menús, barra de botones, etc. Echemos una mirada más cercana a lo que compone una ventana.

Una ventana es una ventana es una ventana

Una ventana es un marco de pantalla decorado que contiene la interfaz gráfica de un programa. Hay varias características de una ventana, algunas de las cuales son obvias y algunas no tan obvias, las cuales nos permiten configurar la apariencia de la ventana. La estructura de una ventana típica normalmente contiene lo siguiente:

Una configuración común es tener tres botones en la barra de título. El del extremo izquierdo cuando es clickeado, despliega un menú de opciones que se pueden aplicar a la ventana. Esta es más o menos la misma decoración que en MS-Windows. El siguiente botón después de ese (moviéndote a la derecha) iconofica la ventana, mientras que el siguiente botón que le sigue maximiza la ventana (como se ven en la Figure 3).

Sample Fvwm Window
Figure 3: Una ventana decorada utilizando las configuraciones de Fvwm por defecto.

Fvwm permite hasta un máximo de diez botones en la barra de título de la ventana. Estos pueden ser definidos para ejecutar un número de funciones. Personalmente todavía tengo que pensar una razón porqué necesitarías definir los diez, pero estoy seguro que alguna persona lo hace. Hay dos tipos de botones que se pueden definir: botones vectoriales y pixmaps, de los cuáles los primeros se utilizan por defecto. Después volveré a la diferencia, pero por ahora consideraré cómo los botones son colocados y vistos por Fvwm. Como tal, cada botón se enumera sucesivamente.

+--------------------------------------------------------------------------+
| 1 3 5 7 9 Título 0 8 6 4 2 |
|--------------------------------------------------------------------------|
| |

Por lo tanto la Figura 3 muestra que los botones 1, 4 y 2 han sido definidos. Antes mencioné los botones vectoriales. Estos son "dibujados" por Fvwm. Esencialmente, sólo son coordenadas de puntos utilizadas por Fvwm para funciones específicas. Puedes ver una enorme lista de definiciones vectoriales aquí. También puedes aplicar varias definiciones a los botones como estimes conveniente. El código para los botones se define dentro de una decoración. Por defecto (como es el caso aquí), si ninguna decoración se ha definido, se utiliza la interna.

Definiendo Decoraciones

Una decoración es un conjunto de características definidas que se pueden aplicar a las ventanas. Típicamente, son apropiadas para definir todos los atributos que hemos visto hasta ahora.

AddToDecor fDecor
+ BorderStyle Simple
+ TitleStyle -- Raised
+ ButtonStyle All -- Raised
+ AddButtonStyle 1 Vector 5 25x40@1 25x60@1 75x60@0 75x40@0 25x40@1
+ AddButtonStyle 2 Vector 4 50x25@1 75x75@0 25x75@0 50x25@1
+ AddButtonStyle 4 Vector 4 50x75@1 25x25@1 75x25@1 50x75@0
+ ButtonStyle 1 - Clear MWMDecorMenu
+ ButtonStyle 2 - Clear MWMDecorMax
+ ButtonStyle 4 - Clear MWMDecorMin

Este código se puede colocar en el archivo ~/.fvwm/.fvwm2rc. Esta decoración hace un número de cosas. BorderStyle establece el estilo del borde. La opción simple le dice a Fvwm que quieres los valores por defecto. Si miras cerca del borde, notarás que las orillas están cortadas. Estos son los mangos de la ventana que definen cuánto de la orilla está disponible para agarrar la ventana (redimensionarla, moverla, etc.) TitleStyle puede establecer un número de atributos; aquí, se está utilizando para darle a la barra de título una apariencia elevada, y lo mismo se hace para los botones con el comando ButtonStyle. AddButtonStyle agrega un estilo existente. Siguiendo eso, se especifica el número de botones (ver el diagrama), y al último están las definiciones vectoriales que puedes reemplazar con las tuyas propias.

Un aspecto del que debes ser conciente es que si defines un nuevo botón para ser agregado a la barra de títulos, debes darle un destino de ratón, de otro modo no se mostrará. No cubriré los destinos de ratón todavía, poro por ahora puedes ubicar lo siguiente en el archivo ~/.fvwm/.fvwm2rc:

# para los botones de la barra de título:
Mouse 0 1 A Menu MenuFvwmWindowOps2 Close
Mouse 0 2 A FuncFvwmMaximize
Mouse 0 4 A Iconify

Agregar tu propia definición es simple. Aunque nada estará destinado al botón, puedes agregar abajo de estas definiciones algo como lo siguiente, reemplazando el número después del "0" con el número correspondiente al botón para el que has definido el vector:

Mouse 0 0 A Nop

Tendrás que reiniciar Fvwm para que los cambios sean aplicados.

Hay un enorme número de opciones disponibles para estos comandos. Por ejemplo, puedes definir que la Barra de Título sea plana, al agregar la siguiente línea:

TitleStyle -- Flat

Si agregas --flat al final de las definiciones de tu botón vectorial, el botón adquiere una apariencia hundida, más que levantada. También puedes definir estilos de botón basados en el estado, por ejemplo, uno para ActiveUp y ActiveDown. También se pueden establecer estilos de borde, así que, más que bordes levantados, puedes tener bordes hundidos o planos.

Como mencioné antes, también se pueden utilizar los pixmaps, en lugar de botones vectoriales. Las mismas reglas se aplican acerca de la definición de los destinos de ratón de antes. Estos son archivos .xpm que puedes definir para reemplazar botones con imágenes propias. El estilo es similar a uno sencillamente definido:

ButtonStyle 2 Pixmap my_pixmap.xpm
ButtonStyle 4 \
ActiveUp (Pixmap activeup.xpm) \
ActiveDown (Pixmap activedown.xpm) \
Inactive (Pixmap inactiveup.xpm)
ButtonStyle 4 \
InactiveDown Pixmap inactivedown.xpm

Aquí, el Botón 2 permanece igual en todos los estados, pero el Botón 4 utiliza un pixmap diferente dependiendo del estado. Los estados del botón se listan abajo:

Para aplicar la decoración que creaste, tienes que decirle a Fvwm sobre ésta. La siguiente línea general se puede utilizar, obviamente reemplazando el nombre de la decoración con el que la llamaste. En el ejemplo de arriba es fDecor:

Style * UseDecor fDecor

El Próximo Mes...

Obviamente, esto ha sido una rápida revisión de lo que es una ventana, y cómo definir la decoración básica tal como botones y bordes. Hay una plétora de opciones que no he cubierto para esto solo. Aunque algo engorrosa, la página man para fvwm contiene todo esto, e incluye un montón de opciones además de lo que he mencionado. Juega y experimentan con la definición de botones y vectores.

El próximo mes, echaremos una mirada a la definición de menús, colores para ventanas, y algunas otras opciones de estilo.

Recursos

Aquí está una lista de recursos para más información relacionada a Fvwm:

Sitio oficial de FVWM
Colección de Decoraciones Fvwm
Sitio de temas fvwm
Un excelente y "moderno" archivo fvwm2rc
Capturas de pantalla de Fvwm
Sitio de Calmar acerca de Fvwm
Mi propio archivo de configuración con capturas de pantalla

man fvwm

 


pictureEscribo la recientemente revivida serie "El Mecánico de Fin de Semana de Linux", la cual fue iniciada por John Fisk (el fundador de la Gaceta de Linux) en 1996 y continuó hasta 1998. También soy miembro de La Pandilla de Respuestas.

Nací en Hammersmith (Londres, Reino Unido) en 1983. Cuando tenía  13, me mudé a la somnolienta, cubierta de paja, aldea de East Chaldon en el condado de Dorset. Estoy muy cerca de la costa (en la Ensenada Lulworth) que es donde trabajo.

Logré interesarme en Linux en 1996 habiendo visto una revisión de éste en una revista (Slackware 2.0). Estaba harto de la inestabilidad que tenía el entonces nuevo sistema operativo Win95 y así que decidí darle un paseo. Slackware 2.0 fue grandioso. He sido un enorme entusiasta de Linux desde entonces. Terminé con ejecutar  SuSE en mis computadoras de escritorio y portátil.

Mientras estaba en la escuela (La Escuela Purbeck, Wareham en Dorset), estaba activamente involucrado en configurar dos servidores proxy Linux (cada uno corriendo Squid y SquidGuard). También configuré numerosos scritps de BASH que permitieron que el filtrado basado en web fuera hecho vía e-mail, así que cuando un e-mail era recibido, los contenidos de éste eran agregados al archivo de filtro. (Buen viejo BASH -- Lo amo)

Ahora tengo 18 y estoy estudiando en la Universidad (Instituto Southampton, Reino Unido), en un curso llamado Tecnología de Información de Empresas HND (BIT). Hasta ahora, es grandioso.

Otros pasatiempos incluyen la lectura. Especialmente disfruto leer juegos (Henrik Ibsen, Chekhov, George Bernard Shaw), y también disfruto la literatura (Edgar Allan Poe, Charles Dickens, Jane Austin por nombrar algunos).

Disfruto caminar, y a menudo voy de vacaciones al Lago District, a un lugar llamado Keswick. Hay numerosas "montañas", de las cuales "Great Gable" es mi favorita.

También soy un músico aficionado. Toco el piano en mi tiempo libre.

Escucho una variedad de música. Disfruto escuchar Rock. Mi banda favorita es "Pavement" (cantante líder: Stephen Malkmus). También tengo una pasión por la música psicodélica de 1960 (Espero comprar una copia de "Nuggets" prontoooooooo).

Copyright © 2004, Thomas Adam. Publicado bajo los términos de la Open Publication license

Publicado en el Número 105 de la Gaceta de Linux, Agosto de 2004