Wayland (Español)

From ArchWiki
Esta traducción de Wayland fue revisada el 2023-05-22. Si existen cambios puede actualizarla o avisar al equipo de traducción.

Wayland es un protocolo de servidor gráfico. Tiene como objetivo volverse el sucesor del X Window System. Puede consultar una comparación entre Wayland y Xorg en Wikipedia.

Los servidores gráficos que usan el protocolo de Wayland son denominados compositores debido a que también actúan como un gestor de composición de ventanas. Debajo puede encontrar una lista de compositores de Wayland.

Para obtener una ejecución fluida y compatibilidad con aplicaciones nativas de X11 puede usar Xwayland, que proveé un servidor X en Wayland.

Requisitos

La mayoría de los compositores de Wayland sólo funcionan en sistemas que utilicen Kernel mode setting. Wayland por sí mismo no proporciona un entorno gráfico; para ello necesita un compositor (vea la siguiente sección), o un entorno de escritorio que incluya un compositor (por ejemplo GNOME (Español) o KDE (Español)).

Para que el controlador de GPU y el compositor Wayland sean compatibles deben soportar la misma API de búfer. Hay dos APIs principales: GBM y EGLStreams.

API de búfer Soporte de controlador para GPU Soporte de compositor Wayland
GBM Todos excepto NVIDIA < 495* Todos
EGLStreams NVIDIA GNOME (Español), Weston (con un parche de un tercero)
* NVIDIA ≥ 495 soporta tanto EGLStreams como GBM.[1]

Desde que NVIDIA introdujo el soporte de GBM, muchos compositores (incluyendo Mutter y KWin) empezaron a usarlo por defecto para NVIDIA ≥ 495. GBM se considera generalmente mejor con un soporte más amplio, y EGLStreams sólo tenía soporte porque NVIDIA no proporcionaba ninguna forma alternativa de utilizar sus GPUs bajo Wayland con sus controladores propietarios. Además, KWin abandonó el soporte para EGLStreams después de que GBM fuera introducido en NVIDIA.

Si utiliza un entorno de escritorio/compositor popular y una GPU con soporte por NVIDIA, lo más probable es que ya utilice el backend GBM. Para comprobarlo, ejecute journalctl -b 0 --grep "renderer for". Para forzar GBM como backend, asigne las siguientes variables de entorno:

GBM_BACKEND=nvidia-drm
__GLX_VENDOR_LIBRARY_NAME=nvidia

Compositores

Consulte Window manager (Español)#Tipos para las diferencias entre Mosaico (tiling) y Apilamiento (stacking).

Mosaico

https://github.com/project-repo/cagebreak || cagebreakAUR
  • Cardboard — Compositor de desplazamiento, inspirado en PaperWM, basado en wlroots.
https://gitlab.com/cardboardwm/cardboard || cardboard-gitAUR[enlace roto: package not found]
  • dwl — Compositor de Wayland similar a dwm basado en wlroots.
https://github.com/djpohly/dwl || dwlAUR
  • Hyprland — Un compositor de mosaico dinámico de Wayland que no hace sacrificios en su apariencia.
https://hyprland.org || hyprland
  • japokwm — Compositor de mosaico dinámico de Wayland con la idea de crear disposiciones (layouts), basado en wlroots.
https://github.com/werererer/japokwm || japokwm-gitAUR
  • newm — Compositor de Wayland escrito con ordenadores portátiles y paneles táctiles en mente (actualmente sin mantenimiento).
https://github.com/jbuchermn/newm/ || newm-gitAUR
  • Qtile — Un gestor de ventanas en mosaico completo y hackeable, y un compositor Wayland escrito y configurado en Python.
https://github.com/qtile/qtile || qtile
https://github.com/ifreund/river || river
  • Sway — Compositor de Wayland compatible con i3 y basado en wlroots.
https://github.com/swaywm/sway || sway
  • Velox — Gestor de ventanas sencillo basado en swc, inspirado por dwm y xmonad.
https://github.com/michaelforney/velox || velox-gitAUR
  • Vivarium — Compositor de mosaico dinámico de Wayland que usa wlroots, con la semántica del entorno de escritorio inspirada por xmonad.
https://github.com/inclement/vivarium || vivarium-gitAUR

Apilamiento

https://www.enlightenment.org/ || enlightenment
  • hikari — Compositor inspirado por cwm que es desarrollado en FreeBSD aunque también soporta Linux.
https://hikari.acmelabs.space/ || hikariAUR
https://userbase.kde.org/KWin || kwin
  • Liri Shell — Parte de Liri,escrito usando QtQuick y QtCompositor como compositor para Wayland.
https://github.com/lirios/shell || liri-shell-gitAUR
  • labwc — Compositor basado en wlroots inspirado en Openbox.
https://github.com/labwc/labwc || labwc-gitAUR
https://gitlab.gnome.org/GNOME/mutter || mutter
  • wayfire — Compositor 3D inspirado por Compiz y basado en wlroots.
https://wayfire.org/ || wayfireAUR
  • Weston — Compositor de Wayland diseñado para ser correcto, fiable, predecible y eficaz.
https://gitlab.freedesktop.org/wayland/weston || weston
  • wio — Compositor basado en wlroots que busca replicar la apariencia del escritorio Rio de Plan 9.
https://wio-project.org/[enlace roto 2022-09-23] || wio-wlAUR

Otros

  • Cage — Muestra en modo pantalla completa una única aplicación, como un kiosko.
https://www.hjdskes.nl/projects/cage/ || cage
  • nwg-shell — Una shell basada en GTK para el compositor Wayland sway.
https://github.com/nwg-piotr/nwg-shell || nwg-shellAUR
  • kiwmi — Un compositor de Wayland completamente programable.
https://github.com/buffet/kiwmi || kiwmi-gitAUR

Algunos de los mencionados soportan gestores de pantalla. Verifique /usr/share/wayland-sessions/compositor.desktop para saber cómo son iniciados.

Gestores de inicio de sesión

Los gestores de pantalla, o gestor de inicio de sesión, listados debajo soportan el inicio de compositores de Wayland.

Nombre ¿Se ejecuta en Wayland? Descripción
GDM Gestor de pantalla de GNOME (Español).
greetd Greeter de Wayland disponible Demonio de inicio de sesión mínimo y flexible.
LightDM No Gestor de pantalla multiescritorio.
Ly No Gestor de pantalla con interfáz de usuario en terminal (TUI) escrito en C.
SDDM Únicamente con sddm-gitAUR Gestor de pantalla basado en QML.
tbsm No Un lanzador de sesiones simple con una interfáz de usuario por consola (CLI) escrito en bash.

Xwayland

Xwayland es un servidor X que se ejecuta dentro de Wayland y proveé compatibilidad para aplicaciones nativas de X11 que aún no tienen soporte en Wayland. Para usarlo instale el paquete xorg-xwayland.

Xwayland se inicia a través de un compositor, por lo que debe consultar la documentación del compositor elegido para comprobar la compatibilidad con Xwayland y las instrucciones sobre cómo iniciar Xwayland.

Nota:
  • Seguridad: Xwayland es un servidor X, por lo que no proveé las características de seguridad de Wayland
  • Rendimiento: Xwayland tiene un rendimiento similar a X11. En algunos casos puede observar un rendimiento deteriorado, especialmente con tarjetas gráficas NVIDIA.
  • Compatibilidad: Xwayland no es totalmente compatible con X11. Algunas aplicaciones pueden no funcionar correctamente en Xwayland.

Controlador de NVIDIA

Nota: Los controladoes de NVIDIA anteriores a la versión 470 (es decir nvidia-390xx-dkmsAUR) no soportan aceleración por hardware, causando que las aplicaciones no nativas de Wayland tengan bajo desempeño en la sesión de Wayland.

Se requiere habilitar DRM KMS. Puede encontrar información adicional en la There may be additional information in the documentación oficial independientemente de su gestor de pantalla (por ejemplo GDM).

Consola de depuración de Kwin en Wayland

Si usa kwin, ejecute el siguiente comando para saber qué ventanas utilizan Xwayland o Wayland nativo, superficies, entradas de eventos, contenidos del portapapeles y más.

$ qdbus org.kde.KWin /KWin org.kde.KWin.showDebugConsole

Detectar visualmente aplicaciones de Xwayland

Para determinar si una aplicación se ejecuta usando Xwayland puede iniciar extramausAUR. Mueva el cursor del ratón sobre la ventana de la aplicación, si el ratón rojo se mueve la aplicación funciona vía Xwayland.

Alternativamente puede usar xorg-xeyes y ver si los ojos se mueven cuando pasa el cursor del ratón sobre la ventana de la aplicación.

Otra opción es ejecutar xwininfo (de xorg-xwininfo) en una terminal: al pasar el cursor del ratón sobre una ventana de Xwayland el puntero debería convertirse en un símbolo +. Si da click en la ventana se mostrará información y finalizará su ejecución. Puede usar Ctrl+C para terminar el comando.

Bibliotecas GUI

Consulte los detalles en la página oficial.

GTK

Los paquetes gtk3 y gtk4 tienen el backend de Wayland habilitado. GTK usará por defecto el backend de Wayland, aunque es posible forzar el uso de Xwayland modificando la variable de entorno: GDK_BACKEND=x11.

Para problemas relacionado con el tema de las aplicaciones consulte GTK (Español)#Backend de Wayland.

Qt

Para habilitar el soporte de Wayland en Qt (Español) 5 o 6, instale respectivamente qt5-wayland o qt6-wayland.

Para ejecutar una aplicación de Qt con el complemento de Wayland [4], utilice la variable de entorno -platform wayland o QT_QPA_PLATFORM=wayland. Para forzar el uso de X11 en una sesión de Wayland use QT_QPA_PLATFORM=xcb. Esto puede ser necesario para aplicaciones propietarias que no usan la implementación de Qt del sistema, como zoomAUR. QT_QPA_PLATFORM="wayland;xcb" permite a Qt usar el complemento xcb (X11) si Wayland no está disponible [5].

En algunos compositores, por ejemplo sway (Español), las aplicaciones Qt que se ejecutan de forma nativa pueden tener funciones faltantes. Por ejemplo, KeepassXC no podrá minimizarse a la bandeja de estado. Esto puede resolverse instalando qt5ct y asignando QT_QPA_PLATFORMTHEME=qt5ct antes de ejecutar la aplicación.

Clutter

El conjunto de herramientas de Clutter tiene un backend Wayland que permite que se ejecute como cliente de Wayland. El backend está activado en el paquete clutter.

Para ejecutar una aplicación de Clutter en Wayland, establezca CLUTTER_BACKEND=wayland.

SDL2

Para ejecutar una aplicación de SDL en Wayland, establezca SDL_VIDEODRIVER=wayland. SDL_VIDEODRIVER="wayland,x11" permite a SDL2 usar el controlador de video de X11 en caso de que Wayland no esté disponible [6].

GLFW

Para usar GLFW con el backend de Wayland, instale el paquete glfw-wayland (en lugar de glfw-x11).

GLEW

El paquete glew-waylandAUR aún no funciona con la mayoría de aplicaciones basadas en GLEW, por lo que la única opción es usar Xwayland. Véase FS#62713.

EFL

EFL tiene soporte completo para Wayland. Para ejecutar una aplicación de EFL en Wayland, vea la página del proyecto de Wayland.

winit

Winit es una biblioteca de manejo de ventanas escrita en Rust. Por defecto usará el backend de Wayland, aunque es posible forzar el uso de Xwayland modificando la variable de entorno: WINIT_UNIX_BACKEND=x11.

Electron

La compatibilidad con Wayland puede activarse mediante opciones de línea de comandos por aplicación o de forma más global mediante un archivo de configuración.

Banderas de línea de comandos

Para utilizar aplicaciones basadas en electron de forma nativa en Wayland, es necesario añadir los siguientes indicadores a la línea de comandos de ejecución de la aplicación (para Electron 20): --ozone-platform-hint=auto.

La barra superior faltante puede arreglarse usando la bandera: --enable features=WaylandWindowDecorations. Esto usualmente será necesario en GNOME (Español) (soportado desde electron17).

Use --enable-webrtc-pipewire-capturer para solucionar el problema de captura de pantalla en Wayland. La captura está basada en xdg-desktop-portal.

Puede modificar el archivo .desktop y añadir las banderas al final de la línea Exec=.

Nota: Algunos paquetes, como visual-studio-code-binAUR (reporte del bug), no envían las banderas a Electron, por lo que será necesaria una solución desde el equipo de desarrollo.

Archivo de configuración

Crear o editar el archivo ${XDG_CONFIG_HOME}/electron-flags.conf (por defecto ~/.config/electron-flags.conf si ${XDG_CONFIG_HOME} no está establecida) y agregue las banderas mencionadas anteriormente (una bandera por línea, sin saltos de líneas):

~/.config/electron-flags.conf
--enable-features=WaylandWindowDecorations
--ozone-platform-hint=auto
Nota: Estos archivos de configuración sólo funcionan con los paquetes de Electron en los repositorios oficiales y los paquetes que los usan. No funcionan para los paquetes que tienen su propia versión de Electron, como slack-desktopAUR. Aveces existen algunas aternativas como slack-electronAUR.

Versiones anteriores de Electron

electron-flags.conf solamente funciona para las últimas versiones de Electron. Versiones anteriores pueden configurarse usando su propio archivo electron<version>-flags.conf. Los archivos con una versión pueden tener un enlace suave a ${XDG_CONFIG_HOME}/electron-flags.conf.

Versiones más anteriores pueden requerir banderas diferentes, dependiendo en la versión correspondiente de Chromium. Por ejemplo, las siguientes banderas funcionan en Electron 13:

~/.config/electron13-flags.conf
--enable-features=UseOzonePlatform
--ozone-platform=wayland

Java

La implementación de código abierto de la plataforma OpenJDK de Java, no cuenta con soporte nativo para Wayland. Será hasta Wakefield, que el proyecto busque implementar OpenJDK en Wayland, mientras tanto puede usar Xwayland.

Véase Debian:Wayland#Java Programs (supported since OpenJDK 16?):

Desde OpenJDK 16, la JRE puede usar de forma dinámica GTK3 (que soporta Wayland), aparentemente esto tiene soporte de acuerdo a esta discusión.
La _JAVA_AWT_WM_NONREPARENTING variable de entorno puede ser establecida a "1" para solucionar cuando una aplicación inicia mostrando una pantalla negra.

Consejos y Trucos

Automatización

  • ydotool (ydotool) - Herramienta de línea de comandos de automatización (no limitada a wayland). Habilite/inicie la unidad de usuario ydotool.service. Véase ydotoold(8), ydotoold(1).
  • wtype (wtype) - Herramienta similar a xdotool para Wayland. Consulte wtype(1).
  • keyboard - Biblioteca de Python que funciona en Windows y Linux con soporte experimental para OS X. También véase la biblioteca mouse.
  • wlrctl (wlrctlAUR) - Una utilidad de linea de comandos para extensiones de wlroots (soporta foreign-toplevel-management, virtual-keyboard, virtual-pointer).

Reasignación de teclas de teclado o ratón

Véase Input remap utilities.

Grabar ventanas de Wayland con aplicaciones X11

This article or section is a candidate for moving to Screen capture#Wayland.

Notes: Existe una página dedicada a este tema. (Discuss in Talk:Wayland (Español))

Puede compartir ventanas nativas de Wayland (o toda la pantalla) a la aplicación de X11. Para esto deberá usar xwaylandvideobridge-binAUR[enlace roto: package not found]. Consulte Fixing Wayland: Xwayland screen casting para más detalles.

Solución de problemas

Corrección de color

Véase Backlight#Color correction.

Movimiento lento, fallos gráficos y bloqueos

Usuario de Gnome-shell pueden experimentar errores de pantalla cuando cambian a Wayland desde X. Una causa puede ser que la variable CLUTTER_PAINT=disable-clipped-redraws:disable-culling haya sido asignada para la sesión Xorg de Gnome-shell. Para mitigar este error simplemente intente eliminarla de /etc/environment u otros archivos rc.

Pantalla remota

  • wlroots (usado por sway) ofrece un backend VNC mediante wayvnc, desde la versión 0.10. el backend RDP ha sido eliminado [7].
  • mutter habilita escritorio remoto cuando se compila, consulte [8] y gnome-remote-desktop para más detalles.
  • Hubo una fusión FreeRDP en Weston en 2013, que lo habilita usando una bandera de compilación. El paquete weston usa esta bandera desde la versión 6.0.0.
  • waypipeAUR (o waypipe-gitAUR) es un proxy transparente para aplicaciones de Wayland, con un wrapper para ejecutarlo en SSH (Español).

Detección de entrada en juegos, escritorio remoto y ventanas de máquinas virtuales

A diferencia de Xorg, Wayland no permite la captura exclusiva de dispositivos de entrada, también conocida como captura activa o explícita (por ejemplo teclado, ratón), en su lugar, depende del compositor de Wayland enviar los atajos de teclado y confinar el apuntador del ratón a la ventana de la aplicación.

Este cambio en la captura de entrada irrumple el comportamiento de las aplicaciones actuales, lo que significa:

  • Las combinaciones de teclas de acceso rápido y los modificadores serán capturados por el compositor y no se enviarán al escritorio remoto ni a las ventanas de la máquina virtual.
  • El puntero del mouse no estará restingido a la ventana de la aplicación, lo cual puede causar un efecto de paralaje donde la ubicación del puntero dentro de la ventana de la máquina virtual o escritorio remoto es desplazada con respecto al puntero de la máquina anfitriona.

Wayland soluciona esto al agregar extensiones de protocolo para Wayland y Xwayland. El soporte para dichas extensiones debe de ser incluido a los compositores de Wayland. En el caso de los clientes nativos, los toolkits (por ejemplo, GTK, Qt) deben soportar estas extensiones, o las aplicaciones mismas si no se usa toolkit alguno. Para las aplicaciones de Xorg o toolkits no es necesario cambio alguno, pues el soporte de Xwayland es suficiente.

Estas extensiones son incluidas en wayland-protocols, y soportadas por xorg-xwayland.

Las extensiones relacionadas son:

Compositores que soportan Wayland:

Toolkits soportados:

  • GTK desde la versión 3.22.18.

Temas GTK no funcionan

Véase https://github.com/swaywm/sway/wiki/GTK-3-settings-on-Wayland.

Evitar usar los módulos de NVIDIA

Asigne __EGL_VENDOR_LIBRARY_FILENAMES=/usr/share/glvnd/egl_vendor.d/50_mesa.json como variable de entorno antes de ejecutar un compositor de Wayland como sway (Español).

Ampliación/escalamiento de superficies

La ampliación de pantalla aún no está resuelta, se ha fusionado un pull request a mediados de 2022 proporcionando al protocolo wp-surface-scale.

Véase también