Después de 13 meses de desarrollo, se presenta la versión estable del protocolo, el mecanismo de interacción entre procesos y las bibliotecas Wayland 1.24. La rama 1.24 es retrocompatible en el nivel de API y ABI con las versiones 1.x y contiene principalmente correcciones de errores y actualizaciones menores del protocolo. El trabajo del proyecto se distribuye bajo la licencia MIT. El servidor compuesto de referencia Weston, que proporciona código y ejemplos de trabajo para utilizar Wayland en entornos de escritorio y soluciones integradas, se desarrolla dentro de un ciclo de desarrollo separado.
Principales cambios en el protocolo:
- Se implementó la interfaz wl_fixes, que permite resolver problemas con otras interfaces de software de protocolos básicos que no pueden ser solucionados por las capacidades propias de dichas interfaces. Por ejemplo, la solicitud "wl_fixes::destroy_registry" permite eliminar el objeto wl_registry, tras lo cual el cliente no podrá utilizarlo y el servidor compuesto dejará de enviar eventos a través de él.
- En la interfaz wl_keyboard::key se ha implementado un pseudoestado "repeated", que indica que la tecla está presionada. La tecla solo puede entrar en el estado "repeated" tras pasar al estado "pressed", pero antes de alcanzar el estado "released". Los eventos relacionados con el nuevo estado pueden generarse varias veces mientras la tecla esté presionada. Este cambio permite a los servidores compuestos tratar las pulsaciones repetidas al mantener las teclas como estados separados, y no simplemente como un flujo de eventos repetidos de pulsación ("pressed"), lo que puede ser útil para organizar el trabajo con escritorios remotos.
- Se añadieron las funciones wl_display_dispatch_queue_timeout() y wl_display_dispatch_timeout() para despachar eventos en la cola teniendo en cuenta un tiempo de espera (las funciones wl_display_dispatch y wl_display_dispatch_queue solo retornan 0 en ausencia de eventos, mientras que las variantes *_timeout también lo hacen cuando se cumple el tiempo de espera).
- Se añadieron las funciones wl_shm_buffer_ref() y wl_shm_buffer_unref() para acceder a la memoria compartida relacionada con el búfer wl_shm_buffer, después de su eliminación (por ejemplo, cuando el cliente finaliza su trabajo). Estas funciones permiten desvincular el búfer wl_shm_buffer de la vida útil del recurso principal wl_buffer, cuando el servidor compuesto necesita posponer la transición a un nuevo estado.
- Se han añadido las funciones wl_proxy_get_interface() y wl_resource_get_interface(), que devuelven wl_interface para el recurso especificado, lo cual es necesario en los enlaces para lenguajes de tipado dinámico.
- Se ha añadido la función wl_resource_post_error_vargs(), que es una alternativa a la función wl_resource_post_error() con la posibilidad de pasar una lista de argumentos para dar formato a la cadena (va_list).
Los eventos más destacados relacionados con Wayland que ocurrieron desde la publicación de la última versión:
- Mejora del soporte de Wayland en los controladores propietarios de NVIDIA.
- KDE planea mantener solo el soporte para Wayland. Separación del código kwin_x11 y kwin_wayland.
- Ubuntu y Kubuntu mantendrán solo el soporte para la sesión de Wayland en GNOME y KDE.
- En GDM, por defecto, solo se mantiene el soporte para Wayland.
- GTK ha declarado obsoleto el backend para X11.
- En Fedora 43 se ha decidido eliminar del repositorio los paquetes utilizados en GNOME para funcionar sobre el servidor X. Todos los usuarios de GNOME con X11 serán forzados a cambiar a una sesión basada en Wayland.
- En el entorno de escritorio Budgie solo se mantendrá el soporte para Wayland.
- En Xfce 4.20 se ha implementado soporte parcial para Wayland.
- MATE 1.28 con soporte experimental para Wayland.
- Wayback es un servidor compositor de Wayland para ejecutar escritorios basados en X11.
- La compañía Valve ha lanzado el proyecto Frog para acelerar la promoción de nuevos protocolos de Wayland.
- La biblioteca de creación de interfaces gráficas Cosmoe, que utiliza Wayland y una API al estilo de BeOS.
- Activación por defecto del controlador de Wayland en Wine.
- Transición de Raspberry Pi OS a Wayland.
- Lanzamiento del toolkit gráfico FLTK 1.4.0 con soporte para Wayland.
- Se ha añadido una fase adicional de promoción de protocolos, llamada 'experimental', al conjunto de Wayland-Protocols, dirigida a reducir la barrera para la integración de protocolos, acelerar la entrega de protocolos a los desarrolladores y fomentar la implementación temprana en proyectos existentes.
- AMD está desarrollando su propio servidor compositor ACS, que utiliza Wayland.
- Siete versiones alfa del entorno de escritorio COSMIC.
- Actualización de servidores compositores: Weston 14.0, Niri 25.05, Wayland Maker 0.5, miracle-wm 0.5, Hyprland 0.49, labwc 0.8.3, Cage 0.2, Wayfire 0.9, Sway 1.11.
Extensiones de protocolos añadidas en el último año, que complementan el protocolo base de Wayland y se entregan en un conjunto separado de Wayland-Protocols:
- color-management — capacidades para gestionar el color y soportar el rango dinámico extendido de brillo (HDR, High Dynamic Range).
- color-representation-v1 — definición de la representación del color de la superficie de Wayland.
- xdg-toplevel-tag — permite a los clientes de Wayland asociar etiquetas a superficies de nivel superior, que el servidor compositor puede utilizar para identificar ventanas después de reiniciar la aplicación.
- efecto de fondo ext — aplicación de efectos a partes semitransparentes de la superficie de Wayland, como el desenfoque de fondo.
- desplazamiento del puntero — permite a la aplicación mover instantáneamente el puntero a la posición dada.
- gestión de sesiones xx — recuperación del estado de las ventanas para sesiones interrumpidas (por ejemplo, después del cierre inesperado del gestor de composición).
- xx-input-method — desarrollo de un nuevo protocolo para el uso de métodos de entrada de texto. ext-data-control — permite a los clientes privilegiados gestionar el procesamiento de datos, por ejemplo, para implementar administradores del portapapeles.
- ext-workspace — implementa el concepto de escritorios virtuales y ofrece eventos con información sobre el estado de los escritorios, así como opciones para activar y desactivar escritorios.
- xdg-system-bell — permite emitir una señal del sistema, que puede utilizarse, por ejemplo, como una advertencia en emuladores de terminal.
- xdg-toplevel-icon — para vincular un icono a una ventana de nivel superior.
- ext-image-capture-source y ext-image-copy-capture — captura del contenido que se muestra en pantalla.
- fifo — implementa un mecanismo FIFO (primero en llegar, primero en salir) para el procesamiento de la cola de actualización del contenido de la superficie mostrada.
- commit-timing — permite vincular un límite de tiempo al contenido de la superficie (el servidor de composición debe reflejar el cambio de contenido en un tiempo especificado, pero no antes).
Recordemos que Wayland es un protocolo de interacción entre el servidor compositor y las aplicaciones que operan con él. Los clientes realizan la representación de sus ventanas en un búfer separado, transfiriendo información sobre actualizaciones al servidor compositor, que combina el contenido de los búferes de las aplicaciones individuales para generar la salida final teniendo en cuenta matices como la superposición de ventanas y la transparencia. En otras palabras, el servidor compositor no proporciona una API para la representación de elementos individuales, sino que opera solo con ventanas ya formadas, lo que permite eliminar el doble almacenamiento en búfer al utilizar bibliotecas de alto nivel como GTK y Qt, que se encargan de la composición del contenido de las ventanas.
Wayland resuelve muchos problemas de seguridad de X11, ya que, a diferencia de este último, aísla la entrada y salida para cada ventana, impidiendo que un cliente acceda al contenido de las ventanas de otros clientes y evitando la captura de eventos de entrada relacionados con otras ventanas. El soporte para trabajar directamente con Wayland se ha implementado en la mayoría de las bibliotecas gráficas utilizadas en Linux, incluyendo GTK, Qt, SDL, FLTK, wxWidgets, Clutter y EFL (Enlightenment Foundation Library).
La interacción con el hardware en Wayland/Weston, por ejemplo, la inicialización, el cambio de modos de video (drm modesetting) y la gestión de memoria (GEM para i915 y TTM para radeon y nouveau) de las tarjetas gráficas, puede llevarse a cabo directamente a través de un módulo que opera a nivel del núcleo, lo que permite prescindir de privilegios de superusuario. Para permitir que las aplicaciones X11 estándar se ejecuten en un entorno basado en Wayland, se utiliza el componente DDX XWayland (Device-Dependent X), que es similar en funcionamiento a Xwin y Xquartz para plataformas Win32 y macOS.


Fuente: opennet.ru
