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

Fvwm y Administración de Sesión

Por Thomas Adam

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

Introducción

Con toda la promoción y atención circundado a los administradores de escritorio tales como KDE y Gnome podrías estar asombrado "¿porqué molestarse en usar otros administradores de ventanas cuando éstos tienen todo incluido en ellos?" Administradores de archivos integrados, lindos artilugios brillantes, etc. La respuesta es simple. Ambos, KDE y Gnome ocupan inmensas cantidades de memoria, y si, como yo, tienes hardware viejo, a menudo buscas alternativas que harán a tu sistema aprovechable.

Es posible que pienses eso, como KDE y Gnome tienen todo lo que el usuario quiso toda la vida, ¿por qué molestarse en cambiarlo? O ponerlo de otra forma, ¿hay alguna forma que pueda emular algo de lo que KDE y Gnome hacen, en menos  costo de memoria? La respuesta es "si". Una de las características más requeridas por los usuarios a lo largo de los años ha sido el uso de administradores de sesiones, que son el foco de este artículo.

¿Qué es la administración de sesión?

La administración de sesión permite que el estado de aplicaciones que se están ejecutando sea guardado y recordado. Esto incluye atributos tales como el tamaño de las ventanas, su geometría (ubicación en la pantalla), y qué página/escritorio estaba activo (si estás usando un administrador de ventanas virtuales que los soporte).

Funciona al distribuir el administrador de sesión los ID de los clientes. La aplicación a la cual se da esto es por lo general la ventana principal, y cualquier otra sub ventana no obtiene nada (a estas sub ventanas las llamaremos ventanas transitorias), puesto que son específicas del evento conducido y sólo se muestran cuando tales eventos son activados dentro de la aplicación.

Sin embargo, la ventana padre tiene que registrarse directamente con el administrador de sesión de modo que el administrador de sesión conozca la ventana originante a fin de que cualquier ventana transitoria pueda ser anexada. Tal ventana tiene una propiedad llamada: WM_CLIENT_LEADER. Esto se usa para hablar al administrador de sesión. Una propiedad más WM_WINDOW_ROLE es usada por fvwm para definir el estado de la ventana. Estas llamadas fundamentales vienen desde el servidor X mismo, el cual comunica al administrador de ventanas que se está ejecutando.

Así que un administrador de sesión es un programa que maneja estos protocolos, hablando al servidor X fundamental y al administrador de ventanas para determinar cómo están estas ventanas para ser configuradas. Este es el trabajo del administrador de ventanas, si se ejecuta bajo un administrador de sesión, para comunicar con el administrador de sesión para aprender de estas 'sugerencias'.

No hay muchos administradores de sesión verdaderos por ahí. Pero para aquellos que existen, lograr que trabajen con fvwm puede ser un desafío. Yo miraría a cada uno a su vez y evaluaría su rendimiento.

Cómo usa fvwm la Administración de Sesión

A fin de que fvwm use la administración de sesión, debe ser compilado con --enable-sm en ./configure. Una vez que esto se ha hecho, puedes usar cualquier administrador de sesión que te guste.

Cuando fvwm se carga, sin el uso de un administrador de sesión, busca un archivo definido, generalmente: $HOME/.fvwm2rc or: $HOME/.fvwm/.fvwm2rc

Pero fvwm, en su archivo de configuración, nos permite definir dos secciones inicio/reinicio. Una para ejecutar bajo un administrador de sesión y la otra sin él. Como ejemplo, aquí va una muestra de InitFunction para fvwm:

   DestroyFunc InitFunction
AddToFunc InitFunction
+ I Module FvwmBanner
+ I xsetroot -solid cyan
+ I Exec xterm
+ I PipeRead 'Wait exec run_parts.rb'

Esto cargará normalmente cada vez que fvwm se cargue sin un administrador de sesión. No obstante el inicio específico del administrador de sesión se parece a esto:

DestroyFunc SessionInitFunction
AddToFunc SessionInitFunction
+ I Module FvwmBanner

Así esto permite al usuario definir definiciones separadas para instancias donde el usuario puede o no estar usando un administrador de sesión. Se debería observar que si se ejecuta bajo un administrador de sesión éste sólo buscará las secciones SessionInitFunction (y relacionadas), y no ejecutará las secciones InitFunction en absoluto.

También es una mala idea lanzar xterms y otras aplicaciones desde dentro de las funciones de sesión puesto que a menudo puede interferir con la forma que el administrador de ventana interpreta cómo manejar la ventana.

Sin embargo a fin de que nosotros usemos el administrador de sesión, necesitamos asegurarnos que se cargó en el orden correcto. Siempre que X inicie, ya sea desde la línea de comandos (startx) o desde un administrador de pantalla gráfica tal como xdm, kdm, gdm, o wdm, se lee un cierto archivo: $HOME/.xsession. Normalmente, puede parecerse algo como esto:

#!/bin/bash

program1 &
program2 &
exec fvwm

A fin de tener el administrador de sesión funcionando correctamente tenemos que estar seguros que es el último programa que se ejecuta, por lo tanto:

#!/bin/bash

program1 &
program2 &
smproxy &
fvwm
exec algun_administrador_de_sesión

Asegurando que "algun_administrador_de_sesion" de arriba sea reemplazado por el nombre actual del administrador de sesión.

smproxy es requerido puesto que hay algunos programas que nativamente no soportan las llamadas a programa que define el administrador de sesión. En tales instancias smproxy las probará y reconocerá.


xsm -- Administrador de Sesión X

Este es el administrador de sesión original, y está bastante limitado comparado a algunos otros administradores de sesión que veremos. Para usarlo con fvwm, se hace exactamente como se describió arriba. Una vez que todo se carga, deberías ver una ventana que se parece a la siguiente...


xsm1
Figura 1: ventana cliente de xsm

Esto es bastante explicativo. Al hacer clic sobre el botón 'Load Session' (Cargar Sesión), puedes seleccionar las sesiones anteriores a cargar. Cuando inicialmente inicies X, esto es lo que verás. Puedes suprimir esta ventana, pero para hacerlo, tienes que crear una sesión.

xsm2
Figura 2: ventana de control de xsm

La Figura 2, muestra lo que está presente después de que todo se ha cargado. Usando esta ventana, puedes tener una idea de las aplicaciones que ya se reconocen, y guardar la sesión, etc. El único inconveniente con el uso de xsm es que está muy limitado en las aplicaciones que puedo reconocer. Si la aplicación no es estrictamente consciente de X entonces xsm no será capaz de manejarla.

Para guardar el estado de tu sesión (y por lo tanto ver si xsm puede identificar más ventanas, puedes presionar el botón  "checkpoint" (punto de referencia), para obtener una pantalla como la Figura 3.


Figura 3: ventana de punto de referencia de xsm

Desde aquí puedes ingresar el nombre de la sesión que quieras guardar. Antes dije que puedes pasar la Figura 2, al tener cargado el nombre de sesión de tu elección. Una vez que hayas guardado la sesión, edita el archivo: $HOME/.xsession y cambia la línea: exec xsm a: exec xsm -session [name] donde '[name]' es el nombre de la sesión.

xsm también ocasiona problemas con fvwm en cuanto tienes que abandonar xsm a fin de guardar la sesión, puesto que sxm es el proceso gobernante. Encontré que esto es bastante molesto. Sin embargo, lo recomendaría a cualquiera que use aplicaciones simples, o a alguna que sólo quiera ejecutar ciertas aplicaciones y no quiera el lío de instalar Gnome o KDE para usar las características de sesión que ellos tienen.


Sesión Gnome

Este es el mejor administrador de sesión para usar con fvwm. Esto es porque fvwm está adaptado a Gnome y debería funcionar bien con él (los detalles específicos del soporte se hacen con soporte EWMH). A diferencia de xsm, la sesión gnome maneja aplicaciones mucho más eficientemente. Bajo Debian, esto puede ser instalado por el comando: apt-get install gnome-session. Al igual que xsm, el archivo ~/.xsession necesitará modificaciones, esta vez parecido a esto:

#!/bin/bash

program1 &
program2 &
exec gnome-session

Estás avisado que el inicio de 'program1' y 'program2' arriba, antes del administrador de sesión causará que dos instancias del mismo programa se carguen cada vez que inices fvwm otra vez puesto que las carga como normal, y luego el administrador de sesión las cargará porque habría guardado (optimistamente) sus estados. Eso sólo es algo de aguantar en la mente.

Cuando te conectes a X esta vez, inicialmente se cargará Gnome -- ¡tranquilo!. El miedo y el sufrimiento no durarán mucho. Lo que necesitamos hacer es reemplazar sawfish o metacity (dependiendo de si estás en Gnome1 o Gnome2) con fvwm, mientras se mantenga ejecutando la sesión gnome así que cuando guardemos la sesión ésta sepa cargar fvwm y no algún otro administrador de ventanas.

Para hacer eso podemos probar y quitar el administrado de ventanas actual del camino y tener que reemplazar fvwm directamente. El comando:

fvwm --replace &

...cuando se ejecute en un xterm se puede hacer el truco. Si no, será un caso de interface son la sesión de gnome misma. Por extraño que parezca, hay una aplicación de Gnome que proporciona esta interface: gnome-session-properties. Esta es una aplicación realmente útil para afinar el administrador de sesión. Pero para los propósitos de lograr que fvwm se ejecute bajo ésta tenemos que eliminar explícitamente sawfish o metacity.


Figura 4: propiedades de la sesión gnome

La Figura 4, muestra (inexpresivamente mejor) los programas que conoce y se han cargado. Entonces todos lo que resta es quitar el fvwm que estaba ejecutándose previamente, al escribir en una xterm:

killall fvwm

Luego, volviendo a la ventana propiedades de sesión, selecciona el administrador de ventanas que se esté ejecutando (sawfish o metacity), y has clic en el botón 'Style' (Estilo) establece el estado activo a Normal. Luego debes hacer clic en 'Apply' (Aplicar). Lo que esto ha hecho es asegurar que cuando la sesión reinicie el administrador de ventanas que previamente estaba cargado no lo esté. Luengo en una xterm escribe:

killall [wm] && sleep 5s && fvwm &

Donde [wm] arriba es: metacity o sawfish. Tan pronto como eso haya funcionado, guarda la sesión. Debería apuntar a aquellas aplicaciones que realmente no están concientes de la sesión, hay una opción que tiene la sesión gnome para lanzar aplicaciones, al usar la lengüeta 'startup programs' (programas de inicio) (Figura 4).

Hay un tema conocido con todos los administradores de sesión (sesión Gnome en particular) que ocasiona que se reproduzcan múltiples instancias de ciertos programas. Notablemente con fvwm es xclock. Toda la información acerca de qué programas lanzar, etc., se almacena en un archivo, y es una tarea simple de corregir. Este script (escrito en Ruby) corregirá esa anormalidad, que sería molesta. Para usarlo simplemente has lo siguiente:

1. copia el script en /usr/local/bin
2. chmod 711 /usr/local/bin/cprocess.rb
3. edita la línea #! en el script para apuntar al ruby binario
4. edita ~/.xsession, y agrega la siguiente línea:

ruby /usr/local/bin/cprocess.rb
antes de cargar la sesión gnome.

Eso es realmente todo lo que hay para configurar y usar la sesión gnome con fvwm.

Conclusión

Esto ha sido un aspecto muy breve en cómo los diferentes administradores de sesión pueden ser usados con fvwm. Hay otros tales como ksmserver de KDE y xfce-session de XFCE4 pero no los he probado con fvwm y no sé cómo son. Aparte de los administradores de sesión, también hay dos módulos de interés nativo para fvwm, llamados: FvwmSave y FvwmSaveDesk. Mientras no haya administradores de sesión, ellos proporcionarán funcionalidad muy similar a la de ellos. Esto se discutirá más ampliamente en otros artículos el próximo mes.

 

picture Escribo la serie recientemente revivida "The Linux Weekend Mechanic", que fue iniciada por John Fisk (el fundador de Gaceta de Linux) en 1996 y continuó hasta 1998. También soy miembro de La Pandilla de la Respuesta.

Nací en Hammersmith (Londres, UK) en 1983. Cuando tenía 13 años, me mudé al somnoliento, techado con paja, pueblo de East Chaldon en el condado de Dorset. Estoy muy cerca de la costa (en Lulworth Cove) donde trabajaba.

Primero logré interesarme en Linux en 1996 habiendo visto una revisión de éste en una revista (Slackware 2.0). Me era repugnante la inestabilidad que el entonces nuevo sistema operativo Win95 tenía y así decidí darle un paseo. Slackware 2.0 fue grandioso. Había sido un entusiasta masivo de Linux desde entonces. Terminé corriendo SuSE en mi computadora de escritorio y portátil.

Mientras estaba en la escuela (The Purbeck School, Wareham en Dorset), estuve activamente involucrado en la configuración de dos servidores proxy Linux (cada uno corriendo Squid y SquidGuard). También configuré varios scritps BASH que permitieron que el filtrado basado en web se hiciera vía e-mail, de modo que cuando un e-mail era recibido, el contenido de éste era agregado al archivo del filtro. (Bueno viejo BASH -- lo amo)

Ahora tengo 18 años y estoy estudiando en la Universidad (Instituto Southampton, UK), en un curso llamado Tecnología de Información de Negocios HND (BIT). Hasta el momento, es genial.

Otros pasatiempos incluyen lectura. Especialmente disfruto leer obras teatrales (Henrik Ibsen, Chekov, 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 a Lake District, a un lugar llamado Keswick. Hay varias "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 escuchando Rock. Mi banda favorita es "Pavement" (cantante líder: Stephen Malkmus). También tengo una pasión por la música psicodélica de los 60 (espero comprar una copia de "Nuggets" realmente pronto).

Copyright © 2004, Thomas Adam. Licencia de copia http://linuxgazette.net/copying.html

Publicado en el Número 100 de la Linux Gazette, Marzo de 2004