Se lanzó el paquete wayland-protocols 1.45, que contiene un conjunto de protocolos y extensiones que complementan el protocolo Wayland base y brindan las capacidades necesarias para construir servidores compuestos y entornos de usuario.
Wayland-Protocols 1.45 incluye cuatro nuevos protocolos (dos en fase de prueba y dos experimentales):
- ext-background-effect: aplica efectos a partes semitransparentes de una superficie Wayland, como el desenfoque de fondo.
- pointer-warp: permite que una aplicación mueva instantáneamente el puntero a una posición específica.
- session-management: restaura el estado de la ventana para sesiones interrumpidas (por ejemplo, después de una falla del administrador de composición).
- input-method — desarrollo de un nuevo protocolo para utilizar métodos de entrada de texto.
Todos los protocolos pasan secuencialmente por fases de desarrollo, prueba y estabilización. Después de completar la etapa de desarrollo (la categoría "inestable"), el protocolo se coloca en la rama "puesta en escena" y se incluye oficialmente en el conjunto de protocolos wayland, y una vez completadas las pruebas, se mueve a la categoría estable. Los protocolos de la categoría "preparación" ya se pueden utilizar en servidores y clientes compuestos donde se requiere una funcionalidad relacionada. A diferencia de la categoría "inestable", la "puesta en escena" prohíbe realizar cambios que violen la compatibilidad, pero si se identifican problemas y deficiencias durante las pruebas, no se excluye el reemplazo por una nueva versión significativa del protocolo u otra extensión de Wayland.
Para acelerar la entrega de protocolos a los desarrolladores y fomentar la implementación temprana de protocolos en proyectos existentes, a partir de la versión anterior, se agregó una fase "experimental", que permite cambios que rompen la compatibilidad y la adición de protocolos "en bruto" que se pueden llevar gradualmente al nivel adecuado. Si bien un protocolo necesita formar un equipo de apoyo y recibir una cierta cantidad de reconocimientos (ACK) de los revisores para ingresar a la fase de preparación, solo necesita no recibir objeciones (NACK) durante el período de revisión de dos semanas para ingresar a la fase experimental.
La suite wayland-protocols actualmente incluye los siguientes protocolos estables, que son compatibles con versiones anteriores:
- "viewporter": permite al cliente realizar acciones de escalado y recorte en los bordes de la superficie en el lado del servidor.
- "tiempo de presentación": proporciona visualización de video.
- "xdg-shell" es una interfaz para crear e interactuar con superficies como ventanas, permitiéndole moverlas por la pantalla, contraerlas, expandirlas, redimensionarlas, etc.
- "linux-dmabuf": proporciona capacidades para crear wl_buffers basados en DMA-BUF.
- "tableta": organización de la entrada de tabletas gráficas.
Protocolos probados en la rama "staging":
- drm-lease: proporciona los recursos necesarios para formar una imagen estéreo con diferentes búferes para los ojos izquierdo y derecho cuando se muestra en cascos de realidad virtual.
- "ext-session-lock": define los medios para bloquear la sesión, por ejemplo, durante la operación del protector de pantalla o la salida del diálogo de autenticación.
- "single-pixel-buffer": le permite crear búferes de un solo píxel que incluyen cuatro valores RGBA de 32 bits.
- "xdg-activation": le permite transferir el enfoque entre diferentes superficies del primer nivel (por ejemplo, al usar xdg-activation, una aplicación puede cambiar el enfoque a otra).
- tipo de contenido: permite a los clientes pasar información sobre el contenido representado al servidor compuesto, que se puede usar para optimizar el comportamiento del contenido, como establecer propiedades específicas de DRM como "tipo de contenido". Se declara la compatibilidad con los siguientes tipos de contenido: ninguno (no hay información sobre el tipo de datos), foto (salida de fotos digitales que requiere un procesamiento mínimo), video (video o animación, se requiere una sincronización más precisa para eliminar la tartamudez) y juego (juegos de inicio, salida de retraso mínimo).
- ext-idle-notify: permite que los servidores compuestos envíen notificaciones de inactividad del usuario a los clientes, que se pueden usar para activar modos adicionales de ahorro de energía después de una cierta cantidad de inactividad.
- control de corte: le permite desactivar la sincronización vertical (VSync) con un pulso de amortiguación vertical en aplicaciones de pantalla completa, que se utiliza para proteger contra el corte en la salida. En aplicaciones multimedia, los artefactos debidos al desgarro son un efecto indeseable, pero en programas de juegos, los artefactos pueden tolerarse si su manipulación provoca retrasos adicionales.
- ext-foreign-toplevel-list: recupera información sobre las superficies colocadas en el nivel superior, lo que le permite organizar ventanas para acoplarlas encima de otro contenido, por ejemplo, para adjuntar sus propios paneles e interruptores de ventanas.
- contexto de seguridad: le permite identificar clientes mediante el aislamiento de la zona de pruebas. Un cliente puede registrar una nueva conexión a un servidor compuesto basado en Wayland y adjuntarle un contexto de seguridad, después de lo cual el administrador compuesto limitará las capacidades disponibles para la conexión establecida según el contexto de seguridad especificado.
- cursor-shape es una forma alternativa de personalizar la apariencia del cursor, basada en pasar una serie de imágenes del cursor en lugar de ajustarlas a una superficie (wl_surface).
- “ext-transient-seat”: diseñado para crear sesiones (asientos) independientes temporales diseñadas para usar con dispositivos de entrada virtuales. Por ejemplo, al implementar la capacidad de conectarse a un escritorio remoto, el protocolo le permite crear una sesión separada para cada usuario con un teclado y un mouse virtuales.
- "xdg-toplevel-drag": amplía el mecanismo de "arrastrar y soltar" con la capacidad de adjuntar ventanas de nivel superior a una operación de arrastre, que se puede utilizar, por ejemplo, para organizar el arrastre de barras de herramientas o pestañas del navegador con el mouse. El nuevo protocolo le permite crear partes separables de una ventana que, cuando se arrastran desde esa ventana, se convierten en ventanas nuevas y se pueden mover encima de la ventana existente antes de volver a adjuntarlas.
- "xdg-dialog": le permite asignar atributos específicos del diálogo a superficies de nivel superior; por ejemplo, puede crear diálogos modales que bloqueen la interacción del usuario con el resto de la interfaz.
- "linux-drm-syncobj": proporciona herramientas para la sincronización explícita del búfer mediante objetos de sincronización DRM (Direct Rendering Manager). Se supone que en el contexto de la sincronización durante la renderización en un búfer, el protocolo propuesto mejorará el trabajo con controladores basados en las API de gráficos Vulkan y OpenGL (la implementación se basa en controladores en los controladores). El nuevo protocolo permite garantizar que una operación de dibujo a un búfer se complete antes de que el administrador de composición muestre ese búfer.
- modificador alfa, que permite a los clientes cambiar el nivel de transparencia de la superficie y transferir operaciones para garantizar la transparencia al lado del servidor compuesto, que a su vez puede redirigir estas operaciones a KMS.
- xdg-toplevel-icon: vincula el icono a la ventana del nivel superior.
- ext-image-capture-source y ext-image-copy-capture: organizan la captura del contenido que se muestra en la pantalla.
- xdg-system-bell: le permite generar una señal del sistema, que puede usarse, por ejemplo, como advertencia en un emulador de terminal. La forma de salida de la señal se determina a discreción del administrador del compuesto; puede ser no solo una respuesta sonora, sino también visual.
- fifo: implementa un mecanismo FIFO (primero en entrar, primero en salir) para procesar la cola de actualización de contenido de la superficie mostrada. Desde el punto de vista práctico, el protocolo permite que la salida espere a que se complete el escaneo vertical (vblank) en lugar de usar llamadas de devolución de llamada cada vez que está lista para mostrar un nuevo cuadro, lo que resuelve el problema de la alta carga de GPU cuando se usa VSync.
- commit-timing: le permite vincular un límite de tiempo al contenido superficial (el servidor compuesto debe reflejar el cambio de contenido si es posible después del tiempo especificado, pero no antes).
- ext-data-control: permite a los clientes privilegiados controlar el procesamiento de datos, por ejemplo, para implementar administradores de portapapeles.
- ext-workspace: implementa el concepto de escritorios virtuales y ofrece eventos con información sobre el estado de los escritorios, así como capacidades para activar y desactivar escritorios. El protocolo se puede utilizar para crear paneles e indicadores que muestran una lista de escritorios virtuales disponibles y le permiten cambiar entre ellos.
- gestión del color: proporciona capacidades para la gestión del color y soporte para un rango dinámico extendido de brillo (HDR, alto rango dinámico). Con la extensión agregada, las aplicaciones cliente pueden obtener información sobre las propiedades relacionadas con el color de los dispositivos de salida y pasar datos sobre las propiedades relacionadas con el color de su propio contenido al servidor compuesto. En un servidor compuesto, esta información se puede utilizar para administrar automáticamente el color al mostrar contenido en diferentes dispositivos de salida, por ejemplo, para convertir el contenido en una presentación adecuada para su visualización en monitores HDR. Los perfiles ICC se utilizan para describir espacios de color.
- xdg-toplevel-tag: permite a los clientes de Wayland adjuntar etiquetas a superficies de nivel superior que el servidor de composición puede usar para identificar ventanas después de reiniciar la aplicación (por ejemplo, una aplicación puede establecer etiquetas "ventana principal" y "configuración" para la ventana principal y la ventana de configuración). Esta identificación es útil para restaurar la posición, el tamaño y las propiedades de las ventanas después de un reinicio, y para definir reglas especiales para tipos individuales de ventanas.
- Representación de color: define la representación de color de la superficie Wayland. Los clientes de Wayland pueden pasar los metadatos necesarios para definir la transparencia, el modelo de color, el submuestreo y el rango de cuantificación, y se utilizan al convertir un búfer con datos correspondientes al modelo de color YCbCr a una representación RGB.
Protocolos que se están desarrollando en la rama "inestable":
- "fullscreen-shell" - trabajo de control en modo de pantalla completa.
- "método de entrada" - procesamiento de métodos de entrada.
- "inhibición inactiva": bloquea el lanzamiento del protector de pantalla (protector de pantalla).
- "input-timestamps": marcas de tiempo para eventos de entrada.
- "keyboard-shortcuts-inhibit": controla la conexión de atajos de teclado y teclas de acceso rápido.
- "linux-explicit-synchronization" es un mecanismo específico de Linux para sincronizar búferes en relación con una superficie.
- "gestos de puntero" - control desde pantallas táctiles.
- "restricciones de puntero" - restricciones de puntero (bloqueo).
- "selección primaria": por analogía con X11, proporciona el portapapeles principal (selección principal), cuya inserción de información generalmente se realiza con el botón central del mouse.
- "eventos de puntero relativos" - eventos de puntero relativos.
- "text-input" - organización de la entrada de texto.
- "xdg-foreign" es una interfaz para interactuar con las superficies de un cliente "vecino".
- "xdg-decoration": representación de las decoraciones de las ventanas en el lado del servidor.
- "xdg-output": información adicional sobre la salida de video (utilizada para el escalado fraccional).
- "xwayland-keyboard-grab": captura la entrada en las aplicaciones XWayland.
Fuente: opennet.ru

