Wayland (protocolo)


Wayland es un protocolo de comunicación que especifica la comunicación entre un servidor de visualización y sus clientes, así como una implementación de biblioteca C de ese protocolo. [8] Un servidor de visualización que utiliza el protocolo Wayland se denomina compositor de Wayland porque, además, realiza la tarea de un administrador de ventanas de composición .

Wayland es desarrollado por un grupo de voluntarios liderado inicialmente por Kristian Høgsberg como un proyecto impulsado por la comunidad libre y de código abierto con el objetivo de reemplazar el sistema X Window con un moderno, seguro, [9] [10] [11] [12 ] y un sistema de ventanas más simple para Linux y otros sistemas operativos similares a Unix . [8] [13] El código fuente del proyecto se publica bajo los términos de la Licencia MIT , una licencia permisiva de software libre . [13] [5]

Como parte de sus esfuerzos, el proyecto Wayland también desarrolla una implementación de referencia de un compositor de Wayland llamado Weston . [8]

A partir de 2010, los gráficos de escritorio de Linux pasaron de tener "un montón de interfaces de renderizado ... todas hablando con el servidor X , que está en el centro del universo" a poner el kernel de Linux y sus componentes (es decir, la infraestructura de renderizado directo ( DRI) , Direct Rendering Manager (DRM) ) "en el medio", con "sistemas de ventanas como X y Wayland... en la esquina". Este será "un sistema de gráficos mucho más simplificado que ofrece más flexibilidad y mejor rendimiento". [15]

Høgsberg podría haber agregado una extensión a X como lo han hecho muchos proyectos recientes, pero prefirió "[empujar] X fuera del camino entre los clientes y el hardware" por las razones explicadas en las preguntas frecuentes del proyecto: [13 ]

Lo que es diferente ahora es que mucha infraestructura se ha movido del servidor X al kernel (administración de memoria, programación de comandos, configuración de modo ) o bibliotecas ( cairo , pixman, freetype , fontconfig , pango , etc.), y hay muy poca izquierda que tiene que suceder en un proceso de servidor central. ... [Un servidor X tiene] una gran cantidad de funciones que debe admitir para afirmar que habla el protocolo X, pero nadie lo usará jamás. ... Esto incluye tablas de códigos, rasterización y almacenamiento en caché de glifos, XLFD(¡en serio, XLFD!), y toda la API de representación central que le permite dibujar líneas punteadas, polígonos, arcos anchos y muchas más primitivas gráficas de estilo de los años 80. Por muchas cosas hemos podido mantener el servidor X.org moderno agregando extensiones como XRandR , XRender y COMPOSITE ... Con Wayland podemos mover el servidor X y toda su tecnología heredada a una ruta de código opcional. Llegar a un punto en el que el servidor X sea una opción de compatibilidad en lugar del sistema de renderizado central llevará un tiempo, pero nunca llegaremos allí si no lo planeamos.


  1. El módulo evdev del kernel de Linux obtiene un evento y lo envía al compositor de Wayland .
  2. El compositor de Wayland mira a través de su escenario para determinar qué ventana debe recibir el evento. El scenegraph corresponde a lo que está en la pantalla y el compositor de Wayland comprende las transformaciones que puede haber aplicado a los elementos del scenegraph. Por lo tanto, el compositor de Wayland puede elegir la ventana correcta y transformar las coordenadas de la pantalla en coordenadas locales de la ventana, aplicando las transformaciones inversas. Los tipos de transformación que se pueden aplicar a una ventana solo se limitan a lo que puede hacer el compositor, siempre que pueda calcular la transformación inversa para los eventos de entrada.
  3. Como en el caso X, cuando el cliente recibe el evento, actualiza la interfaz de usuario en respuesta. Pero en el caso de Wayland, el renderizado lo realiza el cliente a través de EGL , y el cliente simplemente envía una solicitud al compositor para indicar la región que se actualizó.
  4. El compositor de Wayland recopila las solicitudes de daños de sus clientes y luego vuelve a componer la pantalla. Luego, el compositor puede emitir directamente un ioctl para programar un cambio de página con KMS .
En la arquitectura del protocolo Wayland, un cliente y un compositor se comunican a través del protocolo Wayland utilizando las bibliotecas de implementación de referencia.
El compositor Wayland y sus clientes usan EGL para dibujar directamente en el framebuffer ; Servidor X.Org con XWayland y Glamour .
Elementos típicos de una ventana . X11 no especifica qué software es responsable de renderizar la decoración de la ventana , mientras que Wayland requiere que el cliente los dibuje, pero proporcionará decoraciones opcionales del lado del servidor con el protocolo xdg-decoration . [36]
Plasma 5.24.0 (febrero de 2022) en Wayland ( kwin_waylandcompositor) bajo Arch Linux
Maynard (en enero de 2017)
libinput se creó para consolidar la pila de entrada en varios compositores de Wayland.
Weston ejecutándose en postmarketOS
Wayland utiliza renderizado directo sobre EGL .