Después de cuatro meses de desarrollo, se presenta una versión estable del protocolo, el mecanismo de comunicación entre procesos y las bibliotecas Wayland 1.26. La rama 1.26 es compatible hacia atrás en 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 composite de referencia servidor Weston, que proporciona el código y ejemplos prácticos para usar Wayland en entornos de escritorio y soluciones embebidas, se desarrolla dentro de un ciclo de desarrollo separado.
Principales cambios en el protocolo:
- Se ha añadido un evento wl_pointer.warp, a través del cual se pueden recibir notificaciones sobre la nueva posición del puntero sin procesar el evento wl_pointer.motion, generado por la actividad del usuario.
- Se ha añadido la solicitud wl_fixes.ack_global_remove, destinada a enviar al gestor de composición la confirmación de que el cliente ha dejado de procesar el evento para evitar condiciones de carrera al eliminar eventos globales. Tras recibir la confirmación de todos los clientes, el gestor de composición puede eliminar el manejador relacionado con el evento en su lado.
- Se ha añadido la función wl_display_remove_socket_fd() para eliminar sockets que se añadieron previamente a través de la llamada wl_display_add_socket_fd().
- En el modo de depuración WAYLAND_DEBUG, se proporciona la salida de registro de tiempo en formato "HH:MM:ss.xxxxxx", lo que facilita el análisis y la comparación de registros.
Se han añadido extensiones del protocolo Wayland después de la última versión, que complementan el protocolo base de Wayland y se entregan en un conjunto separado Wayland-Protocols:
- xx-fractional-scale — para escalar el sistema de coordenadas lógicas, cuyos valores se especifican como números enteros, con el fin de mejorar la precisión de posicionamiento y aumentar la resolución de las coordenadas lógicas a píxeles individuales. Esta capacidad resuelve el problema de la resolución limitada del sistema de coordenadas lógicas, insuficiente para el posicionamiento a nivel de píxeles individuales necesario para una implementación completa del escalado fraccional.
- xx-cutouts — para obtener información sobre recortes en la pantalla (por ejemplo, áreas bajo la cámara frontal en la pantalla de un smartphone).
- xx-zones — para crear y agregar ventanas de nivel superior en "zonas" — entornos con su propio espacio de coordenadas. El protocolo permite organizar la disposición lógica de ventanas, donde cada ventana se coloca en relación con otra ventana.
- xx-keyboard-filter — para interceptar eventos de teclado seleccionados por el cliente, modificar eventos de entrada o bloquear la transmisión de ciertos eventos a la superficie Wayland que tiene el foco de entrada.
- Se ha añadido el protocolo xdg-session-management a la categoría "staging", proporcionando capacidades para restaurar el estado y la posición de las ventanas de una sesión interrumpida en entornos basados en el protocolo Wayland, por ejemplo, después de un cierre inesperado del compositor servidores o de una aplicación.
- El protocolo "linux-dmabuf" ha añadido soporte para funcionar en sistemas con múltiples GPU. En tales sistemas, el cliente puede acordar con los compositores el servidor qué GPU utilizar.
- El protocolo color-management-v1 ha añadido soporte para metadatos de imágenes en formato BT.2100 para ser utilizados en compuestos servidor manejadores específicos, que permiten mostrar correctamente contenido HDR creado para Windows.
Los eventos más destacados relacionados con Wayland que han ocurrido desde la publicación de la última versión:
- Cinnamon ha implementado soporte completo para Wayland.
- Se ha añadido soporte para Wayland a la biblioteca ANGLE, utilizada en Chrome y Android.
- KDE ha implementado soporte para la restauración de sesiones al usar Wayland e implementado el protocolo Wayland xx-fractional-scale-v2 para escalado fraccional.
- Se ha creado un puerto del controlador X.Org de Synaptics para entornos basados en Wayland.
- Se ha iniciado la verificación de la preparación de las plataformas VFX y animación para reemplazar X11 por Wayland.
- Se ha comenzado a probar el servidor compositor Xfwl4 del proyecto Xfce.
- Se ha recreado la interfaz de usuario Unity sobre Wayfire y Libadwaita.
- Se han actualizado los servidores de composición y los entornos de escritorio: COSMIC 1.3.0, Weston 16, Phosh 0.56, Nourish 1.0.0, miracle-wm 0.10, KDE Plasma 6.7, labwc 0.20, Sway 1.2, Wayland Maker 0.8, Hyprland 0.55, Niri 26.04, LXQt 2.4.0, Cage 0.3.
Recordemos que Wayland es un protocolo para la interacción entre el servidor compositor y las aplicaciones que trabajan con él. Los clientes renderizan sus ventanas en un búfer separado, transmitiendo información sobre actualizaciones al compositor. servidor, que combina el contenido de los buffers de aplicaciones individuales para formar una salida final teniendo en cuenta posibles matices como la superposición de ventanas y la transparencia. En otras palabras, un servidor compuesto no proporciona una API para renderizar elementos individuales, sino que opera únicamente con ventanas ya formadas, lo que permite deshacerse de la doble búferización al utilizar bibliotecas de alto nivel como GTK y Qt, que se encargan de la disposición del contenido de las ventanas.
Wayland resuelve muchos problemas de seguridad de X11 en X.Org Server, ya que a diferencia del último, aisla la entrada y salida de cada ventana, no permite que el cliente acceda al contenido de las ventanas de otros clientes, ni permite la interceptación de eventos de entrada relacionados con otras ventanas (en XLibre XServer se ha implementado la extensión X11 Xnamespace, que proporciona aislamiento de clientes a través de la separación a nivel de espacios de nombres). La compatibilidad 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
