El entorno gráfico X Window System

El X Window System o sistema X Window (Window, no Windows), normalmente llamado las X, es el entorno gráfico de los sistemas UNIX. Creado en el MIT en 1984, posteriormente se han encargado de su desarrollo y mantenimiento diversos consorcios de fabricantes (X Consortium, Open Group, X.org Foundation). Actualmente se encuentra en su versión 11.6, por lo que se suele denominar X11 o X11R6.

FreeDesktop (freedesktop.org) promueve estándares de escritorio para que aplicaciones de distinta procedencia interactúen correctamente entre sí.

El sistema X Window se encarga de mostrar la información gráfica, está construido con arquitectura cliente-servidor y es una capa totalmente independiente del Sistema Operativo. Cuando instalemos en una máquina el sistema X Window se instalarán tres componentes:

  1. el servidor X: es el servidor gráfico.
  2. el display manager: se encarga del login gráfico.
  3. el cliente X (o window manager): es el cliente gráfico.

Es muy recomendable leer los HOWTOs sobre el tema:

El servidor X

El servidor X (paquete virtual xserver, paquete xorg) es el servidor gráfico, el programa que se encarga realmente de dibujar en la pantalla y de manejar la entrada de los dispositivos de hardware (por ejemplo, dibuja el cursor mientras movemos el mouse). Arranca mediante un script ubicado en el directorio /etc/rcS.d, de modo que se ejecuta antes que los scripts asociados al runlevel.

Cada distribución sólo trae un servidor X. Actualmente el servidor X es X.org (x.org), un fork de la última versión libre de XFree86 (xfree86.org) más avanzado en su desarrollo y en el soporte de nuevo hardware. XFree86 fue el servidor X utilizado en Linux hasta que su licencia dejó de ser GPL.

El display manager

El display manager (paquete virtual x-display-manager), es el programa que se encarga del login gráfico. Arranca mediante un script ubicado en el directorio /etc/rc2.d, por lo que se ejecuta al entrar en el runlevel. En Debian hay cuatro:

  • Gdm (paquete gdm): display manager de GNOME. Se configura desde Sistema / Administración / Ventana de entrada (comando gdmsetup).
  • Kdm (paquete kdm): display manager de KDE. Se configura desde Inicio / Preferencias del sistema / Administrador de acceso.
  • Wdm (paquete wdm): display manager de WindowMaker.
  • Xdm (paquete xdm): display manager del X Window System.

Si tenemos varios display manager instalados, uno de ellos será el display manager por defecto. Este dato se almacena en el archivo:

/etc/X11/default-display-manager

cuyo contenido será (por ejemplo):

/usr/bin/gdm

El display manager presenta un menú de arranque donde figuran todos los entornos de escritorio que tenemos instalados en nuestra máquina, permitiéndonos elegir uno de ellos. El display manager obtiene la información relativa a cada entorno de escritorio del archivo:

/usr/share/xsessions/<window_manager>.desktop

Hay uno para cada entorno de escritorio que tengamos instalado en nuestra máquina. Por ejemplo, para FluxBox el archivo se llama:

/usr/share/xsessions/fluxbox.desktop

y su contenido es:

[Desktop Entry]
Encoding=UTF-8
Name=Fluxbox
Comment=Highly configurable and low resource X11 Window manager
Exec=/usr/bin/startfluxbox
Terminal=False
TryExec=/usr/bin/startfluxbox
Type=Application
[Window Manager]
SessionManaged=true

El cliente X

El entorno de escritorio o desktop environment proporciona el interfaz gráfico de usuario o GUI (Graphical User Interface). Los entornos de escritorio tienen varios componentes, siendo el principal el window manager (paquete virtual x-window-manager), que es el cliente X propiamente dicho, el que se encarga de comunicar al usuario con el servidor X. El encargado de lanzar el window manager es el display manager. El window manager se encarga de:

  • manejar las ventanas: crearlas, moverlas, cerrarlas, minimizarlas, qué ventana está encima, cuál tiene el foco, cuál recibe las entradas del teclado, etc.
  • la apariencia de las ventanas (look and feel): bordes, color, tamaño, etc.
  • el fondo del escritorio (background), el menú contextual, el panel (barras de herramientas, barra de tareas, accesos directos), los atajos de teclado (shortcuts) y los escritorios virtuales (workspaces).
  • lanzar programas cuando el entorno gráfico se inicia, ya sea por medio de un script o mediante un directorio de autoinicio.
  • el window manager no dibuja los iconos del escritorio: de eso se encarga el desktop icon manager.

En Linux hay gran cantidad de entornos de escritorio:

  1. entornos de escritorio pesados: además del window manager traen numerosas herramientas integradas entre sí que proporcionan todo lo necesario para trabajar en el entorno gráfico, como iconos, session manager (que se encarga de guardar el estado de las aplicaciones cuando hacemos logout y restaurar la sesión cuando nos logueamos de nuevo), file manager, framework (entorno de desarrollo, protocolos para que se comuniquen entre sí las aplicaciones y librerías gráficas) y aplicaciones como editor de textos, navegador, multimedia, gráficos, etc.

    Los entornos de escritorio pesados necesitan más recursos para ejecutarse que los entornos de escritorio ligeros (al menos 128 MB de RAM), se configuran mediante herramientas gráficas y los más utilizados son:

    • GNOME: el window manager es Metacity.
    • KDE: el window manager es Kwin.
    • Xfce: el window manager es Xfwm.
  2. entornos de escritorio ligeros: constan del window manager y poco más. Son rápidos, ligeros y estables, con un consumo muy bajo de recursos (sólo necesitan 32-64 MB de RAM), no tienen iconos y normalmente se configuran editando manualmente los archivos de configuración. Algunos son:
    • IceWM.
    • FluxBox y otros derivados de BlackBox, como OpenBox y Waimea.
    • WindowMaker y similares (Twm, Vtwm, Fvwm, Fvwm-Crystal, AfterStep).
    • Enlightenment.
  3. entornos de escritorio 3D: si tenemos una tarjeta gráfica con aceleración y queremos efectos impactantes disponemos de Compiz Fusion, un entorno de escritorio con efectos 3D espectaculares.

Recursos

Cómo iniciar sesión X Window

Al estar construido el sistema X Window con arquitectura cliente-servidor es posible tener abiertas varias sesiones X Window, incluso bajo diferentes usuarios y con diferentes window manager, tanto locales como remotas o anidadas.

Una sesión X Window local se puede iniciar de 3 maneras:

  1. Utilizando el comando xinit.
  2. Utilizando el comando startx.
  3. Utilizando un display manager (como Gdm).

Tenemos varios métodos para iniciar una sesión X Window remota:

  1. Utilizando un display manager (como Gdm).
  2. Accediendo vía SSH.
  3. Mediante VNC.

Para iniciar una sesión X Window anidada dentro de otra tenemos:

  1. Xnest.

Artículos en la categoría "El entorno gráfico X Window System"

  1. Sesión X Window local con xinit
  2. Sesión X Window local con startx
  3. Sesión X Window local con display manager
  4. Sesión X Window remota con display manager
  5. Sesión X Window remota con SSH
  6. Sesión X Window remota con VNC
  7. Sesión X Window anidada con Xnest
  8. Multi-monitor en Linux
  9. Multi-monitor con Xinerama
  10. Multi-monitor con RandR
  11. Multi-monitor con Nvidia settings
  12. GNOME
  13. KDE
  14. Xfce
  15. IceWM
  16. FluxBox
  17. Enlightenment
  18. WindowMaker
  19. Compiz Fusion

5 Comments:

  1. Manuel Vazquez

    Es una duda con respecto al articulo sobre las X en un sistema Linux. En ese articulo explicas la forma de abrir más de una sesión a un mismo equipo. La cuestión es si por accidente se desconecta uno de las X, y en el caso de que no se cierra la misma, ¿como se conecta uno a esa sesión? Aún no he encontrado una resolución a dicho problema.

    Esto lo pregunto por que estoy trabajando en un proyecto de terminales ligeros parecido a LTSP (TCOS) y hemos detectado ese comportamiento cuando se corta la conexión.

    1 saludo.

  2. Que tal si agregan otro tema que trate sobre DirectFrameBuffer (DirectFB) http://www.directfb.org

    Es interesante que elaboren una documentacion clara de como instalarlo

  3. Pingback:Servidor X

  4. Pingback:honysu.wordpress.com

  5. Pingback:Definición de GNU - Qué es, Significado y Concepto