Interfaces gráficas de usuario
Requisitos previos y objetivos
1. Requisitos previos
Tener hardware que sea compatible con el servidor X.
Tener acceso root.
Saber cómo usar un editor.
Tener una o varias cuentas de prueba.
2. Objetivos
Al final de este capítulo, será capaz de:
Entender cómo funciona X.
Conocer el principio de los administradores de ventanas.
Conocer los principales toolkits y widgets.
Instalar xorg.
Configurar xorg a través de comandos estándar.
Entender y modificar el archivo xorg.conf manualmente.
Acceder a las trazas del servidor X.
Configurar los administradores de visualización xdm, gdm, kdm y lightDM.
Iniciar el sistema en modo gráfico.
Abrir una sesión gráfica.
Configurar su sesión personal.
Elegir un administrador de ventanas o un entorno de escritorio.
Conocer las funciones de administración de la accesibilidad.
Conocer el papel y las funcionalidades de Wayland.
Exportar la pantalla a otro servidor X.
Abrir una sesión gráfica remota con RDP, VNC o Spice.
¿Cómo funciona un entorno gráfico?
Linux ofrece una arquitectura gráfica que permite a los usuarios acceder al sistema y a las aplicaciones, a través de una sencilla interfaz gráfica de usuario o a través de una variedad de entornos de escritorio completos. Sin embargo, estas funciones suelen estar deshabilitadas en los servidores, donde es preferible utilizar la interfaz de línea de comandos (CLI, Command Line Interface) porque consume menos recursos y es más fácil de automatizar a través de scripts.
1. El sistema X Windows
Mientras que en otros sistemas operativos la interfaz gráfica de usuario está integrada en el sistema, Linux tiene una arquitectura gráfica opcional implementada en el propio sistema. El sistema gráfico básico, originalmente Unix, se llama X Windows y se basa en una arquitectura cliente-servidor X11, compuesto por servidores y clientes X,que se comunican a través del protocolo cliente-servidor X11.
X Window forma un sistema gráfico completo, encargado de diseñar y gestionar los eventos de los componentes habituales de un entorno gráfico de usuario GUI (Graphical User Interface): ventanas, botones, menús, listas, ascensores, casillas de verificación, cursor del ratón, etc. X Window puede mostrar y administrar estos widgets, pero no se encarga de configurarlos. X Window solo gestiona las interacciones hombre-máquina.
![images/chap9_001.png](https://www.eni-training.com/download/4faac64c-54d8-4e3e-bd6b-757d457f5155/images/chap9_001.png?id=AAEAAAD%2f%2f%2f%2f%2fAQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwdGVzdCB2Ml84IC0gZmZhNjQzOWQtZDZjYi00NzYxLWJhYTMtZWZkZDNiZDcwMWM25rSq0F7p2IgL)
Arquitectura X Ventana
X Windows se ejecuta en modo cliente/servidor. El servidor X es un componente de software que gestiona periféricos gráficos: teclado...
Wayland
Wayland es un protocolo de comunicación entre un administrador de ventanas (el compositor) y sus clientes. Las aplicaciones pueden utilizar la librería Wayland de forma nativa. Wayland fue desarrollado para sustituir a Xorg, que se había vuelto engorroso, menos seguro (las comunicaciones entre el cliente y el servidor no estaban encriptadas) y no eran eficientes. La implementación de Wayland en Linux se llama Weston.
Wayland no hace que el uso de X Window sea obsoleto: algunos entornos y aplicaciones todavía lo necesitan. El componente XWayland permite la compatibilidad de las aplicaciones X con Wayland.
Las versiones más recientes de las distribuciones generalmente implementan Wayland por defecto, pero también pueden usar Xorg. Las versiones anteriores, Ubuntu 19.10, openSUSE 15.1 y Red Hat Linux 7 usan Xorg de forma nativa de forma predeterminada.
La certificación LPIC-1 solo requiere un conocimiento básico de Wayland y se centra en Xorg.
Las variables de entorno WAYLAND_DISPLAY o XDG_SESSION_TYPE se utilizan para determinar si se está utilizando Wayland.
Ejemplo
$ echo $WAYLAND_DISPLAY
wayland-0
o
$ echo $XDG_TIPO_SESIÓN
x11
El comando xlsclients proporciona la lista de los clientes X activos. Si falta una aplicación gráfica iniciada, está utilizando Wayland.
Ejemplo
$ xlsclients
fedora gnome-shell
fedora gsd-xsettings
fedora...
Xorg
Inicialmente, Linux utilizó el entorno libre X Window XFree86. Tras el cambio de licencia de este software, un "fork" (creación de una nueva rama de desarrollo) provocó la creación de X.org. Comúnmente conocido como Xorg, se ha convertido en el principal entorno de X Window para Linux.
X.org es rápido, modular, disponible con muchos controladores y compatible. Las últimas versiones detectan automáticamente el hardware, sin tener que declararlo en un complejo archivo de configuración.
![IMAGES/cet09-008.png](https://www.eni-training.com/download/4faac64c-54d8-4e3e-bd6b-757d457f5155/images/cet09-008.png?id=AAEAAAD%2f%2f%2f%2f%2fAQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwdGVzdCB2Ml84IC0gZmZhNjQzOWQtZDZjYi00NzYxLWJhYTMtZWZkZDNiZDcwMWM25rSq0F7p2IgL)
Logo Xorg
La última versión de Xorg, a partir de febrero de 2020, es 1.20.7, que se basa en la versión 7.7 de X11.
1. Instalación
Xorg está disponible con todas las distribuciones de Linux, aunque Wayland a menudo se instala de forma predeterminada en versiones recientes.
Xorg se instala por defecto en /usr/X11R6. Sin embargo, ahora muchas distribuciones colocan los archivos binarios, las librerías, los archivos compartidos, etc., en el árbol clásico /usr, incluyendo los módulos y los controladores en /usr/lib/xorg (o /usr/lib64/xorg).
La configuración se encuentra en el directorio /etc/X11.
Ejemplo
Paquetes de software Xorg instalados en una distribución Debian 12:
# dpkg -l| grep ^ii| grep -i xorg | awk '{print $2,$3}'
xorg 1:7.7+23
xorg-docs-core 1:1.7.1-1.2
xorgxrdp 1:0.9.19-1
xserver-xorg 1:7.7+23
xserver-xorg-core 2:21.1.7-3
xserver-xorg-input-all 1:7.7+23
xserver-xorg-input-libinput 1.2.1-1+b1
xserver-xorg-input-wacom 1.1.0-1
xserver-xorg-legacy 2:21.1.7-3
xserver-xorg-video-all 1:7.7+23
xserver-xorg-video-amdgpu 23.0.0-1
xserver-xorg-video-ati 1:19.1.0-3
xserver-xorg-video-fbdev 1:0.5.0-2
xserver-xorg-video-intel 2:2.99.917+git20210115-1
xserver-xorg-video-new 1:1.0.17-2
xserver-xorg-video-qxl 0.1.5+git20200331-3
xserver-xorg-video-radeon 1:19.1.0-3
xserver-xorg-video-vesa 1:2.5.0-1+b1
xserver-xorg-video-vmware 1:13.3.0-3.1+b1
2. Configuración de Xorg
a. A través de la distribución
El archivo de configuración principal de Xorg es /etc/X11/xorg.conf, complementado o sustituido por los archivos de /etc/X11/xorg.conf.d. Es raro tener que crear un archivo completo xorg.conf. La mayoría de las distribuciones de Linux detectan los componentes...
Administrador de la visualización (Display Manager)
El display manager o administrador de la visualización, es un elemento de X Window, que se encarga de la conexión de los usuarios, locales o remotos, los autentica y, a continuación, carga su entorno de trabajo abriendo una sesión. Gestiona un conjunto de pantallas X, que pueden ser locales o remotas.
Para las conexiones remotas, Display Manager utiliza el protocolo estándar XDMCP (X Display Manager Control Protocol).
El display manager es el equivalente gráfico de los servicios ofrecidos por init, getty e login: solicita nombres de usuario y contraseñas, autentica a las personas e inicia sesión.
El administrador predeterminado se denomina XDM (X Display Manager). Es ligero y funciona con todos los servidores X.
Una sesión X es gestionada por un administrador de sesiones (session manager), por lo general, el administrador de ventanas o un terminal gráfico. Cuando finaliza la sesión, se vuelve a mostrar el cuadro de diálogo de conexión XDM.
Es posible abrir varias sesiones X desde un único display manager, incluso en la misma máquina.
Linux tiene varios display manager, pero se utilizan principalmente tres:
-
XDM: versión básica.
-
GDM: versión ofrecida por GNOME.
-
KDM: versión ofrecida por KDE.
Las versiones GDM y KDM son avanzadas: ofrecen lo mismo que XDM con funcionalidades adicionales:
-
lista de usuarios,
-
iconos (avatares) asociados,
-
posibilidad de elegir una sesión gráfica en particular (GNOME, fvwm, KDE, etc.).
-
posibilidad de conexión automática,
-
temas gráficos.
-
lista de servidores X remotos (XDMCP),
-
cambiar de un usuario a otro,
-
etc.
1. XDM
Aunque XDM ya no se usa mucho, es interesante entender cómo funciona porque otros administradores de pantalla se hacen cargo de su configuración básica. La configuración XDM se encuentra en /etc/X11/xdm. El primer archivo cargado es xdm-config. Todas sus líneas siguen la misma sintaxis:
DisplayManager.Recurso: valor
Cada fila representa un recurso XDM.
Ejemplo
Las líneas en negrita muestran otros scripts de configuración llamados, bien interpretados directamente por XDM, bien ejecutados antes o después de la conexión:
!! xdm-config: Configuration of the xdm
!
DisplayManager.errorLogFile: /var/log/xdm.errors ...
Gestor de ventanas y entorno personal
1. A través del administrador de visualización
Por lo general, el usuario determina el tipo de entorno gráfico que carga la sesión X desde GDM o KDM y el menú asociado. Estos consideran la sesión anterior como sesión predeterminada gracias a la presencia del archivo .dmrc en el directorio de conexión del usuario.
Ejemplo
cat $HOME/.dmrc
[Desktop]
Session=ubuntu
En las versiones más recientes, la información se puede encontrar en /var/lib/ServiceAccounts/users/$USER. El archivo tiene el nombre del usuario.
Ejemplo
# cat /var/lib/ServiceAccounts/users/pba
[User]
Language=
Session=
XSession=icewm-session
Icon=/home/pba/.face
SystemAccount=false
Los archivos de descripción de sesión se colocan en /usr/share/xsessions.
Ejemplo
$ ls -l /usr/share/xsessions/
total 12
-rw-r--r-- 1 root root 207 oct. 4 13:16 gnome.desktop
-rw-r--r-- 1 root root 2274 sept. 21 03:30 plasma.desktop
-rw-r--r-- 1 root root 238 oct. 4 13:16 ubuntu.desktop
Cada archivo desktop representa una sesión posible. Las descripciones y los comandos de lanzamiento están presentes en cada uno de los archivos y, en particular, a través de las líneas Exec y Name:
Ejemplo
$ grep -E "Exec|Name=" /usr/share/xsessions/*.desktop
/usr/share/xsessions/gnome.desktop:Name=GNOME
/usr/share/xsessions/gnome.desktop:Exec=gnome-session --session=gnome
/usr/share/xsessions/gnome.desktop:TryExec=gnome-shell
/usr/share/xsessions/plasma.desktop:Exec=/usr/bin/startkde
/usr/share/xsessions/plasma.desktop:TryExec=/usr/bin/startkde
/usr/share/xsessions/plasma.desktop:Name=Plasma
/usr/share/xsessions/ubuntu.desktop:Name=Ubuntu ...
Escritorio remoto
1. RDP
RDP (Remote Desktop Protocol) es un protocolo de acceso a un escritorio remoto, desarrollado por Microsoft para sistemas Windows. Los clientes e incluso los servidores están disponibles para todos los sistemas operativos, especialmente en Linux. Es posible proteger el protocolo mediante certificados.
El nombre del servidor es xrdp. Está disponible para la mayoría de las distribuciones a través del paquete de software del mismo nombre:
Ejemplo
Instalación del paquete de software:
Distribución de tipocRed Hat (desde el repositorio EPEL):
# yum -y install xrdp
Distribución de tipo Debian:
# apt-get install xrdp # Ubuntu o Debian
Arranque y activación automáticos:
# systemctl start xrdp
# systemctl enable xrdp
El servidor RDP escucha en el puerto 3389 a través de TCP. Por lo tanto, es necesario permitir las conexiones entrantes en este puerto a nivel de firewall.
Ejemplo
Distribución de tipo Red Hat:
# firewall-cmd --permanent --zone=public --add-port=3389/tcp
# firewall-cmd --reload
Distribución de tipo Debian:
# ufw allow 3389/tcp
# systemctl restart xrdp
La conexión al servidor RDP se realiza desde un software cliente, en Windows, MacOS o Linux.
Para Linux, puede utilizar remmina (que también gestiona VNC o Spice), tsclient, etc.
Ejemplo
Conexión a un servidor RDP de Debian 12, desde Windows, con el comando Windows...
Accesibilidad
Algunos usuarios tienen problemas para leer la pantalla, escribir con el teclado o usar el ratón. Linux y sus herramientas ofrecen una variedad de formas de ayudarlos.
A continuación, se describen brevemente de los medios disponibles para ayudar a las personas con discapacidad motora o problemas de visión.
1. Compatibilidad con teclado y ratón
Un simple ajuste del teclado o del ratón puede ayudar a una persona con problemas motores. El módulo AccessX del entorno gráfico permite muchos ajustes. Se puede acceder a ellos desde los centros de configuración de los entornos gráficos. En KDE, por ejemplo, el método Accesibilidad de la sección Personalización de la configuración del sistema, permite modificar muchos ajustes predeterminados, incluido el funcionamiento del teclado. Por ejemplo, en la pestaña Filtros de teclado, marque Usar teclas lentas. Si una persona quiere realizar una acción, esta solo se tendrá en cuenta una vez transcurrido el tiempo definido (0,5 segundos por defecto, ajustable). La siguiente opción, Usar teclas rebotantes, espera el tiempo especificado antes de repetir una tecla si se pulsa durante demasiado tiempo.
![images/cet09_010.png](https://www.eni-training.com/download/4faac64c-54d8-4e3e-bd6b-757d457f5155/images/cet09_010.png?id=AAEAAAD%2f%2f%2f%2f%2fAQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwdGVzdCB2Ml84IC0gZmZhNjQzOWQtZDZjYi00NzYxLWJhYTMtZWZkZDNiZDcwMWM25rSq0F7p2IgL)
La configuración de accesibilidad de KDE4 Plasma 54
En este mismo sentido, se puede activar un soporte visual o auditivo en función de las acciones realizadas. Pulsar una tecla puede hacer que la pantalla...
Validación de los conocimientos adquiridos: preguntas/respuestas
1. Preguntas
Si cree conocer suficientemente este capítulo, conteste a las siguientes preguntas:
X Windows
1 ¿Qué componente de X Window permite que los clientes y servidores X se comuniquen?
-
A - Xt
-
B - Motif
-
C - Xlib
-
D - Qt
2 ¿Es posible que una aplicación X que se ejecuta en una máquina se muestre en otra máquina?
3 ¿Quién define el diseño y el estilo de las ventanas?
4 ¿Es posible elegir su administrador de ventanas?
5 ¿Qué es un Widget?
-
A - Una función de gestión de ventanas.
-
B - Un elemento básico de la interfaz gráfica.
-
C - Un estilo de visualización.
-
D - Una librería de gestión de eventos.
6 Enumere, al menos, dos toolskits diferentes y comunes.
7 ¿Qué puede hacer si tiene demasiadas ventanas abiertas en su escritorio?
Xorg
8 ¿Dónde se encuentra el archivo de configuración de Xorg?
9 ¿Cuál es el mejor método para instalar Xorg?
10 ¿Cuáles son las cuatro formas de configurar X Window?
11 ¿Qué sección del archivo de configuración de Xorg permite configurar un teclado o un ratón?
-
A - InputDevice
-
B - Mouse
-
C - Keyboard
-
D - Modules
12 ¿Qué opción relacionada con el controlador kbd permite modificar el idioma del teclado?
13 Su ratón dispone de una rueda constituida por la combinación de los botones 4 y 5. ¿Qué opción debe añadir en la sección correspondiente de Xorg?
14 Cuando se inicia X, se muestra una pantalla gris con una cruz en el medio y nada más. ¿Qué está pasando?
Administradores de visualización
15 ¿Para qué sirve el administrador de visualización?
-
A - Para abrir una sesión gráfica local.
-
B - Para abrir una sesión gráfica remota.
-
C - Para autenticar a un usuario.
-
D - Para gestionar varias sesiones X.
16 ¿Cómo se llama el protocolo X que permite gestionar inicios de sesión y conexiones remotas?
17 ¿Es posible iniciar KDE desde GDM?
18 ¿Cuál es el primer archivo que se ejecuta en el entorno gráfico del usuario después de iniciar sesión?
19 ¿Dónde puede un usuario colocar su propia configuración de sesión?...
Prácticas
1. Entender Xterm
1. |
Desde un sistema en modo no gráfico (run level 3 u objetivo systemd multiusuario, por ejemplo), ejecute el servidor X Window solo, en segundo plano. Debería ver una pantalla gris y una cruz en el medio. ¿Qué acciones son posibles? |
2. |
Pulse en las teclas [Alt][Ctrl][F1] y luego en [Ctrl] C. Está de nuevo en la consola en modo texto. Exporte la variable DISPLAY, que se utiliza para indicar a los clientes X las "coordenadas" del servidor X. |
3. |
Desde la consola, después de haber exportado la variable, ejecute el programa twm en segundo plano (instale el paquete de software twm si es necesario). |
4. |
Pase a X Window con la combinación de teclas [Alt][F7]. Pulse en el botón izquierdo del ratón. ¿Qué sucede? |
5. |
Desde Xterm, escriba el comando xclock. |
Entender Xterm
1. |
Desde un sistema en modo no gráfico (run level 3 u objetivo systemd multiusuario, por ejemplo), ejecute el servidor X Window solo, en segundo plano. Debería ver una pantalla gris y una cruz en el medio. ¿Qué acciones son posibles?
Aparte de mover el ratón, nada funciona: no hay administrador de ventanas, ni se inician programas. |
2. |
Pulse en las teclas [Alt][Ctrl][F1] y luego en [Ctrl] C. Está de nuevo en la consola en modo texto. Exporte la variable DISPLAY, que se utiliza para indicar a los clientes X las "coordenadas" del servidor X.
|
3. |
Desde la consola, después de haber exportado la variable, ejecute el programa twm en segundo plano (instale el paquete de software twm si es necesario).
|
4. |
Pase a X Window con la combinación de teclas [Alt][F7]. Pulse en el botón izquierdo del ratón. ¿Qué sucede? Ha lanzado twm, que es un administrador de ventanas básico. Al pulsar en el botón derecho del ratón, se accede a un menú. En este menú, haga clic en Xterm o en su equivalente. Aparece la ventana Xterm. Haga clic en la pantalla para colocarla. |
5. |
Desde Xterm, escriba el comando xclock.
Coloque la nueva ventana. Para que funcione, X requiere un entorno básico, el administrador de ventanas. Este administrador se basa en los widgets para dibujar las ventanas, y las funciones primitivas para... |