%***********************************************************************
%
%       Spanish Translation by:  Luis Francisco Gonzalez,
%                                luisgh@cogs.susx.ac.uk
%
%       Revised (cballard)       Jun 19, 1997
%
%***********************************************************************
\chapter{El sistema de ventanas X}\label{x-chapter}

\begin{fortune}
  Lo mejor de los estándares es que haya tantos para elegir.\\
  \raggedleft Andrew S.~Tanenbaum
\end{fortune}

\bindex{El sistema de Ventanas X}

\xwarn 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~\ref{x-start-stop-section}.)

\section{Ejecución y salida del sistema de ventanas X}
\label{x-start-stop-section}

\subsection{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
\cmdnm{startx}\impttindex{startx} o bien
\cmdnm{xinit}\impttindex{xinit}. Debe intentar \cmdnm{startx} primero.
Si el intérprete de comandos se queja de que ese comando no existe,
entonces pruebe con \cmdnm{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.

\subsection{Saliendo de X}

% what about the possibility of the xterm being a ``login window''
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 ~\ref{x-menus} en la página~\pageref{x-menus}).
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''\footnote{N.T.: En inglés, salir del gestor de ventanas} o
``Exit~X''\footnote{N.T.: En inglés, salir de~X.}. 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 \cmdnm{xterm} especial para
controlar~X. En este caso, segúramente existirá una ventana cuyo
título sea ``login''\footnote{N.T.: En inglés, ingreso en el sistema o
  autenticación.} o ``system xterm''\footnote{N.T.: En inglés, xterm
  del sistema o terminal~X del sistema.}.  Para salir de~X, mueva el
cursor a esa ventana y escriba ``exit''\footnote{N.T.: En inglés,
  salir.}.

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 \cmdln{logout}.)

\section{¿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\index{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''\footnote{Existen varias formas de referirse al Sistema de
  Ventanas~X. Una forma que aunque común es incorrecta es ``X~Window''
  o ``Ventanas~X''.} tiene revisiones cada pocos años, conocidas como
lanzamientos.  La última revisión ha sido~X11R6, o sexto
lanzamiento\footnote{N.T.: La palabra inglesa es ``release''. Por ello
  los lanzamientos se diferencian añadiendo una R y el número
  correspondiente.}. 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 {\em 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
\concept{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.

\section{¿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 \cmdnm{fvwm} o \cmdnm{twm}, un
intérprete de comandos, \cmdnm{xterm}, y un reloj, \cmdnm{xclock}.

\begin{figure}[tbf]\label{full-x-screen}
\centering
\epsfig{file=ps-files/screen-shot-5.ps, width=\linewidth}
\caption{Ejemplo comentado de una pantalla~X estándar. En este ejemplo
  el usuario está ejecutando \cmdnm{twm}.  El reloj estándar ha sido
  sustituído por uno transparente llamado \cmdnm{oclock}.}
\end{figure}

\subsection{XClock}

\begin{command}
{\tt xclock} [-digital] [-analog] [-update {\sl segundos}] [-hands {\sl
  color}]
\end{command}
Primero explicaremos el más simple: \cmdnm{xclock}\ttindex{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 {\tt xclock}
produce efecto alguno-- eso es {\bf 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,
\cmdln{xclock -digital} crea un reloj digital. \cmdln{xclock -update
  1} hace que el segundero se mueva cada segundo y \cmdln{xclock
  -update 5} hace que se mueva cada cinco segundos.

Para obtener más información sobre las opciones de \cmdnm{xclock}
puede consultar la página del manual correspondiente---\cmdln{man
  xclock}. Si piensa ejecutar varias copias de \cmdnm{xclock},
probablemente debería consultar la Sección~\ref{section-multitasking}
(Multitarea) para saber como se ejecutan a la vez que sus otros
programas. (Si ejecuta una copia de \cmdnm{xclock} en primer
plano---que es la forma usual en la que se ejecuta un programa---y
quiere salir de él, basta teclear \key{Ctrl-c}.)

\subsection{XTerm} % better section name?

La ventana que muestra el prompt del intérprete de comandos (podrá ver
algo parecido a {\tt /home/larry\$}) es controlada por un programa
llamado \cmdnm{xterm}\ttindex{xterm}.  \cmdnm{xterm} es un programa
engañosamente complicado. A primera vista, no parece que haga mucho
pero realmente hace muchísimo trabajo. \cmdnm{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~\ref{x-scroll-bar}.)

Gran parte de este libro está dedicada a aprender como usar el
interprete de comandos de \unix\, que se encuentra dentro de la
ventana {\tt xterm}. Para poder escribir en la {\tt xterm}, {\em
  generalmente\/} es necesario mover el cursor (que posiblemente
aparece en forma de~``X'' o de flecha) al interior de la ventana {\tt
  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 {\tt 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 {\tt xterm}s. Para evitar bloquear la {\tt
  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~\ref{section-multitasking}.

\section{Gestores de ventanas}

Bajo \linux, los gestores de ventanas más comunes son dos. El primero,
llamado \cmdnm{twm}\ttindex{twm} que viene de ``Tab Window Manager''.
% this is from the manpage. is it correct?
Es un programa mayor que el segundo, \cmdnm{fvwm}. (\cmdnm{fvwm} viene
de ``F(?)  Virtual Window Manager''---el autor nunca explicó que
significaba la ``f''\footnote{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.)}.). 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 \cmdnm{twm},
refiérase a la Sección~\ref{twm-config-section}. La configuración de
\cmdnm{fvwm} se describe en la Sección~\ref{fvwm-config-section}.

\subsection{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
\concept{colcación manual}.  Si ve aparecer la forma de la ventana,
puede moverla con el ratón y colocarla presionando el botón izquierdo.

A veces es posible que el gestor de ventanas las coloque por sí mismo.
Se trata de la \concept{colocación aleatoria}.

Finalmente, a veces, la aplicación pregunta por el lugar preciso en el
que el quiere que se situe. 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 {\tt xclock} siempre aparezca en la esquina superior derecha de la
pantalla.)

\subsection{Foco}

El gestor de ventanas controla otras cosas importantes. Lo que
probablemente le interesa más es el \concept{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 {\tt xterm}\footnote{¡Puede ejecutar varias copias de
  {\tt xterm} al mismo tiempo!}, esa {\tt 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 {\tt
  twm}\ttindex{twm} como {\tt fvwm}\ttindex{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.


\subsection{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 {\tt twm}.  El más obvio es mover el cursor del ratón sobre la
\concept{barra del título} y arrastrar la ventana. Desgraciadamente,
la configuración permite definir el movimiento usando cualquiera de
los tres botones\footnote{Muchos ratones de PCs tienen dos botones
  únicamente. En este caso, generalmente es posible emular el botón
  central presionando ambos botones simultáneamente.} (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 \emph{izquierdo} para mover
ventanas.

Otra forma de mover ventanas puede ser manteniendo una tecla pulsada
mientras mueve el ratón. Así, en {\em mi\/} caso, si mantengo pulsada
la tecla \key{Alt} y muevo el cursor sobre una ventana, puedo
arrastrarla usando el boton 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~\ref{twm-config-section} para {\tt twm}\ttindex{twm}
o~\ref{fvwm-config-section} para {\tt fvwm}\ttindex{fvwm}.

\subsection{Profundidad}

Dado que las ventanas pueden solaparse en~X, necesitamos el concepto
de \concept{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:
\begin{itemize}
\item {\bf 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.)
  
\item {\bf 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.
  
\item {\bf Alzar en ciclo}, de forma que el gestor de ventanas va
  alzando las ventanas una a una, en orden.
\end{itemize}

\subsection{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 {\tt twm}, muchas personas configuran un {\bf
  gestor de iconos}\index{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 {\tt 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
raiz.\glossary{ventana raiz}

\subsection{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~\ref{full-x-screen}. 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.

\subsection{Maximización}

La mayoría de los gestores de ventanas soportan maximización. En {\tt
  twm}, por ejemplo, puede maximizar la altura de una ventana, su
ancho o ambos a la vez. Aunque {\tt 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, {\tt
  xterm} no cambia el tamaño de letra pero aumenta el espacio de
trabajo.)

Desgraciadamente no hay un modo estándar de maximizar ventanas.

\subsection{Menús}\label{x-menus}

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 {\tt xterm} adicional. De ese modo no tendría que ejecutar el
comando dentro de una {\tt xterm}---¡esto es especialmente bueno si
no hay ninguna {\tt 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.\footnote{Un programa divertido que puede probar se llama {\tt
    xfishtank}\ttindex{xfishtank}. Este programa crea un pequeño
  acuario en el fondo de su pantalla.}  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.

\section{Atributos X}

Hay muchos programas que usan~X. Algunos, como {\tt
  emacs}\ttindex{emacs}, puede ejecutarse {\bf tanto} en modo texto
{\bf 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.


\subsection{Geometría}\index{Sistema de Ventanas X!geometría}

Existe una serie de cosas que son comunes a todos los programas que se
ejecutan bajo~X. En~X el concepto de {\bf geometría} engloba el lugar
y el tamaño de la ventana. La geometría de una ventana tiene cuatro
componentes, a saber:
\begin{itemize}
\item 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 {\tt xterm} o {\tt emacs}, miden su tamaño en caracteres. (Por
  ejemplo, ochenta caracteres por línea.)
\item La dimensión vertical, también medida en pixels generalmente. Al
  igual que antes, en algunos casos se puede medir en líneas.
\item La distancia horizontal a uno de los bordes de la pantalla. Por
  ejemplo, {\tt +35} significa a treinta y cinco pixels desde la
  izquierda. Sin embargo, {\tt -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.)
\item 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.
\end{itemize}

Los cuatro componentes se unen formando la cadena de geometría: {\tt
  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 {\sl tamañoh\/}
$\times${\sl tamañov\/}$\pm${\sl situaciónh\/}$\pm${\sl situaciónv\/}.

\subsection{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:

\begin{itemize}
\item 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.
\item 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.
\item 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.
\end{itemize}

Si ponemos estas tres cosas juntas obtendremos: {\sl máquina\/}:{\sl
  número-de-servidor\/}.{\sl número-de-pantalla\/}.

Por ejemplo, en {\tt mousehouse}, todas mis aplicaciones tienen la
presentación fijada en {\tt :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 {\tt mousehouse:0.0}.

Por defecto, la presentación se toma de una variable de entorno (ver
Sección~\ref{section-env-variables}) llamada {\tt
  DISPLAY}\footnote{N.T. DISPLAY significa presentación en inglés.},
pero puede ser fijada mediante una opción desde el intérprete de
comandos (ver Figura~\ref{x-standard-options}). Para ver cuál es el
valor de la variable {\tt DISPLAY}, basta ejecutar ``{\tt echo
  \$DISPLAY}''.

\begin{figure}
\begin{center}
\begin{tabular}{|l|p{.4\linewidth}|p{.4\linewidth}|}\hline
  Nombre & Seguido de & Ejemplo\\ \hline
{\tt -geometry} & geometría de la ventana & {\tt xterm
  -geometry 80x24+0+90}\\ \hline
{\tt -display}  & adónde quiere que el programa envíe la salida &
                  {\tt xterm -display lionsden:0.0}\\ \hline
{\tt -fg} & color primario en primer plano & {\tt xterm -fg
  yellow}\\ \hline
{\tt -bg} & color primario en el segundo plano & {\tt xterm -bg blue}\\ \hline
\end{tabular}
\end{center}
\caption{Opciones Estandar para Programas X}\label{x-standard-options}
\end{figure}

\section{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
chismes\footnote{N.T. Se trata de la traducción de la palabra inglesa
  {\em widget}.}''. 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\index{Sistema de Ventanas X!Athena, Conjunto
  de widgets}.

Otro conjunto de widget popular es ``Motif''.\index{Sismtema de
  Ventanas X!Motif, Conjunto de Chismes} 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
{\tt netscape}\ttindex{netscape}, por ejemplo, usa Motif.

Veamos cuales son algunas de las cosas más habituales que puede
encontrar.

\subsection{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 inmediantamente)
el botón izquierdo. Los botones Athena y Motif son funcionalmente
equivalentes pero tienen diferencias de apariencia.


\subsection{Barras de menú}

Una barra de menú es una colección de comandos accesibles mediante el
ratón. Por ejemplo, la Figura~\ref{x11-menu-bar} muestra la barra de
menú de {\tt emacs}. Cada palabra es la cabecera de una categoría.
{\sf File}\footnote{N.T. Del inglés fichero o archivo.}  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 {\sf 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).

\begin{figure}[tb]
\begin{center}
\epsfig{file=ps-files/screen-shot-2.ps, width=\textwidth}
\end{center}
\caption{{\tt emacs} cambia la barra de menú en función del tipo de
  fichero que esté editando. Aquí se puede ver una posible barra de
  menú.}\label{x11-menu-bar}
\end{figure}

\subsection{Barras de desplazamiento}\label{x-scroll-bar}

Una {\bf 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~\ref{x11-scrollbar}, la ventana
de {\tt 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\index{Sistema de Ventanas X!barra de desplazamiento}.

Puede tener una barra de deplazamiento 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.

\begin{figure}[tb]
\begin{center}
\epsfig{file=ps-files/screen-shot-3.ps, height=3in} \hspace{0.7in}
\epsfig{file=ps-files/screen-shot-4.ps, height=3in}
\end{center}
\caption{Barra de desplazamiento de tipo Athena en la parte izquierda
  de una ventana {\tt xterm}.  Junto a ella, una barra tipo Motif
  visible en una ventana con {\tt netscape}.}\label{x11-scrollbar}
\end{figure}


\subsubsection{Barras de deplazamiento 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.


\subsubsection{Barras de desplazamiento Motif}
Una barra Motif actua de un modo más parecido al acostumbrado en
Windows de Microsoft o en un Macintosh.  La parte derecha de la
Figura~\ref{x11-scrollbar} 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
\emph{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 \emph{centro} de la nueva pantalla de datos.

\eindex{Sistema de Ventanas X}
% Local Variables: 
% mode: latex
% TeX-master: "guide"
% End: 
