Después de más de un año de desarrollo, se presenta la versión estable del protocolo, el mecanismo de comunicación entre procesos y las bibliotecas Wayland 1.23. La rama 1.23 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. Los desarrollos del proyecto se distribuyen bajo la licencia MIT. El servidor compositor de referencia, Weston, que proporciona el código y ejemplos prácticos para el uso de Wayland en entornos de escritorio y soluciones embebidas, se desarrolla en un ciclo de desarrollo separado.
Principales cambios en el protocolo:
- En libwayland se ha implementado una API que permite al cliente determinar el tamaño máximo del búfer interno de conexiones del lado del servidor. El tamaño máximo básico del búfer se establece a través de la interfaz wl_display, y la nueva API permite a los clientes modificarlo en función de cada conexión del cliente. Desde el punto de vista práctico, este cambio permite el uso de búferes más grandes en clientes específicos de Wayland, como Xwayland, que tienen una intensidad de eventos de entrada mayor.
- Para solicitudes (request), eventos (event) y enumeraciones (enum), se ha proporcionado la posibilidad de utilizar el atributo XML "deprecated-since" para marcar elementos obsoletos. En la terminología de Wayland, las solicitudes son mensajes enviados por el cliente a servidor; los eventos son mensajes enviados del servidor al cliente; las enumeraciones son conjuntos de valores numéricos asociados a un nombre específico, que el protocolo maneja.
- Se ha añadido un modo "enum-header" a la utilidad wayland-scanner, destinada a generar archivos de cabecera y código en C a partir de archivos XML que describen el protocolo, que incluye la inclusión en los archivos de cabecera solo de "enumeraciones".
- En wayland-scanner se ha asegurado la generación de funciones de validación (validator) para "enumeraciones" en el lado del servidor.
- Se ha añadido la posibilidad de asignar nombres a las colas de eventos con el fin de simplificar la depuración.
- Se han añadido las funciones wl_client_get_user_data() y wl_client_set_user_data(), que facilitan el apego de datos arbitrarios al cliente.
- Se ha añadido la solicitud wl_shm.release, que permite al cliente informar al servidor sobre la finalización del uso del objeto compartido, lo que permite al servidor liberar la memoria asociada a él.
- Se agregó soporte para la plataforma OpenBSD.
Eventos relacionados con Wayland que han ocurrido desde la publicación de la última versión:
- Publicada la versión XWayland 24.1.0 con soporte para la tecnología Explicit Sync y mejoras en el soporte de arquitecturas de aceleración 2D GLAMOR y EXA.
- Actualización del servidor compositor labwc (Lab Wayland Compositor) con características que recuerdan al gestor de ventanas Openbox.
- Proyecto wprs, que desarrolla para Wayland un gestor de sesiones similar a la utilidad screen, pero para aplicaciones gráficas.
- Publicación del servidor compositor Niri, que utiliza Wayland y ofrece un método de disposición en mosaico (tiling) con agrupación de ventanas en una cinta infinitamente desplazable en pantalla.
- Actualización del conjunto de protocolos y extensiones Wayland-Protocols: 1.34, 1.33, 1.32, 1.35.
- Desarrollo de la biblioteca SDL3, que aplica Wayland por defecto.
- Lanzamiento del entorno de escritorio LXQt 2.0.0 con soporte para Wayland en el gestor de archivos PCManFM-Qt, sistema de notificaciones, escritorio, herramienta de lanzamiento de programas (Runner), panel, interfaz de salida del sistema, interfaz de configuración de LXQt y la mayoría de aplicaciones.
- Lanzamiento del entorno de usuario Sway 1.9, que utiliza Wayland.
- Nuevo gestor compositor miracle-wm, basado en Wayland y componentes para construir gestores de compositores Mir.
- Louvre — nueva biblioteca para desarrollo de compositores servidores basada en Wayland.
- Trabajo en la implementación de soporte de Wayland en Xfce.
- Primer soporte de Wayland en el entorno de escritorio Budgie.
- Primer soporte de Wayland en el entorno de escritorio Cinnamon.
- Casi finalizada la adaptación del escritorio MATE para Wayland.
- La distribución Lubuntu está pasando a utilizar Qt 6 y Wayland.
- En KDE 6 se ofrece por defecto una sesión que utiliza el protocolo Wayland. Se ha implementado soporte para extensiones de Wayland para la gestión del color.
- En la plataforma Electron se ha incluido un modo de decoración de ventanas para Wayland.
- Actualización del servidor compositor Wayfire, que utiliza Wayland y permite crear interfaces de usuario con efectos 3D al estilo de los complementos 3D para Compiz.
- Soporte de Wayland en los IDE IntelliJ y OpenJDK.
- Soporte de Wayland en el editor de texto GNU Emacs.
- En GNOME, en la sesión basada en Wayland, se ha implementado soporte para el conmutador KVM por software Input Leap, que permite utilizar un solo teclado y ratón para controlar varios ordenadores.
- La edición Fedora con el escritorio KDE ha dejado de soportar la sesión basada en el protocolo X11 en la instalación base.
- Mejorado el soporte de entornos basados en Wayland en los controladores propietarios de NVIDIA.
- Se ha implementado un controlador que permite usar Wine en entornos basados en el protocolo Wayland sin necesidad de XWayland y componentes de X11.
- Se ha formado el lanzamiento del servidor compositor Weston 13.0.
- Para probar el funcionamiento de KDE, GNOME, Enlightenment, Wayfire, Mir, Xfce y Sway sobre Wayland, se lanza una distribución Live especial llamada Rebecca Black Linux.
- En las versiones de Firefox para Linux, se ha habilitado por defecto el uso del servidor compositor Wayland en lugar de XWayland. También se ha proporcionado la posibilidad de crear versiones que solo soporten el funcionamiento en Wayland.
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, no permite que un cliente acceda al contenido de las ventanas de otros clientes, y no permite la interceptación de eventos de entrada relacionados con otras ventanas. Actualmente, se ha implementado el soporte para el funcionamiento directo con Wayland para las bibliotecas GTK, Qt, SDL (desde la versión 2.0.2), Clutter y EFL (Enlightenment Foundation Library). A partir de Qt 5.4, se incluye un módulo QtWayland con la implementación de componentes para trabajar con aplicaciones Qt en el entorno del servidor compositor Weston, desarrollado por el proyecto Wayland.
La interacción con el hardware en Wayland/Weston, como 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 realizase directamente a través de un módulo que opera a nivel de núcleo, lo que permite prescindir de privilegios de superusuario. El servidor compositor Weston puede operar no solo utilizando el módulo DRM del núcleo de Linux, sino también sobre X11, otro servidor compositor de Wayland, framebuffer y RDP. Además, se están desarrollando proyectos para facilitar el funcionamiento sobre la pila gráfica de la plataforma Android.
En el marco del proyecto Weston se está desarrollando una de las implementaciones del servidor compuesto. Cualquier otro producto que soporte el protocolo Wayland también puede actuar como un servidor compuesto. Por ejemplo, actualmente se está trabajando para asegurar el soporte de Wayland en KWin. En su forma actual, Weston ha superado el conjunto de ejemplos para probar el protocolo Wayland y puede expandirse con funcionalidades a través de plugins y complementos. Se propone implementar entornos de usuario y funciones avanzadas de gestión de ventanas en forma de backends externos para Weston. Para permitir la ejecución de aplicaciones X11 estándar en un entorno basado en Wayland se utiliza el componente DDX XWayland (X Dependiente del Dispositivo), que es similar en funcionamiento a Xwin y Xquartz para las plataformas Win32 y macOS.


Fuente: opennet.ru
