106.1 Lección 1
Certificación: |
LPIC-1 |
---|---|
Versión: |
5.0 |
Tema: |
106 Instalación y configuración de X11 |
Objetivo: |
106.2 Escritorios gráficos |
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 otro tema 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.
-
Estructura básica de un sistema X Window
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 gestor/administrador de pantalla
(Display Manager) proporciona un
acceso gráfico a un sistema.
El gestor de pantalla se
lanza después de que la computadora se
inicia y aguarda en el pantalla de la
máquina a que se produzca una
identificación correcta
(usuario+contraseña), después de lo
cual, comenzará una sesión de servidor X
para el usuario autenticado. El sistema
puede ser un ordenador local o un
ordenador a través de una red. . El gestor
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
identificador único al que normalmente
nos refereimos como "nombre de
pantalla". El nombre de
pantalla contiene lo siguiente:
hostname:displaynumber.screennumber
El hostname
se refiere al
nombre (o dirección IP) del sistema
donde se ejecuta la instancia del
servidor X y que se ocupará de 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
está
asociado al hardware. Hace referencia a
la colección de “pantallas” que están en
uso para esa instancia de X, puede ser
una sola o varias pantallas en una misma
estación de trabajo. A cada instancia de
servidor X en ejecución se le da un
número de pantalla detrás del cual se
agrupan la o las mencionadas pantallas
(monitores físicos). Este número
comienza en 0
.
El screennumber
esá
asociado a la lógica de funcionamiento
de la/s pantalla/s. Por defecto es 0
e indica que 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 lógica única (screennumber=0
),
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 (véase gráfico más
abajo)
DISPLAY
:$ echo $DISPLAY :0
La salida anterior 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 marcar
las directrices de funcionamiento de un
servidor X es el archivo /etc/X11/xorg.conf
.
En las distribuciones modernas de Linux,
el servidor X se configura así mismo en
tiempo de ejecución cuando arranca, y
por lo tanto, no es habitual encontrar
un archivo xorg.conf
en el
dispositivo de almacenamiento. Aún así,
es necesario conocer las estructura y
sintáxis de este archivo.
xorg.conf
está dividido en
partes llamadas secciones
.
Cada sección comienza con el término
(etiqueta) Section <name>
el nombre de la sección indica
al servidor X qué componente se está
configurando. Cada Section
finaliza con la etiqueta EndSection
.
Un típico archivo xorg.conf
contiene las siguientes secciones:
Section InputDevice
-
Se utiliza para configurar un modelo específico de teclado y un modelo específico de mouse.
Section
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/
. LaSection InputClass
se usa para configurar una clase de dispositivos de hardware como teclados y mouses en lugar de un componente específicoo de hardware (un teclado concreto, un mouse concreto). 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 y su idioma: Dvorak, para diestros y zurdos, QWERTY. La opciónXkbModel
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, sólo afectaria al entorno gráfico. Section
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
Section 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
Section
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
Section
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. Dicho esto, no
se debe perder de vista que existe una
larga lista de prevalencias en cuanto a
ubicaciones de configuraciones para el
servidor X. El lector puede documentarse
con detalle aquí.
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 servidor gráfico 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.
Ejercicios guiados
-
¿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
?
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.
-
¿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