Wayland
Wayland on näytönhallintajärjestelmä, joka on suunniteltu korvaamaan X Window System (X-Windows).
Waylandiin kuuluu protokollamäärittely sekä referenssitoteutus protokollasta.
Ikkunointisovelluksen referenssitoteutuksen nimi on Weston.
XWayland välisovellus on X-palvelinsovelluksen versio, joka renderöi Wayland-rajapinnalle sallien taaksepäin yhteensopivuuden olemassa olevien sovelluksien kanssa.
Projektin lähdekoodit on julkaistu avoimen MIT-lisenssin alaisuudessa.
Historia
[muokkaa | muokkaa wikitekstiä]X-ikkunointia on yritetty yksinkertaistaa ja tehostaa useita kertoja.[1] X-ikkunointiin on sen historian aikana lisätty paljon toimintoja joille nykyään ei ole tarvetta.[2] Wayland käyttää tekniikoita, joita on jo aiemmin kehitetty kuten Direct Rendering Infrastructure (DRI) ajureita ja Direct Rendering Managerin ominaisuuksia.[2] Kompositoivan ikkunanhallinnan kanssa sovellukset piirsivät jo ikkunansa piilossa olevaan puskuriin eikä suoraan näytölle, jolloin X-ikkunointi oli vain välikerros käyttäjän syötteille.[3][4] Laitteiden näyttötilan hallinta siirtyi käyttöjärjestelmän ytimeen ja näyttömuistin hallinta ytimessä mahdollisti myös muuta kehitystä.[5][4]
X-ikkunoinnin X11-protokollan seuraajalle X12 on olemassa suunnitelmia mutta ei toteutusta.[6][7] X12 ei ollut vakavasti otettava X11:n seuraaja, mutta se auttoi tunnistamaan X11:sta ongelmakohdat.[8]
Waylandin kehityksen aloitti Kristian Høgsberg vuonna 2008 vapaa-ajallaan työskennellessään Red Hatille.[3] Høgsberg oli työskennellyt X-ikkunoinnin parissa vuodesta 2004 lähtien.[3]
Käyttökohteet
[muokkaa | muokkaa wikitekstiä]Graafisten sovellusten käyttö on laajentunut alkuperäisestä työpöytäkäytöstä johon X-ikkunointi kehitettiin: nykyisin on mobiililaitteita sekä mediakohtaisia laitteita, joilla on omat vaatimuksensa.[4] Graafisia sovelluksia käytetään kulkuneuvoissa ja useissa muissa sulautetuissa järjestelmissä.[4] Useat näistä käyttökohteista eivät tarvitse X-ikkunoinnin ominaisuuksia.[4]
Sailfish OS on ottanut Waylandin käyttöön varhain ensimmäiseen versioon.[9]
Fedora Linux on ottanut Waylandin käyttöön versiossa 25.[10]
Raspberry Pi alustan Raspbian on korvannut X-ikkunoinnin Waylandilla.[11][12]
Debian versio 10 Buster käyttää oletuksena Waylandia, mutta X.org on yhä asennettuna.[13]
Laajalti käytetyt Gnome- ja KDE-työpöytäympäristöt ovat lisänneet tuen Waylandille.[14][15] Gnome käyttää PipeWire-ohjelmistoa näytön jakamiseen.[16]
Arkkitehtuuri
[muokkaa | muokkaa wikitekstiä]Wayland-arkkitehtuuri yksinkertaistaa ikkunointijärjestelmää X-ikkunointiin verrattuna. Sen sijaan että asiakassovellukset antaisivat useita piirtokomentoja näyttöä hallitsevalle sovellukselle (X Server) asiakassovellukset renderöivät ikkunansa valmiiksi ja välittävät tämän näyttöä hallitsevalle sovellukselle (compositor).[17]
Tarvittavat piirtotoiminnot sijaitsevat ohjelmakirjastossa jota asiakasovellukset käyttävät sen sijaan että ne olisivat yhden sovelluksen sisäisiä toimintoja.[17]
Menetelmä vähentää tarvetta prosessien väliselle kommunikaatiolle (engl. Inter-Process Communication, IPC), yksinkertaistaa näyttöä hallitsevaa komponenttia ja sallii sovelluksille laajemman kontrollin ikkunan piirtotoiminnoista.[17]
Wayland käyttää hyväkseen Linux-ytimen rajapintoja kuten Kernel Mode-Setting (KMS) ja Direct Rendering Manager (DRM) näyttölaitteiden kanssa, eikä siksi ole suoraan käytettävissä muilla alustoilla jotka eivät näitä rajapintoja toteuta.[17] Wayland käyttää EGL-rajapintaa.[17]
Wayland ei toteuta verkkoläpinäkyvyyttä X-ikkunoinnin tapaan vaan jättää tämän toiminnon erilliselle protokollalle kuten VNC tai RDP.[2]
-
Wayland-arkkitehtuuri
-
X-ikkunoinnin arkkitehtuuri
Erot X-ikkunointiin
[muokkaa | muokkaa wikitekstiä]Wayland ei tee renderöintiä asiakasohjelmien puolesta, vaan asiakasohjelmat käyttävät valitsemaansa menetelmää jaettuun puskuriin ja ilmoittavat palvelimelle kun se on valmis.[2] X11-palvelinta voi käyttää Wayland-asiakasohjelmana.[2] Ratkaisussa X-ikkunointi siirtyy pois "kuumalta polulta" asiakasohjelman ja laitteiston välissä.[2] Suuri osa toiminnoista on jo aiemmin siirtynyt joko käyttöjärjestelmän ytimeen (näyttömuistin hallinta, komentojen vuoronnus, moodiasetus) tai ohjelmakirjastoihin (FreeType, fontconfig, Cairo ja niin edelleen).[2][4] X-ikkunointiin on ajan myötä kehitetty osia, jotka ovat käyttäneet välissään monimutkaisia protokollia, joita ei enää tarvita.[4] X-ikkunoinnin kehitysaikana jaettujen kirjastojen käyttö ei ollut mahdollista ja muistirajoituksien vuoksi tehtiin X-palvelin: myöhemmin jaettujen kirjastojen tuki on kehittynyt.[4]
Waylandia on sanottu "kuvailevaksi" (engl. descriptive) "ohjaavan" (engl. prescriptive) sijaan. Tämä on merkittävä ero X-ikkunointiin, jossa ikkunat ja näytönsäästäjät vaativat tiettyä asettelua ja kaappaavat syöttölaitteet. Waylandin kanssa sovellus kertoo minkä tyyppisen kuvan se haluaa näyttää ja antaa kompositoijan asetella sen. Wayland käyttää tapahtumapohjaista mallia, joka yksinkertaistaa muun muassa syöttölaitteiden käsittelyä.[18]
Protokolla
[muokkaa | muokkaa wikitekstiä]Wayland-protokolla on asynkroninen oliopohjainen protokolla, joka perustuu viesteihin.[19] Viestiä palvelin- ja asiakasohjelman välillä kutsutaan tapahtumaksi (engl. event).[19] Rajapinta käyttää versiointia ja oliot toteuttavat jonkin tietyn version rajapinnastaan.[19]
Tekniikkaa
[muokkaa | muokkaa wikitekstiä]Wayland-järjestelmässä pinta (engl. surface) on perusprimitiivi, jolla muodostetaan käyttäjälle näkyvä "ikkuna". Asiakasohjelmat liittävät puskurit pintoihin, jolloin puskurin sisältö näkyy pinnassa. Kun kompositoija aloittaa näytön päivityksen se ottaa viimeisimmän puskurin sisällön jokaiselle näkyvälle pinnalle. Tätä kutsutaan "postilaatikko-semantiikaksi", jossa puskurit ovat kuvaannollisesti "kirjeitä" postilaatikossa ja uusin näkyvä on päällimäisenä.[20][21]
Esimerkki
[muokkaa | muokkaa wikitekstiä]Esimerkki asiakassovelluksesta, joka ottaa yhteyden Wayland-palvelimeen:[22]
#include <stdio.h>
#include <wayland-client.h>
int main(int argc, char *argv[])
{
struct wl_display *display = wl_display_connect(NULL);
if (!display) {
fprintf(stderr, "Failed to connect to Wayland display.\n");
return 1;
}
fprintf(stderr, "Connection established!\n");
wl_display_disconnect(display);
return 0;
}
Ohjelmistoja
[muokkaa | muokkaa wikitekstiä]libwayland-client ja libwayland-server ovat kirjastoja, jotka sisältävät toteutuksen Wayland-protokollalle yhteyden molempiin päihin.[23]
Wayland-kompositoijan toteuttamiseen on useita ohjelmistokehyksiä, joita ovat wlroots, wlc, Smithay ja libweston. Syötteiden käsittelyyn käytetään esimerkiksi libinput-kirjastoa.[24]
Näyttöpalvelimia eli Wayland-kompositoijia ovat muun muassa Weston (referenssitoteutus), Enlightenment, KWin (KDE), Mutter (Gnome), Sway ja Wayfire.
Lähteet
[muokkaa | muokkaa wikitekstiä]- ↑ Byfield, Bruce: Is Wayland the New X? Linux Magazine. Viitattu 13.2.2017.
- ↑ a b c d e f g Wayland FAQ wayland.freedesktop.org. Viitattu 17.9.2017.
- ↑ a b c Koen Vervloesem: FOSDEM: The Wayland display server lwn.net. 15.2.2012. Viitattu 14.10.2021. (englanniksi)
- ↑ a b c d e f g h Jonathan Corbet: LPC: Life after X lwn.net. 5.11.2010. Viitattu 14.10.2021. (englanniksi)
- ↑ Joe 'Zonker' Brockmeier: The way to Wayland: Preparing for life After X lwn.net. 17.11.2010. Viitattu 14.10.2021. (englanniksi)
- ↑ Griffith, Eric: The Wayland Situation: Facts About X vs. Wayland Phoronix. Viitattu 13.2.2017.
- ↑ X12 x.org. Viitattu 13.2.2017.
- ↑ Bruce Byfield: Is Wayland the New X? linux-magazine.com. Viitattu 18.10.2023. (englanniksi)
- ↑ Larabel, Michael: Jolla's First Smartphone Powered By Wayland Phoronix. Viitattu 10.2.2017.
- ↑ Fedora 25: With Wayland, Linux has never been easier (or more handsome) Ars Technica. Viitattu 12.2.2017.
- ↑ Raspberry Pi Gains Graphics Speed as Wayland Replaces X linux.com. Viitattu 13.2.2017.
- ↑ WAYLAND PREVIEW raspberrypi.org. Viitattu 13.2.2017.
- ↑ Scott Gilbertson: Debian 10: Playing catch-up with the rest of the Linux world (that’s a good thing) 11.9.2019. Ars Technica. Viitattu 3.10.2019. (englanniksi)
- ↑ Introducing GNOME 3.20: Delhi help.gnome.org. Viitattu 30.10.2019. (englanniksi)
- ↑ Martin Flöser: Plasma Wayland and Qt 5.9 and beyond blog.martin-graesslin.com. 15.7.2017. Viitattu 3.10.2019. (englanniksi)
- ↑ Christian Fredrik Schaller: PipeWire: the new audio and video daemon in Fedora Linux 34 fedoramagazine.org. 14.5.2021. Viitattu 21.5.2021. (englanniksi)
- ↑ a b c d e Wayland Architecture wayland.freedesktop.org. Viitattu 13.2.2017.
- ↑ Nathan Willis: LCA: The ways of Wayland lwn.net. 13.2.2013. Viitattu 20.10.2023. (englanniksi)
- ↑ a b c Chapter 4. Wayland Protocol and Model of Operation wayland.freedesktop.org. Viitattu 3.10.2019. (englanniksi)
- ↑ Michael Dänzer: Ensuring steady frame rates with GPU-intensive clients blogs.gnome.org. 30.3.2023. Viitattu 23.4.2024. (englanniksi)
- ↑ Surface lifecycle wayland-book.com. Viitattu 23.4.2024. (englanniksi)
- ↑ Creating a display wayland-book.com. Viitattu 2.12.2020. (englanniksi)
- ↑ What's in the Wayland package wayland-book.com. Viitattu 21.10.2023. (englanniksi)
- ↑ Introduction to wlroots way-cooler.org. Viitattu 21.10.2023. (englanniksi)
Aiheesta muualla
[muokkaa | muokkaa wikitekstiä]- Projektin kotisivut (englanniksi)
- Wayland GNOME-projektin sivuilla (englanniksi)
- The Wayland Protocol (englanniksi)