106.1 Lección 1
Certificación: |
LPIC-1 |
---|---|
Versión: |
5.0 |
Tema: |
106 Interfaces de usuario y escritorios |
Objetivo: |
106.1 Instalar y configurar X11 |
Lección: |
1 de 1 |
Introducción
El Sistema X Window es una pila de software que se utiliza para mostrar texto y gráficos en una pantalla. El aspecto y diseño de un cliente X no está dictado por el Sistema X Window, sino que es manejado por cada cliente X individual, un administrador de ventanas (por ejemplo, Window Maker, Tab Window Manager), o un entorno de escritorio completo como KDE, GNOME, o Xfce. En otra lección trataremos los entornos de escritorio. Lo que ahora haremos es centrarnos en la arquitectura subyacente y en las herramientas comunes para el sistema X Window que un administrador usaría para configurar X.
El sistema X Window es multiplataforma y funciona en varios sistemas operativos como Linux, BSD, Solaris y otros sistemas de tipo Unix. También hay implementaciones disponibles para el MacOS de Apple y Windows de Microsoft.
La versión primaria del protocolo X usado en las distribuciones modernas de Linux es la versión 11 de X.org, comúnmente escrita como X11. El protocolo X es el mecanismo de comunicación entre el cliente X y el servidor X. Las diferencias entre ellos se discutirán más adelante.
Note
|
El predecesor del Sistema X Window fue un sistema de ventanas llamado W y fue un esfuerzo en conjunto entre IBM, DEC y MIT. Este software nació del Proyecto Athena en 1984. Cuando los desarrolladores empezaron a trabajar en un nuevo servidor de ventanas, eligieron la siguiente letra del alfabeto inglés: “X”. La evolución del Sistema X WIndow está actualmente controlada por el MIT X Consortium. |
Arquitectura de sistema X Window
El Sistema X Window proporciona los mecanismos para dibujar formas bidimensionales básicas (y tridimensionales a través de extensiones) en una pantalla. Se divide en un cliente y un servidor; en la mayoría de las instalaciones en las que se requiere un escritorio gráfico, estos componentes estarán presentes en el mismo equipo. El componente cliente toma la forma de una aplicación, como un emulador de terminal, un juego o un navegador web. Cada aplicación cliente informa al servidor X sobre la ubicación y el tamaño de su ventana en la pantalla de una computadora. El cliente también maneja lo que entra en esa ventana, y el servidor X coloca el dibujo solicitado en la pantalla. El sistema X WIndow también maneja la entrada de dispositivos como mouse, teclados, trackpads y más.
El sistema X Window es capaz de funcionar en red donde múltiples clientes X de diferentes computadoras de una red pueden hacer solicitudes a un solo servidor X remoto. El razonamiento que subyace a esto es que un administrador o usuario puede tener acceso a una aplicación gráfica en un sistema remoto que puede no estar disponible en su sistema local.
X Window es un sistema modular, y esto es una característica clave. A lo largo de la existencia de este sistema se han desarrollado nuevas características que se han añadido a su marco (Framework). Estos nuevos componentes sólo fueron añadidos como extensiones al servidor X, dejando el núcleo del protocolo X11 intacto. Estas extensiones están contenidas dentro de los archivos de la biblioteca Xorg. Algunos ejemplos de bibliotecas Xorg incluyen: libXrandr
, libXcursor
, libX11
, libxkbfile
así como otras, cada una de ellas proporcionan una funcionalidad extendida al servidor X.
Un administrador de pantalla proporciona un acceso gráfico a un sistema. Este sistema puede ser un ordenador local o un ordenador a través de una red. El administrador de pantalla se lanza después de que la computadora se inicia y así comenzará una sesión de servidor X para el usuario autenticado. El administrador de pantalla también es responsable de mantener el servidor X en funcionamiento. Algunos ejemplos de gestores de pantalla son: GDM, SDDM y LightDM. Cada instancia de un servidor X en funcionamiento tiene un nombre de pantalla para identificarlo. El nombre de pantalla contiene lo siguiente:
hostname:displaynumber.screennumber
El nombre de la pantalla también indica una aplicación gráfica donde debe ser renderizada y sobre cúal host (si se utiliza una conexión X remota).
El hostname
se refiere al nombre del sistema que mostrará la aplicación. Si falta un nombre de host en el nombre de pantalla, entonces se asume que es el host local.
El displaynumber
hace referencia a la colección de “pantallas” que están en uso, ya sea una sola o varias pantallas en una estación de trabajo. A cada sesión de servidor X en ejecución se le da un número de pantalla que comienza en 0
.
Por defecto el screennumber
es 0
. Esto puede ser el caso si sólo una pantalla o varias pantallas físicas están configuradas para trabajar como una sola pantalla. Cuando todas las pantallas en una configuración de múltiples monitores se combinan en una lógica, las ventanas de aplicación pueden moverse libremente entre las pantallas. En situaciones en las que cada pantalla está configurada para funcionar de forma independiente, cada una albergará las ventanas de aplicación que se abran dentro de ella y las ventanas no podrán moverse de una pantalla a otra. Cada pantalla independiente tendrá su propio número asignado. Si sólo hay una lógica en uso, entonces se omite el punto y el número de pantalla.
El nombre de una sesión X en curso se almacena en la variable de entorno DISPLAY
:
$ echo $DISPLAY :0
La salida detalla lo siguiente:
-
El servidor X en uso está en el sistema local, por lo tanto no hay nada impreso a la izquierda de los dos puntos.
-
La sesión actual del servidor X es la primera como indica el
0
que sigue a los dos puntos. -
Sólo hay una pantalla lógica en uso, por lo que un número de pantalla no es visible.
Para ilustrar mejor este concepto, véase el siguiente diagrama:
- (A)
-
Un solo monitor, con una sola configuración de visualización y una sola pantalla.
- (B)
-
Configurado como una sola pantalla, con dos monitores físicos como una sola. Las ventanas de la aplicación pueden moverse libremente entre los dos monitores.
- (C)
-
Una configuración de pantalla única (como se indica en
:0
) sin embargo, cada monitor es una pantalla independiente. Ambas pantallas seguirán compartiendo los mismos dispositivos de entrada como el teclado y el mouse, pero una aplicación abierta en la pantalla:0.0
no puede ser movida a la pantalla:0.1
o viceversa.
Para iniciar una aplicación en una pantalla específica, asigne el número de pantalla a la variable de entorno DISPLAY
antes de lanzar la aplicación:
$ DISPLAY=:0.1 firefox &
Este comando iniciaría el navegador web Firefox en la pantalla de la derecha, en el diagrama de arriba. Algunos conjuntos de herramientas también proporcionan opciones de línea de comandos para ordenar a una aplicación que se ejecute en una pantalla especifica. Revise un ejemplo de --screen
y --display
en la página de manual de gtk-options(7)
.
Configuración de un servidor X
Tradicionalmente, el principal archivo de configuración que se utiliza para configurar un servidor X es el archivo /etc/X11/xorg.conf
. En las distribuciones modernas de Linux, el servidor X se configurará así mismo en tiempo de ejecución cuando este es iniciado, y por lo tanto no puede existir ningún archivo xorg.conf
.
El archivo xorg.conf
está dividido en estrofas llamadas secciones
. Cada sección comienza con el término Section
y después de este término se encuentra el nombre de la sección que se refiere a la configuración de un componente. Cada Section
está correspondientemente terminada por una EndSection
. El típico archivo xorg.conf
contiene las siguientes secciones:
InputDevice
-
Se utiliza para configurar un modelo específico de teclado o mouse.
InputClass
-
En las distribuciones modernas de Linux esta sección se encuentra típicamente en un archivo de configuración separado y localizado en
/etc/X11/xorg.conf.d/
. ElInputClass
se usa para configurar una clase de dispositivos de hardware como teclados y mouses en lugar de un componente específico de hardware. Abajo encontraremos un ejemplo del archivo/etc/X11/xorg.conf.d/00-keyboard.conf
:Section "InputClass" Identifier "system-keyboard" MatchIsKeyboard "on" Option "XkbLayout" "us" Option "XkbModel" "pc105" EndSection
La opción para
XkbLayout
determina la disposición de las teclas de un teclado, como Dvorak, para diestros y zurdos, QWERTY e idioma. La opción paraXkbModel
se usa para definir el tipo de teclado en uso. Una tabla de modelos, diseños y sus descripciones se puede encontrar enxkeyboard-config(7)
. Los archivos asociados a las distribuciones de teclado se pueden encontrar en/usr/share/X11/xkb
. Un ejemplo de diseño de teclado griego politónico en una computadora de Chromebook se vería como el siguiente:Section "InputClass" Identifier "system-keyboard" MatchIsKeyboard "on" Option "XkbLayout" "gr(polytonic)" Option "XkbModel" "chromebook" EndSection
Alternativamente, la disposición del teclado puede ser modificada durante una sesión X en curso con el comando
setxkbmap
. Aquí hay un ejemplo de este comando que configura la disposición del Politónico Griego en una computadora Chromebook:$ setxkbmap -model chromebook -layout "gr(polytonic)"
Este ajuste sólo durará mientras la sesión X esté en uso. Para que estos cambios sean permanentes, modifique el archivo
/etc/X11/xorg.conf.d/00-keyboard.conf
para incluir los ajustes necesarios.NoteEl comando
setxkbmap
utiliza X Keyboard Extension (XKB). Este es un ejemplo de la funcionalidad aditiva del Sistema X Window a través de su uso de extensiones.Las distribuciones modernas de Linux proporcionan el comando
localectl
a través desystemd
que también puede ser usado para modificar una disposición del teclado y creará automáticamente el archivo de configuración/etc/X11/xorg.conf.d/00-keyboard.conf
. Una vez más, aquí hay un ejemplo de configuración de un teclado politónico griego en un Chromebook, esta vez usando el comandolocalectl
:$ localectl --no-convert set-x11-keymap "gr(polytonic)" chromebook
La opción
--no-convert
se usa aquí para evitar quelocalectl
modifique el mapa de teclas de la consola del host. Monitor
-
La sección
Monitor
describe el monitor físico que se utiliza y dónde está conectado. El siguiente es un ejemplo de configuración que muestra un monitor físico conectado al segundo puerto de pantalla y que se utiliza como monitor primario.Section "Monitor" Identifier "DP2" Option "Primary" "true" EndSection
Device
-
La sección
Device
describe la tarjeta de vídeo física que se utiliza. También contendrá el módulo del núcleo utilizado como controlador de la tarjeta de vídeo, junto con su ubicación física en la placa base.Section "Device" Identifier "Device0" Driver "i915" BusID "PCI:0:2:0" EndSection
Screen
-
La sección
Screen
une las seccionesMonitor
yDevice
. Un ejemplo de la secciónScreen
podría ser la siguiente;Section "Screen" Identifier "Screen0" Device "Device0" Monitor "DP2" EndSection
ServerLayout
-
La sección
ServerLayout
agrupa todas las secciones como el mouse, el teclado y las pantallas en una interfaz del sistema X Window.Section "ServerLayout" Identifier "Layout-1" Screen "Screen0" 0 0 InputDevice "mouse1" "CorePointer" InputDevice "system-keyboard" "CoreKeyboard" EndSection
Note
|
No todas las secciones pueden encontrarse dentro de un archivo de configuración. En los casos en que falta una sección, los valores por defecto los proporciona la instancia del servidor X que se está ejecutando. |
Los archivos de configuración especificados por el usuario también residen en /etc/X11/xorg.conf.d/
. Los archivos de configuración proporcionados por la distribución se localizan en /usr/share/X11/xorg.conf.d/
. Los archivos de configuración ubicados dentro de /etc/X11/xorg.conf.d/
son analizados antes del archivo /etc/X11/xorg.conf
si existe en el sistema.
El comando xdpyinfo
se usa en una computadora para mostrar información sobre una instancia de servidor X en ejecución. A continuación se muestra un ejemplo de la salida del comando:
$ xdpyinfo name of display: :0 version number: 11.0 vendor string: The X.Org Foundation vendor release number: 12004000 X.Org version: 1.20.4 maximum request size: 16777212 bytes motion buffer size: 256 bitmap unit, bit order, padding: 32, LSBFirst, 32 image byte order: LSBFirst number of supported pixmap formats: 7 supported pixmap formats: depth 1, bits_per_pixel 1, scanline_pad 32 depth 4, bits_per_pixel 8, scanline_pad 32 depth 8, bits_per_pixel 8, scanline_pad 32 depth 15, bits_per_pixel 16, scanline_pad 32 depth 16, bits_per_pixel 16, scanline_pad 32 depth 24, bits_per_pixel 32, scanline_pad 32 depth 32, bits_per_pixel 32, scanline_pad 32 keycode range: minimum 8, maximum 255 focus: None number of extensions: 25 BIG-REQUESTS Composite DAMAGE DOUBLE-BUFFER DRI3 GLX Generic Event Extension MIT-SCREEN-SAVER MIT-SHM Present RANDR RECORD RENDER SECURITY SHAPE SYNC X-Resource XC-MISC XFIXES XFree86-VidModeExtension XINERAMA XInputExtension XKEYBOARD XTEST XVideo default screen number: 0 number of screens: 1 screen #0: dimensions: 3840x1080 pixels (1016x286 millimeters) resolution: 96x96 dots per inch depths (7): 24, 1, 4, 8, 15, 16, 32 root window id: 0x39e depth of root window: 24 planes number of colormaps: minimum 1, maximum 1 default colormap: 0x25 default number of colormap cells: 256 preallocated pixels: black 0, white 16777215 options: backing-store WHEN MAPPED, save-unders NO largest cursor: 3840x1080 current input event mask: 0xda0033 KeyPressMask KeyReleaseMask EnterWindowMask LeaveWindowMask StructureNotifyMask SubstructureNotifyMask SubstructureRedirectMask PropertyChangeMask ColormapChangeMask number of visuals: 270 ...
Las partes más relevantes de la salida están en negrita, como el nombre de la pantalla (que es el mismo que el contenido de la variable de entorno DISPLAY
), la versión del servidor X en uso, el número y listado de las extensiones Xorg en uso, y más información sobre la propia pantalla.
Creando un archivo de configuración básica de Xorg
Aunque X creará su configuración después del inicio del sistema en instalaciones modernas de Linux, un archivo xorg.conf
todavía puede ser usado. Para generar un archivo /etc/X11/xorg.conf
permanente, ejecute el siguiente comando:
$ sudo Xorg -configure
Note
|
Si ya existe una sesión X en ejecución, tendrás que especificar un $ sudo Xorg :1 -configure |
En algunas distribuciones de Linux, el comando X
puede ser usado en lugar de Xorg
, ya que X
es un enlace simbólico a Xorg
.
Se creará un archivo xorg.conf.new
en su actual directorio de trabajo. El contenido de este archivo se deriva de lo que el servidor X ha encontrado disponible en el hardware y los controladores del sistema local. Para usar este archivo, tendrá que ser movido al directorio /etc/X11/
y renombrado a xorg.conf
:
$ sudo mv xorg.conf.new /etc/X11/xorg.conf
Note
|
Las siguientes páginas del manual proporcionan más información sobre los componentes del Sistema X Window: |
Wayland
Wayland es el nuevo protocolo de visualización diseñado para reemplazar el Sistema X Window. Muchas distribuciones modernas de Linux lo usan como su servidor de visualización por defecto. Se supone que es más ligero en cuanto a recursos del sistema y su instalación ocupa menos espacio en disco que X. El proyecto comenzó en 2010 y todavía está en desarrollo activo, incluyendo el trabajo de los desarrolladores activos y anteriores de X.org.
A diferencia del sistema X Window, no hay ninguna instancia de servidor que se ejecute entre el cliente y el kernel. En su lugar, una ventana cliente trabaja con su propio código o el de un kit de herramientas (como Gtk+ o Qt) para proporcionar el renderizado. Para hacer el renderizado, se hace una petición al kernel de Linux a través del protocolo Wayland. El kernel reenvía la solicitud a través de este protocolo al Wayland compositor que se encarga de la entrada de dispositivos, la gestión de ventanas y la composición. El compositor es la parte del sistema que combina los elementos renderizados en una salida visual en la pantalla.
La mayoría de las herramientas modernas como Gtk+ 3 y Qt 5 han sido actualizadas para permitir la renderización a un sistema X Window o a una computadora con Wayland. No todas las aplicaciones autónomas han sido escritas para soportar el renderizado en Wayland hasta ahora. Para las aplicaciones y frameworks que todavía tienen como objetivo que se ejecute el Sistema X Window, la aplicación puede ejecutarse dentro de XWayland. El sistema XWayland es un servidor X separado que se ejecuta dentro de un cliente de Wayland y por lo tanto, renderiza el contenido de una ventana de cliente dentro de una instancia de servidor X independiente.
Así como el sistema X Window utiliza una variable de entorno DISPLAY
para controlar las pantallas en uso, el protocolo Wayland utiliza una variable de entorno WAYLAND_DISPLAY
. A continuación se muestra la salida de un sistema que ejecuta una pantalla Wayland:
$ echo $WAYLAND_DISPLAY wayland-0
Esta variable de entorno no está disponible en los sistemas que ejecutan X.
Guided Exercises
-
¿Qué comando utilizaría para determinar qué extensiones Xorg están disponibles en un sistema?
-
Acaba de recibir un nuevo mouse de 10 botones para su computadora, sin embargo, requerirá una configuración extra para que todos los botones funcionen correctamente. Sin modificar el resto de la configuración del servidor X. ¿Qué directorio utilizaría para crear un nuevo archivo de configuración para este mouse y qué sección de configuración específica se utilizaría en este archivo?
-
¿Qué componente de una instalación de Linux es responsable de mantener un servidor X funcionando?
-
¿Qué opción en la línea de comandos se utiliza con el comando
X
para crear un nuevo archivo de configuraciónxorg.conf
?
Explorational Exercises
-
¿Cuál sería el contenido de la variable de entorno
DISPLAY
en un sistema llamadolab01
con una configuración de pantalla única? Supongamos que la variable de entornoDISPLAY
se visualiza en un emulador de terminal en la tercera pantalla independiente. -
¿Qué comando se puede usar para crear un archivo de configuración del teclado para ser usado por el Sistema X Window?
-
En una instalación típica de Linux un usuario puede cambiar a una terminal virtual presionando las teclas kbd:[Ctrl+Alt+F1]-kbd:[F6] en un teclado. Se le ha pedido que configure un sistema de kiosco con una interfaz gráfica y necesita que esta función esté desactivada para evitar la manipulación no autorizada del sistema. Usted decide crear un archivo de configuración
/etc/X11/xorg.conf.d/10-kiosk.conf
. Utilizando una secciónServerFlags
(que se utiliza para establecer las opciones globales de Xorg en el servidor). ¿Qué opción habría que especificar? Revise lapágina del manual de Xorg(1)
para buscar la opción.
Resumen
Esta lección cubrió el sistema X Window y su funcionamiento en Linux. El Sistema X Window se utiliza para dibujar imágenes y texto en las pantallas, tal y como se definen en varios archivos de configuración. El Sistema X Window se usa a menudo para configurar dispositivos de entrada como mouse y teclados. Esta lección trató los siguientes puntos:
-
La arquitectura del Sistema X Window a un alto nivel.
-
¿Qué archivos de configuración se usan para configurar un Sistema X Window, y su ubicación en el sistema de archivos?
-
¿Cómo usar la variable de entorno
DISPLAY
en un sistema X? -
Una breve introducción al protocolo de visualización de Wayland.
Los comandos y archivos de configuración tratados fueron:
-
Modificación de la disposición de un teclado dentro de una instalación Xorg con
setxkbmap
ylocalectl
. -
El comando
Xorg
para crear un nuevo archivo de configuraciónetc/X11/xorg.conf
. -
El contenido de los archivos de configuración de Xorg ubicados en:
/etc/X11/xorg.conf
,/etc/X11/xorg.conf.d/
y/usr/share/X11/xorg.conf.d/
. -
El comando
xdpyinfo
para mostrar información general sobre una sesión de servidor X en ejecución.
Respuesta a los ejercicios guiados
-
¿Qué comando utilizaría para determinar qué extensiones Xorg están disponibles en un sistema?
$ xdpyinfo
-
Acaba de recibir un nuevo mouse de 10 botones para su computadora, sin embargo, requerirá una configuración extra para que todos los botones funcionen correctamente. Sin modificar el resto de la configuración del servidor X. ¿Qué directorio utilizaría para crear un nuevo archivo de configuración para este mouse y qué sección de configuración específica se utilizaría en este archivo?
Las configuraciones definidas por el usuario deben estar ubicadas en
/etc/X11/xorg.conf.d/
y la sección específica necesaria para esta configuración del mouse seríaInputDevice
. -
¿Qué componente de una instalación de Linux es responsable de mantener un servidor X funcionando?
El administrador de pantalla (Display manager).
-
¿Qué opción en la línea de comandos se utiliza con el comando
X
para crear un nuevo archivo de configuraciónxorg.conf
?-configure
Recuerde que el comando
X
es un enlace simbólico al comandoXorg
.
Respuestas a los ejercicios de exploración
-
¿Cuál sería el contenido de la variable de entorno
DISPLAY
en un sistema llamadolab01
con una configuración de pantalla única? Supongamos que la variable de entornoDISPLAY
se visualiza en un emulador de terminal en la tercera pantalla independiente.$ echo $DISPLAY lab01:0.2
-
¿Qué comando se puede usar para crear un archivo de configuración del teclado para ser usado por el Sistema X Window?
$ localectl
-
En una instalación típica de Linux un usuario puede cambiar a una terminal virtual presionando las teclas kbd:[Ctrl+Alt+F1]-kbd:[F6] en un teclado. Se le ha pedido que configure un sistema de kiosco con una interfaz gráfica y necesita que esta función esté desactivada para evitar la manipulación no autorizada del sistema. Usted decide crear un archivo de configuración
/etc/X11/xorg.conf.d/10-kiosk.conf
. Utilizando una secciónServerFlags
(que se utiliza para establecer las opciones globales de Xorg en el servidor). ¿Qué opción habría que especificar? Revise lapágina del manual de Xorg(1)
para buscar la opción.Section "ServerFlags" Option "DontVTSwitch" "True" EndSection