Capítulo 5
El sistema de ventanas X
Lo mejor de los estándares es que haya tantos para elegir. Andrew S. Tanenbaum
Este capítulo sólo es aplicable para aquellos que usen el sistema de ventanas X. Si se encuentra con una pantalla con múltiples ventanas, colores o un cursor que sólo se mueve con el ratón, está usted usando X. (Si su pantalla contiene caracteres blancos sobre fondo negro no está usando X. Para arrancarlo, refiérase a la Sección 5.1.)
5.1 Ejecución y salida del sistema de ventanas X
5.1.1 Ejecución de X
Incluso cuando X no arranque de forma automática durante el ingreso en el sistema, es posible arrancarlo desde la línea de comandos del intérprete en modo texto. Hay dos comandos que arrancan X, bien startx o bien xinit. Debe intentar startx primero. Si el intérprete de comandos se queja de que ese comando no existe, entonces pruebe con xinit a ver si arranca X de ese modo. Si no funciona ninguno de los comandos anteriores, puede que no tenga X instalado en su sistema, refiérase a la documentación local de su distribución.
Si el comando se ejecuta pero regresa al intérprete en modo texto tras un rato, X está instalado pero no ha sido configurado todavía. En ese caso debe consultar la documentación que acompañaba su distribución en lo referente a como configurar X.
5.1.2 Saliendo de X
Dependiendo de cómo se haya configurado X, puede haber dos modos diferentes de salir de X. El primero es que su gestor de ventanas controle la ejecución de X. En ese caso, deberá salir de X usando un menú (ver Sección 5.4.8 en la página 41). Para ver el menú, basta apretar un botón del ratón sobre el fondo.
La entrada del menú que busca debe ser algo así como "Exit Window Manager"1 o "Exit X"2. Trate de encontrar esa entrada (puede que haya más de un menú, intente usar diferentes botones) y elíjala.
El otro método utiliza una ventana xterm especial para controlar X. En este caso, seguramente existirá una ventana cuyo título sea "login"3 o "system xterm"4. Para salir de X, mueva el cursor a esa ventana y escriba "exit"5.
Si X arrancó automáticamente tras su ingreso en el sistema, uno de estos métodos probablemente le sacará de él. Basta conectarse de nuevo para regresar a él. Si ejecutó X de forma manual, al salir volverá al interprete de comandos en modo texto. (Si quiere salir del sistema, bastará con escribir "logout" .)
5.2 ¿Qué es el sistema de ventanas X?
El Sistema de Ventanas X es un método de trabajo gráfico y distribuido, desarrollado principalmente en el Instituto Tecnológico de Massachusetts. Actualmente está a cargo de un consorcio de fabricantes (debidamente llamado "El Consorcio X") y es mantenido por ellos.
El Sistema de Ventanas X (que a partir de ahora abreviaremos como "X"6 tiene revisiones cada pocos años, conocidas como lanzamientos. La última revisión ha sido X11R6, o sexto lanzamiento7.
El número 11 indica la versión oficial pero no ha habido cambios en los últimos años y tampoco hay planes para cambiarla en un futuro próximo.
Al ser cliente y servidores programas diferentes, es posible ejecutar cada uno en en máquinas completamente diferentes. Además de constituir un método estándar para aplicaciones gráficas, es posible ejecutar un programa en una máquina remota (¡incluso al otro lado del país, si quiere!) y que los resultados aparezcan en la estación de trabajo que tiene enfrente suyo.
Un tercer concepto con el que debe familiarizarse es el de gestor de ventanas. El gestor de ventanas es un cliente especial que le dice al servidor en que posición deben colocarse las diferentes ventanas y permite al usuario moverlas. El servidor, por sí mismo, no interacciona con el usuario. Se trata de un medio que conecta el usuario y el cliente.
5.3 ¿Qué es esto que hay en mi pantalla?
Al arrancar X, varios programas son ejecutados. Primero, arranca el servidor. Luego, generalmente arrancan varios clientes. Desgraciadamente no hay un estándar común entre las diferentes distribuciones. Es bastante probable que entre los clientes se encuentre un gestor de ventanas, bien fvwm o twm, un intérprete de comandos, xterm, y un reloj, xclock.
_____________________________________________
1 N.T.: En inglés, salir del gestor de ventanas
2 N.T.: En inglés, salir de X.
3 N.T.: En inglés, ingreso en el sistema o autenticación.
4 N.T.: En inglés, xterm del sistema o terminal X del sistema.
5 N.T.: En inglés, salir.
6 Existen varias formas de referirse al Sistema de Ventanas X. Una forma que aunque común es incorrecta es "X Window" o "Ventanas X".
7 N.T.: La palabra inglesa es "release". Por ello los lanzamientos se diferencian añadiendo una R y el número correspondiente.
5.3.1 XClock
- xclock [-digital] [-analog] [-update segundos] [-hands color]
Primero explicaremos el más simple: xclock funciona exáctamente como se puede esperar. Marca los segundos, minutos y horas en una ventana pequeña.
Ni usar los botones del ratón, ni escribir en la ventana xclock produce efecto alguno- eso es todo lo que hace. ¿O quizá no? En realidad hay varias opciones diferentes que permiten hacer que el programa se comporte de modos diferentes. Así, por ejemplo, "xclock -digital" crea un reloj digital. "xclock -update 1" hace que el segundero se mueva cada segundo y "xclock -update 5" hace que se mueva cada cinco segundos.
Para obtener más información sobre las opciones de xclock puede consultar la página del manual correspondiente, "man xclock". Si piensa ejecutar varias copias de xclock, probablemente debería consultar la Sección 6.4 (Multitarea) para saber como se ejecutan a la vez que sus otros programas.
(Si ejecuta una copia de xclock en primer plano, que es la forma usual en la que se ejecuta un programa, y quiere salir de él, basta teclear |_Ctrl-c_|).
5.3.2 XTerm
La ventana que muestra el prompt del intérprete de comandos (podrá ver algo parecido a /home/larry$) es controlada por un programa llamado xterm. xterm es un programa engañosamente complicado. A primera vista, no parece que haga mucho pero realmente hace muchísimo trabajo. xterm emula una terminal de forma que las aplicaciones de modo texto de Unix funcionen correctamente. También mantiene en memoria información de forma que se pueden consultar comandos usados previamente. (Para ver como hace uso de esto, refiérase a la Sección 5.6.3.)
Gran parte de este libro está dedicada a aprender como usar el interprete de comandos de Unix que se encuentra dentro de la ventana xterm. Para poder escribir en la xterm, generalmente es necesario mover el cursor (que posiblemente aparece en forma de "X" o de flecha) al interior de la ventana xterm. De todos modos este comportamiento es dependiente del gestor de ventanas.
Uno de los modos en los que se puede arrancar un programa bajo X es a través de una xterm. Al tratarse los programas X de programas Unix estándar, pueden ser arrancados a través de un intérprete de comandos como el de las xterms. Para evitar bloquear la xterm ejecutando un programa largo desde ella, generalmente se prefiere arrancar los programas X en segundo plano. Para consultar este tema puede referirse a la Sección 6.4.
5.4 Gestores de ventanas
Bajo Linux, los gestores de ventanas más comunes son dos. El primero, llamado twm que viene de "Tab Window Manager". Es un programa mayor que el segundo, fvwm. (fvwm viene de "F(?) Virtual Window Manager", el autor nunca explicó que significaba la "f"8.). Ambos gestores de ventanas son altamente configurables lo cual impide dar instrucciones específicas sobre que teclas usar para hacer algo en particular.
Si le interesa saber algo sobre la configuración de twm, refiérase a la Sección 9.2.1. La configuración de fvwm se describe en la Sección 9.2.2.
5.4.1 Cuando se crean nuevas ventanas
Hay tres tipos de cosas que un gestor de ventanas puede hacer cuando se crea una nueva ventana. Es posible configurar el gestor de ventanas de manera que aparezca la forma de la ventana, permitiéndole colocarla en la posición que prefiera en la pantalla. Este modo se llama colocación manual. Si ve aparecer la forma de la ventana, puede moverla con el ratón y colocarla presionando el botón izquierdo.
_____________________________________________
8 N. del T.: En el Linux Journal N.o 43, Noviembre 1997, hay una entrevista a Robert Nation, págs. 46-47, y éste dice que la "F" está por "Feeble" (Gracias José Luis Gurpegui por la aclaración).
A veces es posible que el gestor de ventanas las coloque por sí mismo. Se trata de la colocación aleatoria.
Finalmente, a veces, la aplicación pregunta por el lugar preciso en el que el quiere que se sitúe. También el gestor de ventanas puede configurarse de forma que siempre sitúe las ventanas de ciertas aplicaciones en lugares fijos. (Así por ejemplo, se puede especificar que xclock siempre aparezca en la esquina superior derecha de la pantalla.)
5.4.2 Foco
El gestor de ventanas controla otras cosas importantes. Lo que probablemente le interesa más es el foco. El foco del servidor determina que ventana recibe los carácteres introducidos mediante el teclado. Generalmente, en X, el foco es determinado por la posición del cursor del ratón. Si mueve el cursor del ratón dentro de una ventana xterm9, esa xterm recibe los caracteres tecleados. Se trata de un comportamiento diferente al de otros sistemas de ventanas como, Windows de Microsoft, OS/2, o Macintosh, donde debe pinchar con el ratón en una ventana para que adquiera el foco.
Generalmente bajo X, si el cursor del ratón se sale de una ventana, se pierde el foco y le resultará imposible escribir en ella.
Debe notar, sin embargo, que es posible configurar tanto twm como fvwm de forma que para cambiar el foco necesite pinchar la ventana correspondiente, y pinchar fuera para desenfocarla, de forma que se comporten igual que Windows de Microsoft. Una de dos, trate de averiguar como funciona su gestor de ventanas probando o consulte la documentación local.
5.4.3 Moviendo ventanas
Otro aspecto de X que es altamente configurable es el método para mover ventanas. Yo tengo configurados tres métodos para mover ventanas en twm. El más obvio es mover el cursor del ratón sobre la barra del título y arrastrar la ventana. Desgraciadamente, la configuración permite definir el movimiento usando cualquiera de los tres botones10 (Para arrastrar, sitúe el cursor sobre la barra del título, y mantenga presionado el botón del ratón correspondiente mientras se mueve). Lo más probable es que su configuración use el botón izquierdo para mover ventanas.
Otra forma de mover ventanas puede ser manteniendo una tecla pulsada mientras mueve el ratón. Así, en mi caso, si mantengo pulsada la tecla |_Alt_| y muevo el cursor sobre una ventana, puedo arrastrarla usando el botón izquierdo de mi ratón.
Por supuesto, para ver como funciona en su caso puede probar igual que antes o referirse a la documentación local. Alternativamente, si quiere tratar de interpretar los ficheros de configuración de los gestores de ventanas puede referirse a la Sección 9.2.1 para twm o 9.2.2 para fvwm.
_____________________________________________
9 ¡Puede ejecutar varias copias de xterm al mismo tiempo!
10 Muchos ratones de PCs tienen dos botones únicamente. En este caso, generalmente es posible emular el botón central presionando ambos botones simultáneamente.
5.4.4 Profundidad
Dado que las ventanas pueden solaparse en X, necesitamos el concepto de profundidad. A pesar de que tanto las ventanas como la pantalla son bidimensionales, unas ventanas pueden estar delante de otras, de forma que cubren total o parcialmente aquella situada detrás.
Existen varias operaciones que manejan la profundidad:
o
Subir o poner una ventana delante. Generalmente se hace pinchando con alguno de los botones en la barra de título de la ventana en cuestión. El botón usado depende de la configuración del gestor de ventanas. (Es posible que sean varios los botones que produzcan este efecto).o
Bajar o empujar una ventana hacia atrás. Generalmente se hace pinchando igualmente en la barra de título pero usando otro botón. También es posible configurar el gestor de ventanas de forma que pinchar traiga la ventana hacia delante siempre que haya algo encima de ella y la lleve hacia atrás si no hay nada delante.o
Alzar en ciclo, de forma que el gestor de ventanas va alzando las ventanas una a una, en orden.
5.4.5 Iconizar
Existen otras operaciones que pueden tapar ventanas o hacerlas desaparecer completamente. La primera es "iconización". Dependiendo del gestor de ventanas que use, este proceso puede realizarse de varias formas. Con twm, muchas personas configuran un gestor de iconos. Se trata de una ventana especial que contiene una lista con las demás ventanas en uso en la pantalla. Pinchando con el ratón en uno de los nombres (o, dependiendo de la configuración en uno de los botones) la ventana desaparece, es iconizada. La ventana está aún activa, pero no puede verse. Pinchando otra vez en el gestor de iconos, la ventana vuelve a aparecer en la pantalla.
Se trata de algo muy útil. Se podría, por ejemplo tener xterm remotas en diferentes máquinas que use ocasionalmente al mismo tiempo. Dado, sin embargo, que sólo las usa raramente, puede mantenerlas iconizadas mientras trabaja con un pequeño grupo. El único problema es que resulta fácil "perder" alguna ventana. Generalmente eso lleva a crear nuevas ventanas que dupliquen la funcionalidad de las que están iconizadas.
Otros gestores de ventanas crean verdaderos iconos en la parte inferior de la pantalla o simplemente en la ventana raíz.
5.4.6 Variando el tamaño
Existen diversos métodos para variar el tamaño de las ventanas bajo X. De nuevo, esto depende de su gestor de ventanas y de cómo haya sido configurado. El método al que están acostumbrados los usuarios de Windows de Microsoft consiste en pinchar en el borde de la ventana y arrastrarlo. Si las ventanas que produce su gestor tienen un borde gordo que hace que el cursor del ratón cambie al pasar por encima de él, seguramente también puede usar ese método.
Otra forma es crear un botón de "variación de tamaño" en la barra del título. Es el botón visible en la parte derecha de las barras de los títulos de la Figura 5.3. Para usarlo, pinche con el botón izquierdo del ratón en él y manteniéndolo presionado, muévalo fuera de la ventana para variar el tamaño. Para fijar el nuevo tamaño basta soltar el botón del ratón.
5.4.7 Maximización
La mayoría de los gestores de ventanas soportan maximización. En twm, por ejemplo, puede maximizar la altura de una ventana, su ancho o ambos a la vez. Aunque twm llama a este proceso "zooming" yo prefiero usar maximización. Las aplicaciones pueden responder de modo diferente a un cambio de tamaño. (Por ejemplo, xterm no cambia el tamaño de letra pero aumenta el espacio de trabajo.)
Desgraciadamente no hay un modo estándar de maximizar ventanas.
5.4.8 Menús
Los gestores de ventanas también proporcionan al usuario un sistema de menús para realizar tareas de forma rápida una y otra vez. Por ejemplo, podría tener una opción que ejecute Emacs de forma automática o una xterm adicional. De ese modo no tendría que ejecutar el comando dentro de una xterm, ¡esto es especialmente bueno si no hay ninguna xterm ejecutándose en la que pueda escribir para ejecutar un programa nuevo!
De forma general, se puede acceder a los menús pinchando en la ventana raíz, que es una ventana inmóvil que siempre está debajo de las demás. Por defecto esta ventana es de color gris, pero puede tener cualquier aspecto.11 Si quiere probar a ver un menú, pinche y mantenga cualquier botón del ratón sobre la ventana raíz. Debería aparecer un menú. Para seleccionar una opción, mantenga presionado el botón y mueva el ratón hasta marcar la opción deseada. Entonces suelte el botón.
5.5 Atributos X
Hay muchos programas que usan X. Algunos, como emacs, puede ejecutarse tanto en modo texto como en una ventana X que él mismo crea automáticamente. Pero en general, la mayoría de los programas para X sólo funcionan bajo X.
5.5.1 Geometría
Existe una serie de cosas que son comunes a todos los programas que se ejecutan bajo X. En X el concepto de geometría engloba el lugar y el tamaño de la ventana. La geometría de una ventana tiene cuatro componentes, a saber:
_____________________________________________
11 Un programa divertido que puede probar se llama xfishtank. Este programa crea un pequeño acuario en el fondo de su pantalla.
o
La dimensión horizontal, generalmente medida en pixels. (Un pixel es la unidad más pequeña que puede colorearse y representarse en la pantalla. Muchas configuraciones X en PCs basados en un procesador Intel tienen una resolución de 1024 pixels horizontalmente por 768 pixels verticalmente.) Algunas aplicaciones como xterm o emacs, miden su tamaño en caracteres. (Por ejemplo, ochenta caracteres por línea.)o
La dimensión vertical, también medida en pixels generalmente. Al igual que antes, en algunos casos se puede medir en líneas.o
La distancia horizontal a uno de los bordes de la pantalla. Por ejemplo, +35 significa a treinta y cinco pixels desde la izquierda. Sin embargo, -50 significa que el extremo derecho de la ventana está a cincuenta pixels del borde derecho de la pantalla. Generalmente no es posible lanzar una ventana fuera de la pantalla, aunque si se puede mover fuera. (La principal excepción es cuando la ventana es demasiado grande.)o
La distancia vertical desde la parte superior o inferior de la pantalla; la distancia se mide desde la parte superior si es positiva o desde la inferior si es negativa.
Los cuatro componentes se unen formando la cadena de geometría: 503x73-78+0. (Esto marca la geometría de una ventana de 503 pixels de largo, 73 pixels de alto, situada cerca de la esquina superior derecha de la pantalla.) O de otro modo, tendremos tamañoh x tamañov -situaciónh + situaciónv.
5.5.2 Presentación
Toda aplicación X tiene asociada una presentación. Ésta determina cuál es la pantalla controlada por el servidor X. La presentación está formada por tres elementos:
o
El nombre de la máquina en la que se ejecuta el servidor. En el caso de sistemas Linux aislados, el nombre de la máquina que ejecuta el servidor coincide con la que ejecuta los clientes. En ese caso se puede omitir el nombre por completo.o
El número del servidor de dicha máquina que debe responder a las peticiones de los clientes. Dado que una máquina puede estar corriendo diferentes servidores a la vez (es algo improbable pero posible en máquinas Linux) cada uno tiene que tener un número propio.o
El número del monitor. X permite que un servidor controle más de un monitor a la vez. Por ejemplo, puede que alguien quiera tener más espacio, de forma que use dos monitores a la vez. Para evitar que el rendimiento de la máquina sea muy malo, en vez de tener dos servidores, hacen que sea el mismo servidor el que controle las dos máquinas.
Si ponemos estas tres cosas juntas obtendremos: máquina:número-de-servidor.número-de-pantalla. Por ejemplo, en mousehouse, todas mis aplicaciones tienen la presentación fijada en :0.0, lo que significa que la salida aparece en la primera pantalla del primer servidor local. Sin embargo si uso una computadora remota, tendría que ser mousehouse:0.0.
Figura 5.1 Opciones Estándar para Programas X
Nombre |
Seguido de |
Ejemplo |
-geometry |
Geometría de la ventana |
xterm -geometry 80x24+0+90 |
-display |
A dónde quiere que el programa envíe la salida |
xterm -display lionsden:0.0 |
-fg |
Color primario en primer plano |
xterm -fg yellow |
-bg |
Color primario en el segundo plano |
xterm -bg blue |
Por defecto, la presentación se toma de una variable de entorno (ver Sección 9.1.4) llamada DISPLAY12, pero puede ser fijada mediante una opción desde el intérprete de comandos (ver Figura 5.2). Para ver cuál es el valor de la variable DISPLAY, basta ejecutar "echo $DISPLAY".
5.6 Características comunes
A pesar de que X es una interfaz gráfica de usuario, se trata de una interfaz muy desequilibrada.
Resulta imposible predecir como va a comportarse cualquier elemento del sistema porque se pueden reconfigurar, cambiar o incluso sustituir muy fácilmente. Eso significa que es muy difícil explicar como se han de usar los distintos elementos de la interfaz. Una de las razones que ya conocemos es la posibilidad de utilizar diferentes gestores de ventanas que a su vez son altamente configurables.
Otra explicación para el desequilibrio de la interfaz es que las aplicaciones X se pueden construir mediante "conjuntos de chismes13". La distribución X estándar incluye los "widgets Athena" desarrollados en el MIT. Las aplicaciones gratuitas suelen hacer uso de este conjunto. Tienen la desventaja de que su aspecto no es particularmente atrayente y resultan algo más difíciles de usar en un programa que los otros.
Otro conjunto de widget popular es "Motif". Motif es un conjunto no gratuito similar a la interfaz de usuario usada por Windows de Microsoft. Muchas aplicaciones comerciales así como algunas gratuitas usan el conjunto de widget Motif. El popular Browser de World Wide Web netscape, por ejemplo, usa Motif.
Veamos cuales son algunas de las cosas más habituales que puede encontrar.
5.6.1 Botones
Los botones son generalmente los componentes de la interfaz más fáciles de usar. Un botón se invoca situando el cursor del ratón sobre el botón en cuestión y pinchando (pulsando y soltando inmediatamente) el botón izquierdo. Los botones Athena y Motif son funcionalmente equivalentes pero tienen diferencias de apariencia.
_____________________________________________
12 N.T. DISPLAY significa presentación en inglés.
13 N.T. Se trata de la traducción de la palabra inglesa widget.
5.6.2 Barras de menú
Una barra de menú es una colección de comandos accesibles mediante el ratón. Cada palabra es la cabecera de una categoría. File14 contiene comandos que permiten cargar o grabar ficheros. Por convención, esta categoría incluye también el comando que termina la aplicación.
Para utilizar un comando, mueva el cursor del ratón sobre la categoría correspondiente (como por ejemplo File) y apriete el botón izquierdo. Sin soltarlo, arrastre el ratón hacia abajo para ver los diferentes comandos de esa categoría. Para seleccionar uno, mueva el cursor sobre el mismo y suelte el botón del ratón. Algunas barras de menú le permiten pinchar sobre la categoría, si este es su caso, pinche sobre la categoría para ver el menú que se mantendrá hasta que pinche de nuevo para seleccionar un comando, otro menú, o pinche fuera (indicando que no está interesado en ningún comando en particular).
5.6.3 Barras de desplazamiento
Una barra de desplazamiento es un método que permite ver sólo una parte de un documento, mientras que mantiene el resto fuera de la pantalla. Por ejemplo, en la Figura 5.4, la ventana de xterm sólo presenta el tercio inferior del texto disponible. Es muy fácil ver cual parte del texto es el que se puede ver en cualquier momento: la franja oscura de la barra está situada y tiene una longitud relativa a la porción de texto que se puede ver. Cuando no hay más que lo que se puede ver, toda la barra aparece de color oscuro. Si se trata de la mitad, será la mitad la que aparezca oscurecida.
Puede tener una barra de desplazamiento vertical a la derecha o la izquierda de su texto y una horizontal en la parte superior o inferior, dependiendo de la aplicación de que se trate.
Barras de desplazamiento Athena
Las barras de desplazamiento Athena funcionan de forma diferente a las de otros sistemas de ventanas. Cada uno de los tres botones del ratón tiene una función diferente. Para desplazarse hacia arriba (es decir, para que ver el material situado por encima de lo que se puede ver en ese momento) puede pinchar en cualquier lugar de la barra con el botón derecho. Para desplazarse hacia abajo, puede usar el botón izquierdo de forma análoga.
También puede saltar a cualquier lugar en particular usando el botón central del ratón y pinchando en el lugar de la barra que corresponde a la posición del texto que le interesa. Esto hace a la ventana presentar el material situado en ese punto del documento.
_____________________________________________
14 N.T. Del inglés fichero o archivo.
Barras de desplazamiento Motif
Una barra Motif actúa de un modo más parecido al acostumbrado en Windows de Microsoft o en un Macintosh. La parte derecha de la Figura 5.4 muestra un ejemplo. Debe notar que además de la barra en sí misma, hay unas flechas tanto en la parte superior como en la inferior. Estas flechas se pueden usar para ajuste fino de la pantalla: pinchando tanto el botón izquierdo como el central mueve la ventana ligeramente (por ejemplo una línea); el botón derecho no hace nada.
El comportamiento asociado a pinchar en la barra de desplazamiento es completamente diferente en las barras Motif del que exhiben las barras Athena. El botón derecho no tiene efecto. Asociado al botón izquierdo, la ventana se moverá hacia arriba si pincha sobre la posición actual o hacia abajo en el caso contrario. Si pincha sobre la barra en el lugar actual y la arrastra podrá moverse a cualquier posición a voluntad. Al soltar el botón se fija cual es la posición final de la ventana.
Pinchando el botón central en cualquier lugar de la barra hace que la ventana se desplace hacia ese lugar de forma inmediata igual que ocurre en barras Athena. Sin embargo el punto elegido se convierte en el centro de la nueva pantalla de datos.