Interfaces gráficas de usuario
¿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.
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.
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 ibus-x11
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.
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...
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.
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...