En este capítulo se discutan conceptos detra del sistema X-Windows, que lo hacen ser muy distinto de otros GUI (Graphical User Interface - Interfáz Gráfico de Usuario). Cabe mencionar aquí otros sistemas de interfáz de usuario gráfico en el ámbito de las computadoras personales: MS-Windows con todas sus variantes y derivaciones, MacOS de Apple Computers, Plan9, NeXT-Step (ya no se produce), y finalmente X-Windows, que por su larga historia y su versatilidad se encuentra en uso desde computadoras personales, hasta en Workstations y computadoras grandes, en su mayoría con sistemas operativos de la familia Unix.
X-Windows no es parte del sistema operativo, sino una aplicación, que establece una “norma” (API) para el acceso a recursos hardware gráficos - la tarjeta de video, y de entrada - teclado, ratón, joystick, grafic-pads. Consiste de esta manera de un “servidor” gráfico, al cual pueden acceder programas “clientes” para interactuar con las usuarias. X-Windows tiene una alta integración en el ambiente de red, por lo que el servidor y el cliente no tienen que estar ubicados en la misma computadora.
Las distribuciones de Linux incluyen el sistema XFree86, que es un derivado del original X-Windows, específicamente adaptado para computadoras de la plataforma x86. El interfáz gráfico ya viene preconfigurado para trabajar de una forma “workstation” o “personal computer”, o sea, su configuración se orienta en lo costumbrado de MS-Windows: una persona, una computadora. Estas preconfiguraciones son normalmente sencillos en su configuración, al menos en cuanto al Hardware, ya que hay una vasta cantidad de Chipsets de Video diferentes y XFree86 no desarrolla(ba) facilidades de instalar un driver (gestor) correcto. La adaptación de X-Windows a una tarjeta gráfica específica entonces puede resultar una tarea tediosa.
Quien está interesado solamente en una configuraciones Workstation estándar pero encuentra dificultades con XFree86 puede pasar directamente al capítulo de la configuración de Hardware (Tarjetas gráficas).
En los próximos subcapítulos se explicará la arquitectura del sistema X-Windows en más detalle para dar el fundamento a la configuración más avanzada de los diferentes componentes que integran el sistema operativo, la red, el interfáz gráfico y las aplicaciones en un sistema operativo Linux.
X-Windows fue percebido en el MIT - Massachusets Institute of Technologie, donde posteriormente los derechos fueron trasladados a X-Consortium Inc. y finalmente a la fundación de Software abierto: Open Software Foundation1.
En el capítulo 4.2 se hace mención de la estructura cliente - servidor del sistema X-Windows. ’X’ es el programa servidor, que “captura” los recursos pantalla, teclado, dispositivo puntero (y eventualmente otros) a la hora de arrancar, y permite a los programas de aplicación solamente el acceso a través de un protocolo específico con él. En cambió provee funciones avanzados para la graficación que pueden ser usados por los programas.
Para que un programa (cliente) pueda acceder a las funciones gráficas, tiene que establecer una conexión con el servidor X. Con un servidor pueden conectarse zero, uno o varios clientes; en efecto normalmente son una gran cantidad, ya que cada ventana representa un cliente.
La conexión puede realizarse de varias formas diferentes.
Se puede utilizar solamente la “interior” parte de este esquema y correr un Servidor X. Para esto existen dos script: xinit y xstart. El segundo utiliza el primero para lanzar un servidor X local y algunos programas clientes, generalmente solo un gestor de ventanas o eventualmente de sessión. xstart provee un ambiente mas “seguro” y elaborado. La configuración de este modo de trabajo se efectua a través de los archivos xinitrc (global) y .xinitrc (individual por usuario).
Finalmente es posible correr solo una aplicación gráfica sin uso de un manejador de ventanas.
xdm es el “X Display Manager”, un programa que maneja conexiones entre clientes de X-Windows y Servidores a través de la red con un protocolo tcp/ip llamado xdmcp - “xdm - control protocol”.
Vemos la parte de la conexión entre el servidor X y el xdm.
En la forma más sencilla, el servidor X corre en la misma máquina como el xdm. Normalmente entonces xdm lo lanza desde el archivo /etc/X11/xdm/Xservers. La comunicación entre los dos programas se establece a traves de un socket unix, o sea el núcleo del sistema y es muy eficiente. De esta manera, varias tarjetas de video, pueden ser manejadas por un xdm.
La segunda opción es para un X server solicitar directamente una conexión con un server a través de la opción de la línea de commando -query. Ej. “X -query toa.magma.com.ni”. Si en la computadora toa.magma.com.ni corre un xdm y accepta la conexión desde la computadora solicitante entonces se establece la conexión a través de la red. El servidor X tiene que lanzarse entonces de otra manera, p.e. a través del archivo /etc/inittab. Lógicamente pueden residir los dos programas en la misma computadora.
La tercera opción es, que un servidor X solicita una conexión indirecta (X -indirect toa.magma.com.ni). De esta manera el xdm de contacto retransmite la solicitud de negociación a todos los xdm en la red, el servidor X por lo tanto se hace “público” en todas las computadoras conectadas (con xdm corriendo).
Vemos la parte de los programas clientes.
Estos solamente se pueden lanzar desde dentro de una “session”. Para iniciar una sessión se requiere de un proceso de autentificación del usuario, en parte por la comprobación de derecho al acceso al recurso (del X server), pero en otra parte para preparar el ambiente de trabajo para el usuario, quiere decir las configuraciones individuales de todos los programas y aplicaciones.
El usuario que está sentado frente a un terminal en el cual corre un X server. Si el servidor usa conexión:
Después de la autentificación (exitosa) se lanzan programas definidos en /etc/X11/Xsession, que normalmente proveen un gestor de sessión, un gestor de ventanas y aplicaciones iniciales según configuración individual de cada usuario. Todos estos programas son clientes conectados con el servidor X a través de uno (local/directo) o dos (indirecto) servidores xdm. Cuando el último cliente hay terminado, lo que pasa normalmente al “cerrar” la sessión (el gestor de sessión) el servidor X se desconecta del servidor xdm y vuelve a conectarse con la solicitud directa o indirecta, o en caso de un servidor local va a ser lanzado de nuevo desde xdm.