Introducción
En sistemas Linux se hizo famosa la implementación de X11 proporcionada por XFree86, aunque recientemente se ha desplazado en favor de la ramificación mantenida por X.Org.
Conceptos básicos: display, screen, pointer, window
El sistema X11 se diseño para permitir que la salida gráfica de un programa se mostrara en otra máquina, posiblemente remota y de distinta arquitectura.
En el diseño de X11, se habla de "display" como la "máquina" en la que aparecerá la salida gráfica. Un "display" puede tener un ratón y un teclado pero muchos monitores (no es común pero puede suceder) o "screens".
Finalmente una "ventana" es un área rectangular de la pantalla que se usa para entrada y salida. El área rectangular no cubre la "screen" entera, sino que reside en memoria (una ventana es sólo un rectángulo, no tiene asociado ni barra de desplazamiento vertical y horizontal ni otras cosas que nos hemos familiarizado en otros sistemas operativos).
En la documentación original de X11 se habla de "pointer" en lugar de "ratón" porque aún no se sabía a ciencia cierta si el ratón iba a triunfar :)
El cliente y el servidor
D) Ahora que ya estamos en la máquina remota, luna, le decimos dónde estamos sentados.
setenv DISPLAY pluton:0.0
E) Ya podemos ejecutar cualquier aplicación. Si ejecutamos la aplicación "gráfica" xeyes aparecerá en nuestra máquina pluton.
Si ejecutamos aplicaciones "de texto", lo harán en el emulador de terminal. Dichas aplicaciones de texto puede que necesiten, para saber cómo comportarse, saber a qué emulador de terminal se enfrentan. Para eso se puede hacer con la variable:
setenv TERM xterm
El más estándar de los emuladores de terminal es el vt100 o el vt220, así que en muchos entornos se entra con
setenv TERM vt100
F) Ya podemos salir, para ello hacemos exit, logout... etc
Configuración de un servidor X
Esta es una tarea para el administrador del sistema. Tengo que confesar que nunca he configurado un servidor X. Siempre he utilizado lo que por defecto venía en cada sistema.
En X11, el cliente es la aplicación que manda sus datos al servidor gráfico, que es un programa que corre en la máquina que tiene la pantalla. El servidor es un programa que maneja los recursos gráficos.
Esto causa confusión a veces, porque el "cliente X11" se ejecuta en la máquina "servidor UNIX" y el "servidor X11" en el "desktop".
Window Managers
X11 comprende un protocolo de red específico y una definición de primitivas gráficas, sin embargo no especifica nada de interfaz de usuario (botones, menús o barras de título). La componente que controla la interfaz de usuario que corre sobre X11 es un "Window Manager".
Prácticamente todo lo que aparece en una pantalla X11 es una ventana. El "Window Manager" controla su apariencia y su comportamiento.
Prácticamente todo lo que aparece en una pantalla X11 es una ventana. El "Window Manager" controla su apariencia y su comportamiento.
Ejemplos de Windows Managers:
Desktop
Un desktop es otra cosa que un Window Manager. Un desktop es un conjunto de aplicaciones que dan una experiencia al usuario, pueden incluir (o no) un Window Manager.
Ejemplos de Desktop:
- CDE: (Common Desktop Environment) es el entorno gráfico en el que se pusieron de acuerdo un número importante de vendedores de sistemas operativos UNIX con el fin de estandarizar el aspecto del "escritorio" (en concreto, Sun, IBM y HP). Desde 1996 el CDE es responsabilidad del consorcio de estándares The Open Group. Se basa en el paquete de librerías Motif.
- KDE: Un entorno gráfico nacido a finales de los 90 (que yo conocí cuando estaba en beta) muy interesante y con herramientas adicionales. Aunque hay versiones para Solaris, MacOS X e incluso Windows, por lo que se ha hecho famoso ha sido por el "Plasma Desktop", que viene por defecto en algunas distribuciones de Linux como openSuSE. Ahora mismo KDE no sólo es el entorno gráfico, sino que es la marca que abarca también otro software como Amarok que es un famoso reproductor de música para Linux. Las librerías en las que se basa son las librerías Qt.
- GNOME: Diseñado originalmente para Linux, como alternativa a KDE porque en su momento las librerías no eran "libres", en Solaris empezó a distribuirse por defecto a partir de Solaris 9, discontinuándose un entorno anterior llamado OpenWindows (nacido en 1989). Sus librerías gráficas son las GTK+.
Ejecución de X11
Cuando abrimos una sesión gráfica, el gestor de ventanas X11 suele estar arrancado y no nos tenemos que preocupar de nada. Si entramos en línea de comandos, puede ser que tengamos que iniciar X11 (startx o xinit). Al inicio de X, se arranca lo que se conoce como "gestor de ventanas".
Abriendo un programa gráfico
El problema clásico de un usuario X es intentar abrir un programa remoto desde la máquina local, siendo la máquina local el "display". Supongamos que el programa es el famoso xeyes.
Los pasos a realizar son:
A - Averiguar el nombre de la máquina local o "display"
B - (Opcional) Dar permiso a la máquina "remota" para usar el "display".
C - Logarse a la máquina "remota"
D - Decirle a la máquina "remota" dónde anda el "display"
E - Abrir la aplicación
F - Salir
En más detalle:
A) Vamos a ejecutar la aplicación xeyes en la máquina luna (no es en la que estamos sentados) xeyes necesita saber en qué display abrirse. El nombre del display se puede elegir mediante una variable de entorno que se llama DISPLAY, en cuyo valor se emplea la sintaxis:
Si estamos sentados en una máquina llamada pluton y tenemos tcsh
setenv DISPLAY pluton:0.0
B) Si estamos sentados en una máquina UNIX (pluton), tendremos que dar permiso en el sistema pluton para que el sistema luna pueda emplear su consola. Esto en ciertos emuladores de ventanas Windows no es necesario porque "viene hecho" al establecer la conexión.
luna> xhost luna
Si queremos denegar el permiso de que la máquina plutón use la pantalla de luna:
luna> xhost -luna
Si queremos exponernos a que nos secuestren el display
luna> xhost +
C) Nos logamos a la máquina remota.
luna> xhost luna
Si queremos denegar el permiso de que la máquina plutón use la pantalla de luna:
luna> xhost -luna
Si queremos exponernos a que nos secuestren el display
luna> xhost +
C) Nos logamos a la máquina remota.
- El comando xterm crea una nueva ventana mediante un emulador de terminal estándar llamado xterm. Este emulador se ejecuta en local, pero lo primero que hará será invocar el programa ssh. Este programa encriptaría la comunicación entre luna y pluton. Si accedes por ssh a una máquina que nunca accediste antes, te pedirá que verifiques que el nombre es correcto, dí que sí con todas las letras: yes.
- rlogin es Remote Login y no tiene seguridad.
slogin es un rlogin más seguro, que encripta las comunicaciones.
ssh sirve para hacer slogin, pero tiene funcionalidades de protección ante más ataques.
D) Ahora que ya estamos en la máquina remota, luna, le decimos dónde estamos sentados.
setenv DISPLAY pluton:0.0
E) Ya podemos ejecutar cualquier aplicación. Si ejecutamos la aplicación "gráfica" xeyes aparecerá en nuestra máquina pluton.
Si ejecutamos aplicaciones "de texto", lo harán en el emulador de terminal. Dichas aplicaciones de texto puede que necesiten, para saber cómo comportarse, saber a qué emulador de terminal se enfrentan. Para eso se puede hacer con la variable:
setenv TERM xterm
El más estándar de los emuladores de terminal es el vt100 o el vt220, así que en muchos entornos se entra con
setenv TERM vt100
F) Ya podemos salir, para ello hacemos exit, logout... etc
Configuración de un servidor X
Esta es una tarea para el administrador del sistema. Tengo que confesar que nunca he configurado un servidor X. Siempre he utilizado lo que por defecto venía en cada sistema.
En un sistema Linux moderno vamos a encontrar toda la información en /etc/X11/xorg.conf
No hay comentarios:
Publicar un comentario