El Sistema de Ventanas X conocido en inglés como X Window System, es el sistema encargado de mostrar al usuario un entorno gráfico en los sistemas Unix y es independiente del sistema operativo, en otras palabras es el encargado de dibujar los fondos, iconos, ventanas y menús en las aplicaciones ejecutadas. Si no existiera el Sistema de Ventanas X, la única interacción usuario-computador sería por medio de la consola o línea de comandos. Las implementaciones principales para Unix son Xfree86 y X.org. La versión actual del protocolo es la llamada X11, por ser la número 11. Este sistema fue desarrollado a mediados de los 80’s por el Instituto Tecnológico de Massachusetts (MIT, Massachusetts Institute of Technology) y está basado en la arquitectura cliente-servidor.
El modelo o arquitectura cliente-servidor, está basado en un protocolo de red conocido como XProtocol el cual opera transparente a la red, en donde el servidor X se comunica con varios clientes X. Este protocolo consiste en que un servidor X solicita una serie de comandos básicos para generar las ventanas (con sus respectivos parámetros como tamaño, posición, etc.) o controlar eventos. La serie de comandos básicos anteriormente mencionada son las entradas que hace el usuario ya sea desde el teclado, mouse o pantalla táctil. Los clientes X acceden al XProtocol mediante el uso de una librería llamada Xlib, la cual facilita el trabajo del programador de clientes X, ya que no tiene que lidiar con el código binario del XProtocol.
Una de las características principales del XProtocol es la portabilidad. Otro punto de vista a tomar es que el cliente X y el servidor X pueden ser ejecutados en la misma o en diferentes máquinas, posiblemente con diferentes arquitecturas y sistemas operativos. Incluso esta comunicación entre el cliente X y el servidor X puede hacerse por medio de Internet de una forma segura, sobre una sesión encriptada de la red. Otra de las alternativas que se puede realizar con el XProtocol, es que un cliente X puede realizar la función como un servidor X, proporcionando servicios a otros clientes. Esto es conocido como X Nesting traducido al español esto significa Anidado X.
En resumen la terminología del modelo cliente-servidor, no es más que la terminal de usuario siendo el servidor X y las aplicaciones siendo los clientes X (aunque también es válida la relación cliente-servidor anteriormente mencionada entre varias máquinas físicas). Puede que esto cause algunas confusiones a los usuarios que están empezando a conocer el Sistema de Ventanas X, porque puede que los términos no encajen a la perfección y puede que el usuario los entienda al revés.
Implementaciones en otros Sistemas Operativos
Es bastante común asociar el Sistema de Ventanas X con Unix, aunque también existen servidores X dentro de otros entornos gráficos. El sistema operativo OpenVMS de Hewlett-Packard incluye, como su ambiente de escritorio estándar, una versión del Sistema de Ventanas X con el CDE (Common Desktop Environment) conocida como DECwindows. El Mac OS X v10.3 (Panther) y el Mac OS X v10.4 (Tiger) de Apple incluyen X11.app, basado en XFree86 4,3 y X11R6.6, con una mejor integración de Mac OS X, en el Mac OS X v10.5 (Leopard) X.org Apple incluyó el X.org (X11R7.2 Codebase) en vez del XFree86 (X11R6.8). Los servidores de terceros bajo el Mac OS 7, 8 y 9 incluyeron el eXodus de White Pine Software y el MacX de Apple.
Para Microsoft Windows, no existe un soporte para el Sistema de Ventanas de X comercializado, pero tiene la ventaja de que existen muchas implementaciones de terceros, así como de software libre, por ejemplo: Cygwin/X, Xming y WeirdX; al igual que de productos propietarios tales como: Xmanager, Exceed, MKS X/Server, Reflection X, y X-Win32.
Principios
Los principios que Bob Scheifler y Jim Gettys definieron en 1984 acerca de X, los cuales fueron obtenidos y copiados textualmente de la página “X Window System - Wikipedia, la enciclopedia libre” con dirección “http://es.wikipedia.org/wiki/X_Window_System”:
- No añadan nueva funcionalidad a menos que un implementador no pueda completar una aplicación real sin ella.
- Es tan importante decidir qué no es el sistema, como decidir qué es. No respondan a las necesidades de todo el mundo; en lugar de eso, hagan el sistema extensible para que las necesidades adicionales puedan cubrirse en una manera compatible ascendente.
- La única cosa peor que generalizar a partir de un ejemplo es generalizar a partir de ningún ejemplo en absoluto.
- Si un problema no se entiende totalmente, probablemente es mejor no proporcionar ninguna solución en absoluto.
- Si ustedes pueden conseguir el 90 por ciento del efecto deseado para el 10 por ciento del trabajo, utilicen la solución más simple.
- Aíslen la complejidad tanto cuanto sea posible.
- Proporcionen un mecanismo en vez de una política. En particular, pongan la interface de política en las manos de los clientes.
Ventajas
- Cambia la interacción del usuario con el sistema operativo, de línea de comandos a un entorno gráfico.
- El Sistema de Ventanas X no es un gestor de ventanas, pero sí necesita de uno, entonces el usuario puede instalar el gestor de ventanas que prefiera.
- El Sistema de Ventanas X es estrictamente un sistema gráfico, de tal modo que un cliente X podría estar enviando un gráfico a una pantalla, a una impresora o a cualquier otro hardware sin darse cuenta, flexibilizando la salida gráfica.
- El Sistema de Ventanas X ofrece portabilidad, esto hace que sea utilizado como base de la mayoría de entornos de escritorio de GNU/Linux, como GNOME, KDE y Xfce.
Desventajas
- La mayor desventaja, es el hecho de no tener un único gestor de ventanas, esto perjudica a los programadores de clientes X, que desean hacer uso de los recursos de los gestores de ventanas y deben elegir un gestor de ventanas específico para programar y contar que el usuario tenga por los menos las bibliotecas de dicho gestor de ventanas instalado.
Páginas Recomendadas
- Documentación Gentoo Linux -- Guía de configuración del Servidor Xhttp://www.gentoo.org/doc/es/xorg-config.xml)
- Curso del sistema de ventanas X (http://laurel.datsi.fi.upm.es/~fperez/cursoX/indice.html)
Referencias
- Introducción a X (http://es.tldp.org/DEBIAN/%257Ejfs/debian/doc/es/debian-guide-es/html/node188.html)
- X Window System - Wikipedia, la enciclopedia libre (http://es.wikipedia.org/wiki/X_Window_System)
- X.Org Server - Wikipedia, la enciclopedia libre (http://es.wikipedia.org/wiki/X.Org_Server)
- Common Desktop Environment - Wikipedia, la enciclopedia libre (http://es.wikipedia.org/wiki/Common_Desktop_Environment)
- Servidores y clientes X (http://www.tu-chemnitz.de/docs/lindocs/RH73/RH-DOCS/rhl-rg-es-7.3/ch-x.html)
- Servidor X gersoft (http://gersoft.wordpress.com/2009/02/18/servidor-x/)
- Entender X (http://www.freebsd.org/doc/es/books/handbook/x-understanding.html)
- Interfaz gráfica de usuario: el sistema de ventanas X, el gestor de ventanas, y los entornos de escritorios (http://www.linuxlots.com/~barreiro/spanish/gnome-es/newbies/x11.html)