Tema 110: El sistema X Window

De XTech Capacitacion

Tabla de contenidos

X Window System

El sistema X Window (abreviado X o X11 para la versión 11) es un método independiente para proporcionar capacidades gráficas a un sistema de operativo, siendo al mismo tiempo transparente para la red. Es usado mayoritariamente en Unix, y sistemas estilo Unix tales como Linux. X mismo se remonta a 1984 en el MIT.

Aunque otros sistemas para proporcionar capacidades gráficas son posibles, el sistema de interfaz gráfica estándar en Linux es el X Window System.


Mecánica de X

Esencialmente, lo que X proporciona es un programa (el servidor X) el cual controla la placa de video y realiza tareas de dibujo gráfico tales como dividir la pantalla en ventanas, dibujar el puntero del mouse, dibujar líneas, accder al teclado, etc. Corre el driver de video 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 que 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.


Window managers

El window manager (administrador de ventanas) es un cliente especial - X por su cuenta no dibuja los controles de las ventanas (barra de de título y bordes) ni minimiza, maximiza, levanta, ni otras taras específicas - esto es delegado al administrador de ventanas. Antes de que los entornos de escritorio se vuelvan más comúnmente usados, el adminsitrador 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 administradores 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. Muchos administradores de ventanas están disponibles, tales como Window Maker, Enlightenment, y FVWM.


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 en casi la misma manera que uno que se ejecuta actualmente. 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 pemite 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 se logueen remotamente y aprocechan más ña 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. Por ejemplo, una PC desnuda con procesador de 64 bits, 512 MB de RAM y sin disco rígido se puede usar como un cliente delgado con placas de video extras y puertos USB para los ratones y los teclados. Si el cliente delgado cuesta USD 600 y tiene seis usuarios activos simultáneamente, el costo del cliente delgado por usuarios es solamente de USD 100 más el costo de el conjunto mouse/teclado/monitor. Usando motherboards multi-core multi-socket en un servidor uno puede correr todas las aplicaciones de escritorio de cientos de usuarios desde un único servidor. El costo de tal servidor de terminal ejecutando LTSP (Linux Terminal Server Project) puede ser tan pequeño como unos $USD 30 por usuario, de manera que el costo por usuarios es alrededor de USD 130 + red + pantalla/teclado/mouse. X es ciertamente una amenaza importante para los sistemas privativos ampliamente usados cuando se los combina con GNU/Linux.

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.

Críticas

El sistema X Window ha sido criticado en recientes oportunidades por un número de razones, Las críticas más comunes son que su dependencia en el protocolo X hace que su desempeño sea peor que otros estilos de diseño de interfaces gráficas, y qie el Protocolo X mismo está mostrando su vejez y no proporciona características populares de los sistemas gráficos modernos. Aunque estas críticas han sido muy populares en algunos círculos, hay un amplio desacuerdo con sus conclusiones. En cualquier caso, sería demasiado impráctico reemplazar X11, dado que muchos programas ya existen para él. Un número de projectos existen para continuar en la mejora de X11 y mantenerlo actualizado con desarrollos en interfaces gráficas de computadoras.

Una crítica es que X usa mucho ancho de banda. Estos es importante cuando muchos usuarios están conectados a un recurso limitado o a través de una conexión lenta. Otra es que la información transmitida está sin cifrar, por lo tanto los intrusos pueden obtenerla haciendo sniffing. Cuando la seguridad es una preocupación, X puede ser reenviado sobre otro protocolo más seguro tal como SSH. NoMachine desarrolló una mejora en X modificándo el protocolo para usar menores transacciones y reenviando sobre SSH. NX y FreeNX permiten conexiones gráficas remotas que son útils aun sobre dial-up.

XFree86

XFree86 es un proyecto para producir un sistema de ventanas libre compatible con el sistema X Window. Está acualmente en la versión 4.4, y 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

La X.org Foundation también desarrollo un servidor X (usualmente referido como Xorg). EL desarrollo fue recientemente abierto y puesto en el sitio de freedesktop.

El archivo inittab

/etc/inittab es un archivo de configuración ubicado en /etc/inittab y contiene información y configuración del nivel de ejecución predeterminado y una lista de todos los niveles de ejecución. Contiene además información acerca de qué comando(s) ejecutar inmediatamente en el arranque.

Debajo muestra un ejemplo de inittab con comentarios útiles.

#
# inittab       Este archivo describe como el proceso INIT debería configurarse en un determinado nivel de ejecución.
#
# Author:       Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>
#               Modified for RHS Linux by Marc Ewing and Donnie Barnes
#

# Default runlevel. The runlevels used by Mandriva Linux are:
#   0 - Apagado
#   1 - Monousuario
#   2 - Multiususuario sin NFS
#   3 - Multiusuario completo
#   4 - No se usa
#   5 - X11
#   6 - Reinicio
# 
#
# Debajo se puede modificar el nivel de ejecución predeterminado.
#
id:5:initdefault:

# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit

l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6

# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now

# When our UPS tells us power has failed, assume we have a few minutes
# of power left.  Schedule a shutdown for 2 minutes from now.
# This does, of course, assume you have powerd installed and your
# UPS connected and working correctly.  
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"

# If power was restored before the shutdown kicked in, cancel it.
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"


# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6

# Single user mode
~~:S:wait:/bin/sh

Display manager

El Display manager (gestor de pantalla) es un programa que sirve para iniciar una sesión de usuario directamente en X Window System. El gestor de pantalla predeterminado de X es xdm. Sin embargo, la mayoría de las distribuciones de Linux utilizan otros display managers, tales como gdm (GNOME Display Manager) o sino kdm (KDE Display Manager). Estos 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.

DISPLAY

Existe una variable de entorno muy importante cuando se utiliza X que es DISPLAY. La variable DISPLAY tiene esta forma:

DISPLAY=Nombre_del_Servidor:display.screen

Donde Nombre_del_Servidor es el nombre de la máquina en la cual está corriendo el servidor X (también puede ser la dirección IP), display es el número de monitor conectado al servidor (se empieza a contar desde 0), screen es el número de pantalla virtual (se comienza a contar desde 0).

Configuración de X

La configuración del servidor XFree86 o Xorg (comunmente llamado X o X11) es realizada seguramente de manera automática por la distribución de GNU/Linux. Si esta falla o directamente no lo hace, hay que hacerlo manualmente.Este frecuentemente terminado siendo una gran frustración para muchos usuarios.

Nota, esta sección probablemente debería actualizarse para reflejar el uso mayoritario de Xorg por estos días (aunque muchos conceptos se repiten y son igualmente valiosos).

Varias herramientas que hacen las cosas más fáciles

Hay un número de programas que automáticamente configuran XFree86. La primera opción debería ser la herramienta de la distribución (por ejemplo, los sistemas Debian proporcionan dpg-reconfigure nombre-de-paquete-x).

Puede usar también las herramientas que vienen con XFree86:

xf86config

   Una herramienta de texto que pregunta un montón de cosas. Desventaja: reescribe la configuración cada vez que se usa. Si esto molesta, se necesitaría hacer un backup del archivo XF86Config.

xf86cfg

   Comienza una sesión de XFree86 con una configuración mínima de manera de manera que se pueda configurar gráficamente. Si no funciona, se puede usar en modo texto: 'xf86cfg --textmode'.

Algunos fabricantes de placas de video proporcionan sus propias herramientas, y algunas herramientas también proveen las suyas - por ejemplo, Mandriva.

El archivo XF86Config

Esto es lo que lee XFree86 en su arranque, asi que este archivo sabe que dispositivos necesita para cargar los drivers que correspondan. (A veces se llama XF86Config-4, dependiendo de tu distribución -- ver debajo.) Estos dispositivos comúnmente incluyen un mouse, un teclado, una (o más) placas de video, y uno (o más) monitores. El mouse y el teclado comúnmente saben que placa está en la máquina. Sin embargo, las versiones más viejas de XFree86 (3.x y anteriores) necesitan poener en el archivo detalles específicos acerca del chipset de la placa de video.

Edición manual de XF86Config

Esto solamente debería hacerse si los intentos previos en usar xf86config o xf86cfg no funcionan. O solamente para hacer un pequeño cambio a un archivo de X que ya está funcionando.

Es necesario editar el archivo como root, y luego reiniciar X.

Equivalencias XFree86 y Xorg

Debido a que la mayoría de las distribuciones usan Xorg es conveniente conocer como se llaman las herramientas y los archivos correspondientes a estas implementaciones de X.

Equivalencias: XFree86 y Xorg
XFree86 Xorg
/etc/X11/XF86Config /etc/X11/xorg.conf
xf86config xorgconfig
xf86cfg xorgcfg

El comando xhost

El comando xhost se usa para decirle al servidor X que permita programas remotos de otra computadora acceder a su pantalla, teclado, y mouse. Como no hay distinción de quien puede usar el servidor X en la computadora remota, el método xhost no es una manera muy segura de habilitar el acceso remoto. Es mejor usar xauth o ssh.

Usando xhost

Para decirle al servidor X que permita el acceso desde una máquina en particular:

compulocal$ xhost +otracompu.empresa.com

Entonces, al iniciar una sesión en otracompu, hay que configurar la variable DISPLAY de manera que las aplicaciones sepan donde mostrar su salida:

otracompu$ export DISPLAY=compulocal.empresa.com:0

Para eliminar totalmente los controles de acceso (lo cual no es una buena idea), se debe ejecutar el comando:

compuloca$ xhost +

El programa xinit

El programa xinit se usa para iniciar el servidor del sistema de ventanas X y un primer programa cliente en sistemas que no pueden arrancar X directamente a partir de init o en entornos que usan múltiples sistemas de ventanas. Cuando sale este primer cliente, xinit mata el servidor X y luego termina.

Si no se suministra un programa cliente en la línea de comandos, xinit buscará un archivo en el directorio de inicio del usuario llamado .xinitrc para ejecutarlo como un script de shell para arrancar programas clientes.

Recursos de X

Nota: Esta sección tiene como Fuente a un artículo de Wikipedia en inglés, y debe ser distribuida como GNU GNU FDL.

En el sistema de ventanas X, los recursos de X comprenden parámetros de los programas de computadoras tales como el nombre de la fuente usada en los botones, el color de fondo de los menúes, etc.

Ubicación y uso

Durante la ejecución del servidor X, los recursos de este se almacenan en dos ubicaciones estándares, dependiendo si se aplican a todas las pantallas o a una en particular:

  1. la propiedad RESOURCE_MANAGERde la ventana raíz de la pantalla 0
  2. la propiedad SCREEN_RESOURCES de la ventana raíz de una pantalla arbitraria


Los recursos de X se almacenan en el servidor en lugar de un archivo de configuración para permitir que los programas se inicien desde otras computadoras los usen. Sin dudas, un programa que se conecta a un servidor X desde otra computadora puede acceder a los recursos vía el protocolo X. Usando el viejo sistema de almacenar parámetros del programa en el archivo .Xdefaults crea la necesidad de copiar este archivo a todos las demás computadoras donde se puede inicar un programa.


Los recursos son manipulados por el programa xrdb. En particular, muchas configuraciones de X ejecutan xrdb en el arranque, instruyendo a que lean los recursos del archivo .Xresources en el directorio de inicio del usuario. Desde este momento en adelante, cada programa busca los recursos en las dos ubicaciones estándares. Se pueden ver los recursos actuales desde una consola con xrdb -query.

xvidtune

xvidtune es un programa para ajustar la configuración del monitor. Proporciona una interfaz con diversos controles para configurar las frecuencias de actualización del monitor y la resolución de la pantalla.


Fuentes consultadas

Wikipedia en inglés LQWiki

Herramientas personales