¿Qué es Wayland en Linux y en qué se diferencia de X?

Publicado: 2023-07-17
Administrador de archivos abierto en la computadora portátil System76 Gazelle
Hannah Stryker / Geek de instrucciones
Wayland es un sistema de ventanas de reemplazo para las distribuciones de Linux. Reemplaza el antiguo estándar X11. Debido a que requiere que las aplicaciones se modifiquen para que funcionen con él, la adopción ha sido lenta hasta ahora. Al momento de escribir, la mayor seguridad es la principal ventaja sobre X11.

X11, o el sistema de ventanas X, permite que su entorno de escritorio gráfico muestre y controle las ventanas. Wayland es un reemplazo para X11. Está diseñado para ser más rápido y más seguro. Esto es lo que necesita saber sobre ellos.

Tabla de contenido

¿Qué es Wayland?
Los muchos nombres de X
Cómo funciona X11
Cómo funciona Wayland
Adopción lenta de Wayland por parte de las aplicaciones
¿Estás usando Wayland o X11?
¿Deberías usar Wayland o X11?

¿Qué es Wayland?

Wayland es un reemplazo moderno para X11, que ha sido el sistema de ventanas predeterminado en Linux durante décadas. Wayland es un protocolo de comunicación que define la mensajería entre un servidor de visualización de X Window y las aplicaciones cliente. El proyecto Wayland proporciona bibliotecas de cliente y servidor que permiten que las aplicaciones utilicen el protocolo.

El proyecto Wayland fue iniciado por un desarrollador de Red Hat en 2008.

Los muchos nombres de X

El sistema X Window es un sistema de ventanas, lanzado por primera vez para Unix por el Instituto de Tecnología de Massachusetts en 1984. Las aplicaciones pueden aprovechar la funcionalidad que ofrece el sistema de ventanas para generar interfaces de usuario.

En 1987, el sistema X Window había alcanzado la versión 11 y se conoció como X11. Ahora es administrado por la Fundación X.Org. Todavía está en la versión 11, aunque ha habido muchos lanzamientos más pequeños desde 1987. En el momento de escribir este artículo, la versión estable actual es X11R7.7.

La "X" en el nombre no significa diez en números romanos, ni implica "Xtra", "Xtended" ni nada por el estilo. Un sistema de ventanas anterior se llamaba "W", por "ventanas", y simplemente pasaron a la siguiente letra del alfabeto cuando comenzaron el nuevo proyecto.

Escuchará que se hace referencia al sistema X Window como "X", "X11", "Xorg", "X Windows" y "X Window System".

Cómo funciona X11

El sistema X Window maneja eventos y primitivas de bajo nivel, como interactuar con el mouse y dibujar y mover ventanas. Las aplicaciones manejan las imágenes y el diseño de la interfaz. La apariencia de las ventanas, qué botones tienen y dónde se ubican esos botones son elecciones que hace el programador de la aplicación. El sistema X Window dibuja el diseño resultante en la pantalla.

X11 proporciona una definición para la comunicación que debe pasar entre los diversos componentes de un sistema X Window en funcionamiento. Esta comunicación es necesaria porque el código que usa una aplicación habilitada para X para dibujar sus ventanas y elementos de la interfaz no está dentro de la aplicación. Ese trabajo se comparte entre un servidor X y el Administrador de ventanas.

Las aplicaciones son clientes del servidor X. El administrador de ventanas es un tipo especial de cliente. El servidor X está a cargo de administrar recursos, ejecutar solicitudes de dibujo y ordenar eventos como presionar teclas y hacer clic con el mouse en las aplicaciones apropiadas.

También actúa como intermediario en la comunicación entre Window Manager y las aplicaciones, intercambiando mensajes entre ellos. El Administrador de ventanas mantiene una lista de las ventanas que las aplicaciones tienen abiertas, dónde se encuentran en la pantalla, qué tamaño tienen, si se superponen, etc.

Un administrador de ventanas de composición mantiene un búfer fuera de la pantalla para cada ventana. Compone estos búferes en una sola imagen que representa la ventana superior, que representa todo el escritorio, que se escribe en la pantalla.

Todos los entornos de escritorio gráficos modernos, incluidos GNOME y KDE, utilizan administradores de ventanas de composición.

Cómo funciona Wayland

Wayland está destinado a resolver los problemas de X11. La arquitectura X11 requiere muchos mensajes. El servidor X se encuentra entre los clientes y el Administrador de ventanas. También se encuentra entre todo y, a través del kernel, el hardware de gráficos. El volumen de mensajes puede provocar latencia y una experiencia visual lenta y nerviosa.

También hay una gran base de código. Está la aplicación de servidor, la aplicación Window Manager y la biblioteca X11 que usan los clientes. Cuanto más grande (y más antigua) sea su base de código, más difícil será de mantener y más luchará con el código heredado.

Al cambiar la arquitectura, Wayland ha modernizado y simplificado la base de código, brindando beneficios de rendimiento y seguridad mejorada.

En efecto, fusionaron el servidor y el administrador de ventanas en una sola aplicación. Quitaron cualquier código que realizara funciones que ahora realiza el kernel. En lugar de replicar el esfuerzo, aprovecharon la funcionalidad del kernel.

Con Wayland, el compositor y la aplicación cliente se comunican directamente. El compositor mantiene su mapeo interno de qué ventanas están en qué lugar del escritorio, y en qué tamaño y estado se encuentran. Intermedia eventos de cambio de teclado, mouse y ventana, y los envía a las aplicaciones que poseen esas ventanas.

Las aplicaciones actualizan la interfaz de usuario en consecuencia. Una diferencia importante es que el renderizado se realiza dentro de las propias aplicaciones, utilizando las bibliotecas Wayland vinculadas.

La aplicación actualiza el búfer utilizado para contener la ventana o crea uno nuevo y descarta el anterior. La aplicación cliente luego envía una notificación al compositor, diciéndole que actualice su asignación de ventanas y que use el búfer de video nuevo o actualizado.

Esta arquitectura simplificada y el diseño de código moderno brindan mejoras de rendimiento, con cambios de tamaño de ventana y arrastres en particular, que parecen suaves y fluidos.

Adopción lenta de Wayland por parte de las aplicaciones

Wayland es el sistema de ventanas predeterminado en Debian 10 y posteriores, Fedora 34 o posteriores, Ubuntu 18.04 o posteriores y otras distribuciones como Arch Linux. A pesar de esto, la mayoría de las veces, Wayland ejecuta aplicaciones X11.

Hay una capa de compatibilidad llamada XWayland que permite que las aplicaciones X11 se ejecuten bajo Wayland. Esto fue necesario porque la mayoría de las aplicaciones X11 no se modificaron ni se trasladaron a Wayland.

En entornos de escritorio que proporcionan compositores de Wayland, como GNOME, las aplicaciones oficiales como GNOME Text Editor y Maps, Files y Calendar son todas aplicaciones nativas de Wayland. Pero la gran mayoría de las aplicaciones X11 siguen siendo aplicaciones X11 nativas intactas.

Nvidia lanza controladores de GPU Linux de código abierto, con una trampa
RELACIONADO Nvidia lanza controladores de GPU Linux de código abierto, con una trampa

El middleware XWayland generalmente funciona bien, pero puede haber problemas con algunas aplicaciones X11 que realizan funciones relacionadas con la pantalla de bajo nivel, como la grabación de pantalla. Usar Wayland con NVIDIA puede ser tan molesto como lo es con X11, aunque no he tenido problemas con mi controlador diario al usarlo con una GPU NVIDIA GeForce GT 1030.

Es probable que algunos autores de aplicaciones X11 esperen que su aplicación funcione bien con XWayland, y pueden evitar tener que volver a trabajar con ellas en aplicaciones Wayland. No se sorprenda si la adopción y la migración a Wayland son largas y lentas, ya que las nuevas aplicaciones lo adoptan, pero la mayoría de las aplicaciones X11 existentes permanecen como están y depositan sus esperanzas en XWayland.

RELACIONADO: Novedades en Ubuntu 21.04 'Hirsute Hippo'

¿Estás usando Wayland o X11?

Si está utilizando una de las principales distribuciones de Linux, lo más probable es que ya esté utilizando Wayland. Puede verificar emitiendo el siguiente comando.

 eco $XDG_SESSION_TYPE

En un sistema que usa Wayland, la salida será:

Y en un sistema que ejecuta el sistema X Window, verá:

En raras ocasiones, la variable de entorno XDG_SESSION_TYPE no está configurada. En ese caso, puede usar este comando en su lugar:

 loginctl show-session $(loginctl show-user $(whoami) -p Mostrar --valor) -p Tipo --valor

El comando loginctl interno anidado usa el comando show-user para mostrar las propiedades del usuario designado. El comando whoami nos da el nombre del usuario actual. La opción -p (propiedad) restringe la salida de loginctl a la información sobre la configuración de "Mostrar", y usamos la opción --value para devolver solo el valor. No queremos tener la cadena "Display=" en la respuesta de loginctl . Todo eso nos da un ID de sesión.

Pasamos el ID de la sesión al loginctl externo y usamos el comando show-session para mostrar los atributos de la sesión. Usamos la opción -p (propiedad) para restringir la salida a información sobre el tipo de sesión y usamos la opción --value para mostrar el valor sin la etiqueta "Tipo =".

En una computadora que use Wayland, verás:

Usando el comando loginctl en Fedora Linux, para determinar si Wayland o X11 están en uso

Si está ejecutando el sistema X Window, verá:

Usando el comando loginctl en Manjaro inux, para determinar si Wayland o X11 están en uso

¿Deberías usar Wayland o X11?

A menos que tenga problemas, también puede quedarse con lo que ya está usando. Pero si nota inestabilidades o actualizaciones de pantalla entrecortadas, puede intentar pasar a la que no esté usando.

En GNOME, si desea cambiar y probar el otro sistema, en la pantalla de inicio de sesión, haga clic en su nombre de usuario y luego haga clic en el ícono de la rueda dentada en la esquina inferior derecha de la pantalla.

El menú desplegable en GNOME que le permite elegir una experiencia de escritorio basada en Wayland o X11

Un menú le ofrecerá diferentes versiones de GNOME. Las opciones que mencionan "Xorg" usan el sistema X Window y las que no usan Wayland.

RELACIONADO: Cómo enumerar variables de entorno en Linux