Sistema X

El sistema X-Window
Información sobre la plantilla
SistemaX1.JPG
Desarrollador
Apple Inc.
Información general
Lanzamiento oficial1999
NúcleoBasado en Mach y BSD
Interfaz gráfica por defectoAqua
IdiomasEspañol


Orígenes de X

X requiere que se usen los siguientes nombres cuando se refiere al sistema X Windows:

  • X
  • X Windows System
  • X Version 11
  • X Windows System, Version 11
  • X11

Por tanto, cualquiera de estos nombres es sinónimo del mismo software. X Windows SystemTM es una marca registrada de X Consortium, Inc. El X11 se desarrolló gracias a la cooperación entre DEC (Digital Equipment Corporation, luego adquirida por Compaq) y el proyecto Athena del MIT (Massachussets Institute Of Technology). La primera versión, la X11R1, salió en septiembre de 1987. Desde la versión 6 (X11R6) la X Consortium Inc y desde 1996 The Open Group continuaron con el desarrollo del X Window System.

Existe una implementación libre del sistema X para sistemas Unix y se denomina XFree86. Este se sigue desarrollando por programadores en todo el mundo, que se unieron en 1992, formando el Xfree86-Team. De esta unión surgió en 1994 la empresa The XFree86 Proyect Inc cuyo objetivo es poner Xfree86 a la disposición de un amplio público y contribuir con el desarrollo e investigaciones del sistema X Windows. Es de esta manera que el sistema operativo GNU/Linux adopta esta distribución libre del sistema X para brindar un entorno gráfico más amigable.

X Window System (en español sistema de ventanas X) es un software que fue desarrollado a mediados de los años 1980 en el MIT para dotar de una interfaz gráfica a los sistemas Unix. Este protocolo permite la interacción gráfica en red entre un usuario y una o más computadoras haciendo transparente la red para éste. Generalmente se refiere a la versión 11 de este protocolo, X11, el que está en uso actualmente. X es el encargado de mostrar la información gráfica de forma totalmente independiente del sistema operativo. X fue diseñado primariamente para implementar clientes ligeros, donde mucha gente usaba simultáneamente la capacidad de procesamiento de un mismo computador trabajando en tiempo compartido. Cada persona usaba un terminal en red que tenía capacidades limitadas para dibujar la pantalla y aceptar la entrada del usuario. Debido a la ubicuidad del soporte para el software X en Unix, es usado en los computadores personales incluso cuando no hay necesidad del tiempo compartido.

El sistema de ventanas X distribuye el procesamiento de aplicaciones especificando enlaces cliente-servidor. El servidor provee servicios para acceder a la pantalla, teclado y ratón, mientras que los clientes son las aplicaciones que utilizan estos recursos para interacción con el usuario. De este modo mientras el servidor se ejecuta de manera local, las aplicaciones pueden ejecutarse remotamente desde otras máquinas, proporcionando así el concepto de transparencia de red. Debido a este esquema cliente-servidor, se puede decir que X se comporta como un terminal gráfico virtual.

El hecho que exista un estándar definido para X permite que se desarrollen servidores X para distintos sistemas operativos y plataformas, lo que hace que el código sea muy portable. Por ejemplo. permite tener clientes X ejecutándose en un potente servidor UNIX mientras los resultados son visualizados en una PC de escritorio con cualquier otro sistema operativo funcionando. La comunicación entre el cliente X y el servidor se realiza por medio de un protocolo conocido como Xprotocol, que consiste en una serie de bytes interpretados como comandos básicos para generar ventanas, posicionarlas, o controlar eventos. Los clientes X acceden al Xprotocol mediante el uso de una biblioteca llamada Xlib, que evita al programador de clientes X tener que lidiar con el código binario del Xprotocol. Sin embargo, los aspectos de decoración de ventana y manejos de ventanas no están definidos en esta biblioteca.

X no es un gestor de ventanas, necesita de uno para controlar el manejo de ventanas. Esto trae la ventaja de que permite al usuario instalar uno o más administradores de ventanas de su preferencia. También trae la ventaja de que hace de X 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.

Interfaces del usuario

X es primariamente una definición de primitivas de protocolo y gráficas, y deliberadamente no contiene especificaciones de diseño de interfaz de usuario, como estilos de botón, menú, barra de título para las ventanas. En vez de eso, un software de aplicación (tal como los manejadores de ventana, Widget toolkits de GUI y ambientes de escritorio, o las interfaces gráficas de usuario específicas de una aplicación) definen y proporcionan tales detalles. Como resultado, no hay interfaz X típica y varios ambientes de escritorio han sido populares entre los usuarios. Un manejador de ventana controla la colocación y la apariencia de las ventanas de aplicación. Esto puede resultar en interfaces semejantes a las de Microsoft Windows o Macintosh (los ejemplos incluyen Metacity en GNOME, KWin en KDE, Xfwm en Xfce, o Compiz) o tener controles radicalmente diferentes (tales como tiling window manager, como wmii o Ratpoison). Los manejadores de ventana abarcan en sofisticación y complejidad desde los más simples (ej., twm, el manejador de ventana básico suministrado con X, o evilwm, un manejador de ventana extremadamente liviano) hasta los ambientes de escritorio más completos tales como Enlightenment.

Muchos usuarios usan X con un ambiente de escritorio, que, independientemente del manejador de ventana, incluyen varias aplicaciones usando una interfaz de usuario consistente. GNOME, KDE y Xfce son los ambientes de escritorio más populares. El ambiente estándar de Unix es Common Desktop Environment (CDE). La iniciativa freedesktop.org se dirige a la interoperabilidad entre el escritorio y los componentes necesarios para un escritorio X competitivo.

Puesto que el X es responsable de la interacción entre el teclado y el ratón con el escritorio gráfico, ciertos atajos de teclado han llegado a estar asociados con X. Control-Alt-Backspace típicamente termina la sesión actualmente corriendo en X, mientras que el Control-Alt conjuntamente con una tecla de función cambia a la consola virtual asociada. Sin embargo, esto es un detalle dejado al diseño de una implementación de servidor X y no es universal; por ejemplo, las implementaciones de servidor X para Windows y Macintosh típicamente no proporcionan estos atajos de teclado.

X Window S

XWindow permite utilizar un ambiente gráfico bajo Unix (Linux), a diferencia de la clásica Terminal ASCII que es conocida para todos los sistemas operativos *nix. El detalle técnico más importante que hay que reconocer de X es que utiliza una metodología cliente-servidor, esto es, existe un servidor X que es el encargado de generar y procesar gráficas, requisiciones, seguridad, etc; y un cliente X que solicita y recibe todas las requisiciones del servidor X. Esto permite que cualquier Cliente X sea capaz de comunicarse a través de Red (TCP/IP) con un servidor X, el hecho que se de este tipo de comunicación no implica que este proceso no pueda ser llevado acabo en el mismo "Host" (computadora física), inclusive casi todos los ambientes gráficos son llevados acabos en un mismo "Host", esto es, el Cliente X y Servidor X operan en la misma computadora física, pero es de extrema importancia conocer que existe una división Cliente | Servidor aunque se este trabajando en el mismo "Host".

Configuración del Servidor X

Una vez que haya instalado todas las librerías o RPM's relacionados con X debe configurar la instalación del Servidor X, la utileria más común y fácil de utilizar es Xconfigurator, esta utileria genera el archivo de configuración XF86Config ubicado en el directorio /usr/X11R6/lib/X11 (XF86 es el servidor X que es distribuido con Linux), que contiene el tipo de tarjeta de vídeo, resolución de monitor, tipo de "Mouse" y otras configuraciones de su ambiente gráfico; el archivo XF86Config contiene todos los valores que serán utilizados por el servidor X, sus detalles de configuración son extremadamente extensos, por lo tanto si desea realizar algún cambio manual se recomienda leer el manual de configuración ejecutando # man XF86Config, cabe señalarse que los cambios manuales son utilizados muy poco, ya que la utilería XConfigurator casi siempre genera un archivo XF86Config razonable. Otra alternativa para Servidores X es : Accelerted-X for Linux desarrollado por Xi Graphics.

Ejecución Servidor X

Para ejecutar el Servidor X se utiliza el comando xinit, xinit inicia el servidor X (ambiente gráfico) bajo la terminal virtual (tty) F7, por lo tanto es posible alternar entre esta terminal gráfica y las otras 6 tty's ASCII (F1-F6) utilizando Ctrl-Alt-(F1-F7).

Al ejecutarse xinit también se lee un archivo llamado .xinitrc , este archivo contiene los clientes x que deben ser ejecutados bajo la terminal (tty(F7)), este archivo (.xinitrc) es buscado en el "Home Directory" (definido en /etc/passwd) del usuario que esta ejecutando xinit, en dado caso de no encontrarse en este directorio se lee el xinitrc "default" que se encuentra en el directorio /usr/X11R6/lib/X11/, este archivo "default" contiene únicamente un cliente X que es una ventana muy similar a un shell.

Ambientes de Ventana ("Window Managers")

Si ejecutó el comando xinit sin modificar el archivo .xinitrc habrá observado que el ambiente gráfico es casi NULO. Los clientes X que puede ejecutar en su ambiente son extensos, solo que para que sean activados debe definirlos dentro del archivo .xinitrc, con la intención de evitar definir una gran cantidad de clientes dentro de este archivo .xinitrc, se han desarrollado Ambientes de Ventanas ("Window Managers"), estos Ambientes de Ventanas agrupan cientos o miles de clientes X para otorgar un ambiente gráfico integral. Algunos de estos Ambientes de Ventanas son: fvwm2, afterstep, twm, wmaker, wmx y algunos otros. Si ejecuta xinit observará un ambiente gráfico un poco más dinámico, estos ambientes de ventanas están localizados en el directorio /usr/X11R6/bin; dentro del archivo. xinitrc es posible definir un sin numero de posibilidades desde colores de fondo hasta clientes x que deben ser ejecutados automáticamente (como Netscape Navigator), no solo esto , sino como cada usuario puede definir su archivo .xinitrc, es posible definir un ambiente de trabajo en base a especificaciones de cada usuario del sistema.

X - Puntos básicos

Una sesión de X esta compuesta por lo general de varias ventanas donde cada una de ellas ejecutan un programa aislado. Al igual que los programas en cualquier otro sistema, los programas que se ejecutan en X varían en cuanto a su funcionalidad. Algunos necesitan de la interacción con el usuario y otros solo despliegan datos en la pantalla. A la ventana de fondo se la conoce como ventana raíz (root windows). Las ventanas de aplicación se despliegan encima de la ventana raíz. Al igual que los procesos en Unix estas ventanas están agrupadas o relacionadas de acuerdo a una jerarquía. Así es que la ventana raíz es el padre de todas las demás ventanas. Ahora, para entender un poco mas este tipo de funcionamiento pasaremos a explicar en que consiste.

X esta formado de dos partes: un lado servidor y un lado cliente. La funcionalidad básica es familiar a la forma en que trabajan todos los modelos cliente-servidor, en el sentido de que el servidor X tiene determinados recursos que proporciona al cliente. Debido a que el servidor X esta integrado a las pilas TCP/IP las peticiones pueden venir de cualquier cliente y pueden ser solicitadas a cualquier servidor. Además, debido a que X, además de ser un programa específico, define además un protocolo, los clientes pueden comunicarse con servidores X en otro tipo de plataforma. El servidor actúa como una interfaz entre los programas clientes y el hardware físico.

Cuando se proporcionan datos, ya sea por medio del teclado o el mouse, el servidor acepta la entrada y es responsable de pasarla al cliente. Esta información se pasa al cliente como un evento. Una tecla apretada o el movimiento del mouse generan un evento ante el cual reaccionará el cliente.

Gestor de ventanas

Ambientes de Ventanas que agrupan cientos o miles de clientes X para otorgar un ambiente gráfico integral

El windows manager (Gestor de ventanas) es un cliente especial X; por su cuenta no dibuja los controles de las ventanas (barra de título y bordes) ni minimiza, maximiza, levanta, ni otras taras específicas. Esto es delegado al gestor de ventanas. Antes de que los entornos de escritorio se vuelvan más comúnmente usados, el gestor de ventanas era la pieza principal de software responsable para determinar el aspecto y comportamiento de la interfaz gráfica de usuario, sin embargo, los gestores de ventanas pueden solamente atender el aspecto y comportamiento en el nivel de ventana.

Dentro de la consistencia de la aplicación se deriva del uso de un conjunto común de herramientas, que no era una característica de las aplicaciones de X previamente. Hay muchos gestores de ventanas disponibles, tales como Window Maker, Enlightenment, y FVWM.

Gestor de pantalla

El Display manager (gestor de pantalla o entorno de escritorio) es un programa que sirve para iniciar una sesión de usuario directamente en el Sistema X Windows. El gestor de pantalla predeterminado de X es xdm. Sin embargo, la mayoría de las distribuciones de GNU/Linux utilizan otros display managers, tales como gdm (GNOME Display Manager) o si no kdm (KDE Display Manager). Éstos permiten, entre otras cosas, seleccionar el administrador de ventanas o entorno de escritorio antes de comenzar una sesión. En general el display manager es lanzado como un servicio del proceso init.

Terminales X

Un dispositivo de computación de red, Network Computing Devices (NCD), el terminal X NCD-88k Artículo principal: X terminal Un terminal X es un cliente ligero que solamente ejecuta un servidor X. Esta arquitectura llegó a ser popular para construir paquetes de terminales baratos para que muchos usuarios usaran simultáneamente el mismo gran servidor de computadora para ejecutar programas de aplicación como clientes de cada terminal X. Este uso está muy cerca con la intención original del proyecto MIT. Los terminales X exploran la red (el dominio de difusión local) usando el protocolo de control del X Display Manager para generar una lista de anfitriones disponibles que son permitidos como clientes. Uno de los anfitriones de clientes debe ejecutar un X display manager. El hardware dedicado para terminales X ha llegado a ser menos común; un PC o un moderno cliente ligero con un servidor X proporciona típicamente la misma funcionalidad a igual o más bajo costo.

Ambientes de Trabajo

Más allá del Ambiente de Ventana ("Windows Managers"). Si bien son benéficos los ambientes de ventana, son tediosos en la manera que deben ser definidos los clientes X , para ofrecer una solución más integral han surgido ambientes de Trabajo, algunos de estos ambientes de Trabajo son: GNOME y KDE, cabe señalar que estos ambientes de trabajo no son ambientes de ventana , inclusive requieren de un ambiente de ventanas ("Window Manager"); es posible ejecutar un ambiente de trabajo (GNOME o KDE) bajo cualquier ambiente de ventanas, aunque KDE posee su propio ambiente de ventanas llamado kwm, no es obligatorio ejecutarlo bajo este esquema. De la misma manera en que xinit utiliza .xinitrc para buscar detalles específicos de arranque, estos ambientes de trabajo también utilizan archivos como .kde o .gnome que permiten a cada usuario definir el comportamiento (color de fondo,tipo de letra..) que observará en pantalla.

startx

Para facilitar la ejecución tanto del servidor X, clientes X y ambientes de trabajo se utiliza el comando startx startx es un script que contiene las secuencias que deben ser utilizadas al invocar un ambiente gráfico, esto es, se encarga de ejecutar xinit, el ambiente de ventanas (fvwm2,afterstep,twm), buscar los archivos .xinit o .kde bajo el "Home Directory" del usuario que invoque startx e invocar un Ambiente de Trabajo si este ha sido definido.

xhost

Debido a la estructura cliente-servidor de Xwindows, al servidor X pueden establecerse varias sesiones; cuando solo se esta utilizando un "Host" esto no suele ser problema, ya que la ejecución de startx inicia tanto el servidor X como el (los) cliente X, sin embargo cuando se opera en un ambiente de Red es posible que existan 10 o 20 usuarios que deseen utilizar este servidor X y debido a esto es necesario establecer un esquema de seguridad. xhost permite definir este acceso de seguridad, el comando xhost define que tipo de usuarios tendrán acceso al servidor X, como se menciono anteriormente, cuando solo se utiliza startx se asume que ese usuario esta permitido conectarse al servidor X, esto es debido a que se ejecuta el servidor X y cliente X por el mismo usuario, sin embargo si el servidor X ya se encuentra activo, xhost determina si el usuario esta permitido acceso. Debido a que xhost ofrece extensas configuraciones se recomienda observar el manual de xhost; NOTA: Si desea permitir acceso a su Servidor X para cualquier usuario ejecute (como raíz): xhost +, esto elimina la revisión de usuarios.

Requisitos de Hardware

X puede operar con 32 MB de RAM física pero de seguro que lo que menos se podrá hacer es trabajar de manera cómoda, ya que al abrir un par de ventanas notaremos como caerá notablemente el rendimiento al comenzar a intercambiar información con el disco rígido. Por esto, la memoria RAM es un punto clave a tener en cuenta a la hora de instalar X. 64 MB de RAM harán que se pueda trabajar cómodamente en un entorno que requiera de pocos recursos como el WindowMaker. En lo que respecta la placa de video, se tendrá que buscar alguna que tenga pocos problemas de configuración. Hoy día casi todas las placas de video (los chips de video, para ser más específicos) soportan el modo VESA 2.0, con lo cual se las puede hacer trabajar con el driver de esta norma a 1024x768 píxeles, en 32 bits de colores, aunque de esta manera estaríamos desperdiciando parte de la potencia de nuestro controlador de video En lo que respecta a fuerza de cómputo pura, un sistema Pentium será suficiente para un entorno poco exigente y se requerirá de un Pentium III o superior para entornos como el KDE y el Gnome que son monstruos devoradores de recurso.

Mecánica de X

Esencialmente, lo que X proporciona es un programa (el servidor X) el cual controla la placa de vídeo y realiza tareas de dibujo gráfico tales como dividir la pantalla en ventanas, dibujar el puntero del mouse, dibujar líneas, acceder al teclado, etc. Corre el driver de vídeo real, así como también proporciona una interfaz a través de la cual otros programas pueden suministrar comandos de dibujo (usando el protocolo X11), obtener entrada, etc, sin tener que saber qué hardware está usándose. Los programas que se conectan al servidor X son llamados clientes X, y pueden incluir aplicaciones tales como procesadores de texto, juegos, etc.

Capacidades de red

X es notable en un número de maneras como sistema de interfaz gráfica. Una característica interesante es que, dado que el protocolo X está diseñado para operar como una secuencia serializada de comandos, soporta transparentemente trabajar a través de una red. Así, un cliente X puede ejecutar una máquina remota casi de la misma manera que uno que se ejecuta localmente. Sus ventanas aparecerán en la pantalla igual que otros programas que se ejecutan en el sistema local. Sin embargo la ejecución local usará más eficientemente el mecanismo de comunicación tales como los sockets de Unix y SHM que un programa remoto, y por lo tanto será significativamente más rápido y eficiente.Esta capacidad de red combinada con sistemas operativos multiusuarios verdaderos permite un uso mucho más eficiente del hardware. Muchos usuarios de escritorio solamente usan un pequeño porcentaje del potencial de la CPU de su máquina. Usando X, una PC ordinaria puede dejar que unos 30 usuarios se registren remotamente y aprovechan más la utilización de la CPU.

Esto se usa ampliamente en laboratorios de computación y oficinas donde muchos usuarios están cerca. Además, se puede usar X para permitir que una más de una pantalla por máquina con múltiples interfaces gráficas multi-head, de manera que el costo del hardware cubre más usuarios. El protocolo es extensible, se le pueden agregar prestaciones a medida que va progresando. Por ejemplo, algunas características recientes se agregaron para incluir soporte para fuentes con anti-alias, fuentes truetype, mezcla alfa, y gráficos 3D acelerados por hardware.

XFree86

XFree86 es un proyecto para producir un sistema de ventanas libre compatible con el sistema X Windows. Es compatible con el estándard X11R6. X11R6 viene con una conjunto completo de programas, tales como un gestor de ventanas (twm), un emulador de terminal (xterm), un gestor de acceso (xdm) y otras herramientas. Recientemente, los desacuerdos acerca de la licencia de software de XFree86 ha llevado a algunas distribuciones de Linux a considerar alternativas a XFree86.

X.org

Xorg es un sistema gráfico derivado de una ramificación en el proyecto XFree86. El Xorg es muy parecido a XFree86, incluso muchos de los desarrolladores de XFree86 se trasladaron a Xorg en el momento de la división. Hoy en dia este sistema es cada vez más popular, y forma parte de la mayoria de las distribuciones. Gentoo Linux, Fedora Corel, Slackware, SuSE, Mandriva, Cygwin/X, Ubuntu y FreeBSD ya lo utilizan y Debian sólo en su versión estable.

Fuentes