El sistema X-Window, (X-window o simplemente las X) se trata de la herramienta de software para el desarrollo de interfaces gráficas de usuario (GUI's) para estaciones de trabajo. Una GUI es en pocas palabras una interfaz usuario / computadora que se ejecuta en modo gráfico. X-window para linux y para todos los sistemas más basados es UNIX lo que MS Windows es para los sistemas basados en DOS. Con una gran diferencia, que X-Window es un estándar para los sistemas de ventanas basados en UNIX. Esta estandarización supone que cualquier interfaz GUI puede ser ejecutada en cualquier computadora e incluso en varias a la vez. Más información en [SHV+93].
En 1984, Laboratory for Computer and Science del Instituto Tecnológico de Massachussets (MIT) en Cambridge, Massachussets, inicio el poyecto Athena que fue liderado por Robert Schefler y Jim Gettys. En el MIT como en muchas más organizaciones había muchos, terminales, sistemas operativos, CPUs etc. lo que dificultaba una tarea estandarizada. El proyecto Athena tenía una meta muy definida, que era que todos los programas pudieran estar interactivamente disponibles para todos los usuarios en cualquier estación de trabajo del MIT. El inicio de este sistema fue el sistema de ventanas de la Stanford University que se llamo W.
La primera versión disponible para los diseñadores estuvo en el año 1986, y la versión fue la Versión 10 Revisión 4. Grandes empresas del tamaño de IBM, SUN, HP, Digital etc. han participado desde el principio en el desarrollo de este sistema. Desde su aparición hace ahora catorce años se ha ido actualizando continuamente, la última versión existente es la Versión 11 Revisión 6.3 (X11R6). Más información en [SHV+93].
En linux el proceso gráfico no es más que otro proceso que ejecuta el sistema operativo. Esto evita muchos problemas de estabilidad al kernel. Otra ventaja que tiene es la absoluta independencia del sistema operativo y el entorno gráfico. En contrapartida a todas estas ventajas, existe el inconveniente que el entorno gráfico reduce su velocidad en comparación a otros sistemas gráficos. Estos últimos incluyen los procesos referentes al subapartado gráfico en el propio núcleo. Ver figura 1. Aunque esta práctica tiene la ventaja de que el sistema gráfico es más veloz. Se hace un gasto innecesario de recursos, aun sin usar ninguna aplicación, y estar más propensos a fallos del sistema debidos a errores en el apartado gráfico.
Toda la filosofía de X Window se basa en la arquitectura cliente/servidor. Esta arquitectura es el modelo de sistema X mediante la cual los clientes, programas de aplicaciones, se comunican con los servidores que controlan parte del hardware.
El programa que habilita un entorno gráfico X-window en un ordenador es el servidor X (X server). Se le llama servidor ya que este programa sólo se dedica a escribir en pantalla lineas, cuadros y funciones gráficas básica. El servidor X ofrece funciones gráficas primarias a las aplicaciones (clientes) que las soliciten y este las muestra en pantalla. El servidor es el programa encargado de gestionar un display. Un display se debe entender como la unidad formada por la o las pantallas y por los dispositivos de entrada, bien sea un ratón, un teclado, un trackball etc. todo este conjunto es un display. Un servidor puede servir a varios clientes a la vez. La otra parte de la arquitectura cliente / servidor es el cliente, básicamente es una aplicación que se esta ejecutando en modo gráfico. El servidor es la unidad de visualización, que puede a su vez estar formada por varios monitores o pantallas físicas.
El servidor se encarga de captar las entradas del usuario y se las pasa a las aplicaciones o clientes X, dicha información proviene de los dispositivos de entrada del display, para que los clientes actúen en consecuencia. Los clientes tienen que captar esta información y operar. La respuesta del cliente es mandada al servidor ordenándole que dibuje dicha respuesta en la pantalla o las pantallas del display. Descodifican los mensajes de los clientes, como las peticiones de información o el movimiento de una ventana. Toda la comunicación entre el cliente y el servidor se realiza en lenguaje formal X window.
Figura 1 : Procesos gráficos en linux y arquitectura cliente sevidor en una máquina.
Todo esta arquitectura se debe a que el sistema X windows tiene una gran flexibilidad de uso en redes. La conexión del Servidor X a los clientes no esta limitada a la misma máquina. Sino que cualquier aplicación o cliente que se este ejecutando en una red se puede conectar a cualquier servidor.Ver figura 2 Cuando decimos conectarse se quiere decir que se puede visualizar en el ordenador que ejecuta un servidor X. Una forma de aprovechar esta flexibilidad es utilizar desde casa un ordenador personal conectado a una gran computadora para aprovechar la potencia de esa computadora desde casa. Esta práctica de compartir aplicaciones esta muy extendida, de hecho existen un tipo de ordenadores cuya única función es ejecutar un servidor X, se denominan "terminales X". Estos ordenadores en ocasiones no disponen de dispositivos de almacenamiento y no son muy potentes con lo que se consigue muchos puestos de trabajo a un precio muy reducido. Otro punto importante es que no existe ninguna razón por la que el sistema X window este restringido al sistema operativo Unix o Linux. De hecho existen servidores X para DOS, Windows Macintosh u OS/2.
Para profundizar más en este aspecto puden consultar los libros de la bibliografía [SHV+93] y en [MP98]
Figura 2 : Procesos gráficos y arquitectura cliente / servidor en una red.
Hay que señalar que la filosofía del sistema X-Window puede parecer engañosa ya que invierte la posición tradicional del cliente y el servidor. Tradicionalmente un servidor ha sido por ejemplo: la gran computadora que tenía los archivos que eran servidos a los clientes, o un servidor de conexión a internet a los que se conecta el usuario. En estos casos el servidor es una computadora remota, con grandes capacidades de procesamiento y almacenamiento que tenía muchas tareas cargadas, y los clientes son los usuarios. El sistema X-Window funciona al revés. El servidor es el usuario con su terminal X y el cliente esta corriendo en una computadora remota, o no, que suele tener grandes capacidades de calculo y almacenamiento y que suele estar cargada de clientes.
Una de las partes más importantes de la arquitectura cliente servidor es la conexión física entre el cliente y el servidor. De ello dependerá en gran medida el rendimiento del sistema. Una conexion de red rápida entre cliente y servidor o que el servidor este en la misma computadora que el cliente hará que el entorno funcione de una manera rápida.
La comunicación entre el cliente y el servidor sistema X-Window se realizan mediante el denominado protocolo X (X protocol). Este protocolo X permite definir el número exacto de bytes necesarios para definir una ventana. El problema es que la programación con este lenguaje es extremadamente complicada y laboriosa.
Se puede comparar el protocolo X al lenguaje máquina. De la misma manera que el ensamblador proporciona potencia a la programación en lenguaje máquina, las funciones Xlib proporcionan la potencia del protocolo X con un coste menor.
Xlib es un biblioteca de unas 300 funciones escritas en C que generan protocolo X, que facilitan la programación básica, las funciones Xlib son el punto de partida para aprender a manejar X Window y aunque sea imprescindible dominarlas. Para programar a más alto nivel nos harán falta otras herramientas.
Existen también las llamadas X Toolkit Intrinsics más comúnmente conocido como Xt intrinsics, son herramientas de más alto nivel ya que nos ayudaran a crear bloques de pantalla llamados widgets, como por ejemplo menús, barras de desplazamiento ,botones etc. La ventaja de esta herramienta es que da a la aplicación una apariencia estándar fácil de ver y de entender, con lo que se gana en facilidad de uso que es lo que se pretende desde el principio al usar el sistema X window. . Para más información se puede consultar en el libro de la bibliografía [SHV+93].
La versión que linux utiliza del sistema X Window es XFree86. Esta es una versión gratuita de la distribución oficial de UNIX que funciona en procesadores compatibles con la tecnología x86 como (AMD,Ciryx o Intel).
Referente al hardware necesario para poder ejecutar el X-window. XFree86 soporta la mayoría de tarjetas que hay en el mercado. Las principales causas que dificultan el desarrollo de XFree86 para algunas tarjetas es que como se distribuye el código fuente, algunas empresas no están dispuestas a mostrar el funcionamiento de su tarjeta. Otra más común es que suele pasar un tiempo desde que sale un producto hasta que esta listo el desarrollo correspondiente. Ya que el código cuesta de escribir y de comprobar. En cuanto a memoria y procesador XFree86 corre en un simple intel 386 con al menos 16 MB de ram. Esta memoria puede ser 8 MB mínimo de principal y 8 MB de memoria virtual o de intercambio (SWAP).
El inicio del sistema X window, implica que se ha de cargar tanto el servidor X como algunos clientes para poder empezar a utilizar el entorno gráfico. Hay un par de maneras principalmente de iniciar el X-window. Quizá la más usada sea mediante el guión de inicio llamado starx .Que se ejecuta en cualquiera de las consolas en modo texto. Este programa no es más que un guión de comandos que ejecuta el Servidor X, inicializa algunos recursos para que serán utilizados por los clientes y también conecta al servidor algún cliente.
Otra manera de iniciar el servidor X es mediante el programa xdm ,o programa gestor de pantallas. Se trata de un programa muy potente que no sólo permite controlar la sesión X en el ordenador local, sino también en los terminales X y todos aquellos ordenadores que se conecten a través de la red. Esto ayuda a tener mayor seguridad en el acceso a la red. El servidor X tiene que interactuar con el hardware del sistema, con lo que tiene que tener privilegios de superusuario para poder funcionar. Esto es lo que ocurre al usar startx a causa de que por defecto se le otorgan unos permisos especiales. De este modo cualquiera puede ejecutar un servidor X, y como el servidor X puede tener bugs (errores), con los que un usuario con suficientes conocimientos podría "engañarle" para ejecutar programas con privilegios de root(administrador del sistema o superusuario).. Lo que hace el xdm concretamente es arrancar el servidor X y un rectángulo en el cual el usuario se ha de identificar ante la máquina y una vez el usuario se identifica mediante su nombre y contraseña se ejecutan los clientes que tenga personalizados el usuario en cuestión.
El gestor de ventanas es uno de las aplicaciones X más importantes, ya que se trata del programa que da el aspecto a todo el entorno gráfico y que controla todas las operaciones relativas al dibujo de ventanas. En linux un gestor de ventanas es un cliente más que está conectado al servidor X. Esto implica que el sistema en si, no esta ligado a ningún gestor de ventanas en particular. Con lo que se consigue una gran personalización del entorno gráfico. Esto tiene el inconveniente de que cambia totalmente la manera de de interpretar las pulsaciones del ratón o del teclado.
5.6.1 Fvwm y sus derivados
Fvwm es una de las familias de gestores de ventanas más usadas dentro de entornos Linux. Fvwm(Fine Virtual Window Manager) y todos sus derivados. son a su vez derivados del twm(tab window manager), que es el gestor que se distribuye con las versiones oficiales de X-window y por tanto con XFree86.
Una de las cualidades de twm es que tiene grandes posibilidad de personalizarse al gusto del usuario. Todo esto unido al hecho de que es un programa de libre distribución ha hecho de twm el ancestro de toda la familia de gestores fvwm
Fvwm fue desarrollado en un principio con la finalidad de reducir el uso de memoria que necesitaba el twm aunque fuese a costa de reducir su capacidad de personalización, darle un aspecto tridimensional y principalmente los escritorios virtuales. Los escritorios virtuales permiten simular un escritorio más grande de lo que cabe en la pantalla con lo que podemos tener ventanas en otros escritorios fuera de la pantalla e intercambiar ventanas entre ellos.
5.6.2 Otros gestores de ventanas
Existen también derivados de fvwm como son el fvwm95, fvwm2, afterstep etc. El más usado entre la comunidad linux es el afterStep. En un principio estaba ideado para emular el sistema operativo NEXTSTEP aunque debido a su atractivo diseño y sus posibilidades se ha ganado gran parte de los usuarios de Linux.
Existe una gran oferta de gestores de ventanas para linux, desde más derivados del twm como son ctwm o vtwm hasta otros que se han diseñado desde cero. También existen gestores de ventanas muy espectaculares que convierten el ordenador en un espectáculo multimedia. El principal gestor de ventanas es el enlightenment que llena la pantalla de atractivos colores y formas.
Un gran inconveniente de los gestores de ventanas es que las aplicaciones no tienen forma de comunicarse entre ellas ni de controlar el comportamiento del gestor de ventanas. Esto se subsana al pasar del gestor de ventanas al gestor de escritorio (Desktop manager). Este ultimo tiene las siguientes ventajas con respecto al gestor de ventanas:
- Provee de un aspecto uniforme a todas las aplicaciones gráficas, dotándolas de un interfaz de uso común.
- Podemos marcar un objeto con el ratón y arrastrarlo hasta cualquier aplicación y ver su contenido allí.
- Permite el acceso transparente a cualquier recurso, ya este en el disco o en otro lugar de la red.
- Distingue entre aplicaciones abiertas y enlaces a recursos.
- Ofrece un interfaz gráfico para configurar y personalizar todos los aspectos del entorno gráfico.
Aunque estas características son muy deseables por la mayoría de usuarios en Linux aún falta camino por recorrer, hasta poseer un entorno con todas estas características. Afortunadamente hay mucha gente trabajando en ello, y ya nos estamos acercando a sistema mejor. Se trata de KDE (K Desktop Environment). KDE provee de un entorno completo, panel de menús, un gestor de tareas, un escritorio orientado a objetos(iconos), un gestor de escritorio que permite ver archivos locales y en unidades de red y un gran sistema de ayuda.Para más información podemos visitar su web en http://www.kde.org
Otro poyecto similar que se esta desarrollando más recientemente es el GNOME. Tiene una gran similitud con el KDE. Debido al apoyo de RedHat y otras compañías este gestor de escritorio hace que tenga un futuro prometedor. De hecho ya es el principal rival del KDE.Para más informacion podemos visitar la página de GNOME en http://www.gnome.org. Hay más gestores de escritorio como el CDE (common desktop envirenment) que debido a su condición de programas comerciales no tienen el apoyo de la mayoría de usuarios.
Todo lo expuesto desde el apartado 5.4 se puede ampliar en el libro de la bibliografía: [MP98].