X11, of het X Window-systeem, laat uw grafische desktopomgeving vensters weergeven en besturen. Wayland is een vervanging voor X11. Het is ontworpen om sneller en veiliger te zijn. Dit is wat u over hen moet weten.
Wat is Wayland?
De vele namen van X
Hoe X11 werkt
Hoe Wayland werkt
Wayland’s trage acceptatie door applicaties
Gebruikt u Wayland of X11?
Moet u Wayland of X11 gebruiken?
Wat is Wayland?
Wayland is een moderne vervanging voor X11, dat al tientallen jaren het standaard venstersysteem op Linux is. Wayland is een communicatieprotocol en definieert de berichtenuitwisseling tussen een X Window-displayserver en clienttoepassingen. Het Wayland-project biedt client- en serverbibliotheken waarmee toepassingen het protocol kunnen gebruiken.
Het Wayland-project is in 2008 gestart door een Red Hat-ontwikkelaar.
De vele namen van X
Het X Window-systeem is een venstersysteem dat voor het eerst werd uitgebracht voor Unix door het Massachusetts Institute of Technology in 1984. Toepassingen kunnen voortbouwen op de functionaliteit die door het venstersysteem wordt geboden om gebruikersinterfaces te genereren.
In 1987 had het X Window-systeem versie 11 bereikt en werd het bekend als X11. Het wordt nu beheerd door de X.Org Foundation. Het is nog steeds versie 11, hoewel er sinds 1987 veel kleinere releases zijn geweest. Op het moment van schrijven is de huidige stabiele versie X11R7.7.
De “X” in de naam staat niet voor tien in Romeinse cijfers, noch voor “Xtra”, “Xtended” of iets dergelijks. Een vorig venstersysteem heette “W”, voor “vensters”, en ze gingen gewoon naar de volgende letter in het alfabet toen ze aan het nieuwe project begonnen.
U hoort het X Window-systeem waarnaar wordt verwezen als ‘X’, ‘X11’, ‘Xorg’, ‘X Windows’ en het ‘X Window-systeem’.
Hoe X11 werkt
Het X Window-systeem verwerkt gebeurtenissen en primitieven op laag niveau, zoals interactie met de muis en het tekenen en verplaatsen van vensters. De applicaties zorgen voor de visuals en het interface-ontwerp. Het uiterlijk van de vensters, welke knoppen ze hebben en waar die knoppen zich bevinden, zijn keuzes die de applicatieprogrammeur maakt. Het X Window-systeem tekent het resulterende ontwerp naar het scherm.
X11 geeft een definitie voor de communicatie die moet verlopen tussen de verschillende componenten van een werkend X Window-systeem. Deze communicatie is vereist omdat de code die een X-enabled applicatie gebruikt om zijn vensters en interface-elementen te tekenen zich niet in de applicatie bevindt. Dat werk wordt gedeeld tussen een X-server en de Window Manager.
Applicaties zijn clients van de X-server. De Window Manager is een speciaal type client. De X-server is verantwoordelijk voor het beheer van bronnen, het uitvoeren van tekenverzoeken en het ordenen van gebeurtenissen zoals toetsaanslagen en muisklikken naar de juiste toepassingen.
Het fungeert ook als tussenpersoon in de communicatie tussen de Window Manager en de applicaties, waarbij berichten heen en weer tussen hen worden uitgewisseld. De Window Manager houdt een lijst bij van de vensters die applicaties hebben geopend, waar ze zich op het scherm bevinden, hoe groot ze zijn, of ze elkaar overlappen, enzovoort.
Een samengestelde Window Manager onderhoudt een off-screen buffer voor elk venster. Het voegt deze buffers samen tot een enkele afbeelding die het bovenste venster vertegenwoordigt – dat het hele bureaublad vertegenwoordigt – dat naar het scherm wordt geschreven.
Alle moderne grafische desktopomgevingen, inclusief GNOME en KDE, gebruiken compositing Window Managers.
Hoe Wayland werkt
Wayland is bedoeld om de problemen van X11 op te lossen. De X11-architectuur vereist veel berichtenverkeer. De X-server bevindt zich tussen de clients en de Window Manager. Het zit ook tussen alles en – via de kernel – de grafische hardware. Het volume van berichten kan leiden tot latentie en een vertraagde, schokkerige visuele ervaring.
Er is ook een grote codebasis. Er is de servertoepassing, de Window Manager-toepassing en de X11-bibliotheek die clients gebruiken. Hoe groter (en ouder) uw codebasis is, hoe moeilijker het is om te onderhouden en hoe meer u zult worstelen met verouderde code.
Door de architectuur te wijzigen, heeft Wayland de codebasis gemoderniseerd en gestroomlijnd, wat prestatievoordelen en verbeterde beveiliging oplevert.
In feite hebben ze de server en de Window Manager samengevoegd tot één applicatie. Ze verwijderden alle code die functies uitvoerde die nu door de kernel worden uitgevoerd. In plaats van de inspanning te repliceren, maakten ze gebruik van de functionaliteit van de kernel.
Met Wayland communiceren de compositor en de client-applicatie rechtstreeks. De compositor houdt zijn interne mapping bij van welke vensters zich waar op het bureaublad bevinden, en in welke grootte en staat ze zich bevinden. Het bemiddelt bij toetsenbord-, muis- en vensterveranderingsgebeurtenissen en stuurt ze naar de toepassingen die eigenaar zijn van die vensters.
De applicaties werken de gebruikersinterface dienovereenkomstig bij. Een groot verschil is dat de weergave binnen de applicaties zelf wordt uitgevoerd, met behulp van de gekoppelde Wayland-bibliotheken.
De toepassing werkt de buffer bij die wordt gebruikt om het venster vast te houden, of maakt een nieuwe aan en verwijdert de oude. De clienttoepassing stuurt vervolgens een melding naar de compositor, waarin deze wordt gevraagd de venstertoewijzing bij te werken en de nieuwe of bijgewerkte videobuffer te gebruiken.
Deze vereenvoudigde architectuur en het moderne codeontwerp zorgen voor prestatieverbeteringen, waarbij met name het wijzigen van de grootte en het slepen van vensters er soepel en vloeiend uitziet.
Wayland’s trage acceptatie door applicaties
Wayland is het standaardvenstersysteem in Debian 10 en nieuwer, Fedora 34 of nieuwer, Ubuntu 18.04 of nieuwer en andere distributies zoals Arch Linux. Desondanks voert Wayland vaker wel dan niet X11-applicaties uit.
Er is een compatibiliteitslaag genaamd XWayland waarmee X11-applicaties onder Wayland kunnen worden uitgevoerd. Dit was nodig omdat de meeste X11-applicaties niet zijn aangepast en geporteerd naar Wayland.
Op desktopomgevingen die Wayland-compositors bieden, zoals GNOME, zijn officiële applicaties zoals GNOME Text Editor en Maps, Files en Calendar allemaal Wayland-native applicaties. Maar de overgrote meerderheid van X11-applicaties zijn nog onaangeroerde, native X11-applicaties.
De XWayland-middleware werkt meestal prima, maar er kunnen problemen zijn met sommige X11-applicaties die schermgerelateerde functies op laag niveau uitvoeren, zoals schermopname. Het gebruik van Wayland met NVIDIA kan net zo vervelend zijn als met X11, hoewel ik geen problemen heb gehad met mijn dagelijkse driver die het gebruikt met een NVIDIA GeForce GT 1030 GPU.
Sommige auteurs van X11-applicaties hopen waarschijnlijk dat hun applicatie goed werkt met XWayland, en ze kunnen voorkomen dat ze deze moeten herwerken in Wayland-applicaties. Wees niet verbaasd als de acceptatie en migratie naar Wayland lang en traag verloopt, met nieuwe applicaties die het adopteren, maar de meerderheid van de bestaande X11-applicaties blijft zoals ze zijn en hun hoop vestigen op XWayland.
Gebruikt u Wayland of X11?
Als je een van de belangrijkste Linux-distributies gebruikt, is de kans groot dat je Wayland al gebruikt. U kunt dit controleren door de volgende opdracht uit te voeren.
echo $XDG_SESSION_TYPE
Op een systeem dat Wayland gebruikt, is de uitvoer:
En op een systeem met het X Window-systeem ziet u:
Zelden, de XDG_SESSION_TYPE
omgevingsvariabele is niet ingesteld. In dat geval kunt u in plaats daarvan dit commando gebruiken:
loginctl show-session $(loginctl show-user $(whoami) -p Display --value) -p Type --value
De binnenste, genest loginctl
opdracht gebruikt de show-user
opdracht om eigenschappen van de benoemde gebruiker weer te geven. De whoami
opdracht geeft ons de naam van de huidige gebruiker. De -p
(eigenschap) optie beperkt de uitvoer van loginctl
naar informatie over de instelling “Beeldscherm”, en we gebruiken de --value
optie om alleen de waarde te retourneren. We willen niet de tekenreeks “Display=” in het antwoord van hebben loginctl
. Dat alles geeft ons een sessie-ID.
We geven de sessie-ID door aan de buitenkant loginctl
en gebruik de show-session
opdracht om attributen van de sessie weer te geven. Wij gebruiken de -p
(property) optie om de uitvoer te beperken tot informatie over het sessietype en gebruik de --value
optie om de waarde weer te geven zonder het label “Type=”.
Op een computer met Wayland ziet u:
Als u het X Window-systeem gebruikt, ziet u:
Moet u Wayland of X11 gebruiken?
Tenzij u problemen ondervindt, kunt u net zo goed vasthouden aan wat u al gebruikt. Maar als u instabiliteit of schokkerige schermupdates opmerkt, kunt u proberen naar de versie te gaan die u niet gebruikt.
Als u op GNOME wilt wisselen en het andere systeem wilt proberen, klikt u in het inlogscherm op uw gebruikersnaam en vervolgens op het tandwielpictogram in de rechterbenedenhoek van het scherm.
Een menu biedt u verschillende versies van GNOME. Opties die “Xorg” vermelden, gebruiken het X Window-systeem en degenen die Wayland niet gebruiken.