Wayland (protocol)

Wayland
Logo
Weston, een Wayland-implementatie
Weston, een Wayland-implementatie
Ontwikkelaar(s) Kristian Høgsberg en anderen
Uitgebracht 2008 (15 jaar)
Recentste versie 1.23.1 (24 augustus 2024)[1] Bewerken op Wikidata
Status Actief
Besturingssysteem Linux, BSD, Sailfish OS
Geschreven in C
Categorie Venstersysteem
Licentie(s) MIT-licentie
Versiebeheer Officiële broncode
Website wayland.freedesktop.org
Portaal  Portaalicoon   Informatica
Vrije software

Wayland is een computerprotocol als alternatief voor het X11-systeem.

Software-architectuur

① De evdev-module van de Linuxkernel ontvangt een event (gebeurtenis) en verstuurt dit naar de Waylandcompositor.
② De Waylandcompositor bepaalt welk venster de gebeurtenis moet ontvangen.
③ Net zoals bij X zal de client de gebeurtenis ontvangen en in reactie hierop de gebruikersinterface bijwerken. Maar bij Wayland gebeurt het tekenen van de gebruikersinterface ("het venster") door de client via EGL. Wanneer de client hiermee klaar is, stuurt deze een bericht naar de compositor met de melding dat de regio werd bijgewerkt.
④ De Waylandcompositor verzamelt deze berichten en zet de gewijzigde pixels op het scherm.

Høgsberg koos ervoor om X volledig te schrappen tussen de clients en de hardware in plaats van een uitbreiding te maken voor X.Org Server. Vertaald citaat uit de FAQ-sectie op de website:[2]

Er is veel infrastructuur verhuisd van de X-server naar de kernel (geheugenbeheer, commandogeheugenbeheer, commandoplanning, mode-setting) of bibliotheken (Cairo, Pixman, FreeType, fontconfig, Pango etc.) waardoor er zeer weinig dient te gebeuren in een centraal serverproces. … [Een X-server heeft] enorme functionaliteit die ondersteund moet worden om te claimen dat je het X-protocol ondersteunt, terwijl niemand dit ooit zal gebruiken. … Dit gaat onder meer over codetabellen, glyph rasterization en caching, X logical font description (XLFD) (echt waar, XLFD's!) en de hele teken-API om gestippelde lijnen, polygonen, brede bogen en meer grafische primitieve elementen uit de jaren 80 te tekenen. We hebben de X.Org Server voorlopig modern kunnen houden door extensies als XRandR, XRender en COMPOSITE toe te voegen … Met Wayland kunnen we de X-server en alle legacytechnologie naar een optioneel codepad verhuizen. Tot een punt komen waar de X-server een compatibiliteitsoptie is en niet langer het belangrijkste weergavesysteem zal een tijd duren, maar [we] zullen er nooit komen als er geen plannen worden gemaakt.

Wayland is het protocol. De implementatie van het protocol is de Waylandcompositor (bijvoorbeeld Weston).

Verschillen tussen Wayland en X

Er zijn een aantal verschillen tussen Wayland en X in verband met prestaties, code-onderhoudbaarheid en beveiliging:

Architectuur
De composition manager is een aparte en bijkomende functie in X, terwijl Wayland de displayserver en de compositor samenvoegt. Sommige functies van de window manager worden ook overgenomen, wat in X een apart client-side-proces is.
Compositie
Compositie is optioneel in X, maar verplicht bij Wayland. Compositie in X is "actief", wat betekent dat de compositor alle pixelgegevens moet ophalen wat vertraging oplevert. In Wayland is compositie "passief", wat betekent dat de compositor pixelgegevens direct krijgt van de clients.
Tekenen (rendering)
De X-server kan zorgen voor het tekenen (van o.a. vensters), maar kan deze ook gewoon weergeven als deze worden doorgestuurd door een client. In Wayland daarentegen wordt er geen API ter beschikking gesteld voor het tekenen. Wayland delegeert deze taken naar de clients (waaronder het tekenen van lettertypen, widgets etc.). Vensterdecoraties kunnen worden getekend door de clientzijde (bijvoorbeeld door een grafische toolkit zoals Qt) of langs serverzijde (door de compositor).
Beveiliging en veiligheid
Wayland isoleert de invoer en uitvoer van elk venster. Hiermee wordt vertrouwelijkheid, integriteit en beschikbaarheid bereikt bij zowel invoer als uitvoer; het originele X-design bevat deze belangrijke beveiligingsfuncties niet, hoewel enkele extensies ontwikkeld werden om te proberen dit op te lossen, Doordat de meeste code bij de client draait, hoeft er niet zoveel code met rootprivileges uitgevoerd worden wat de veiligheid verbetert.
Communicatie tussen processen
De X server biedt een basiscommunicatiemethode tussen X-clients, later uitgebreid door ICCCM-conventies. Deze X-client-to-clientcommunicatie wordt gebruikt door window-managers en wordt onder meer gebruikt voor het implementeren van gebruikerssessies, selecties en drag-and-drop. Wayland biedt zelf geen communicatie tussen Wayland-clients aan. Deze functionaliteit moet indien nodig geïmplementeerd worden door de desktopomgevingen (zoals KDE of GNOME) of door een derde partij (door bijvoorbeeld gebruik te maken van het IPC van het onderliggende besturingssysteem).
Netwerk
Het X Window System is een architectuur die oorspronkelijk ontwikkeld werd om te werken over een netwerk. Wayland biedt geen netwerktransparantie, maar kan een remote-desktop-protocol implementeren om een "scherm" op afstand weer te geven.

Gebruik

Wayland wordt gebruikt door Sailfish OS en enkele Linuxdistributies waaronder Fedora.