Wayland (megjelenítő szerver protokoll) - Wayland (display server protocol)

Wayland
Wayland Logo.svg
Wayland-weston 8.0.0-2-2020-08-04.png
Weston , a Wayland szerver referencia megvalósítása .
Eredeti szerző (k) Kristian Høgsberg
Fejlesztő (k) freedesktop.org et al.
Első kiadás 2008. szeptember 30 . ; 13 évvel ezelőtt ( 2008-09-30 )
Stabil kiadás
Wayland: 1,19, Weston: 8,0 / 2021. január 27 . ; 8 hónappal ezelőtt ( 2021-01-27 )
Adattár
Beírva C
Operációs rendszer hivatalos: Linux
nem hivatalos: NetBSD , FreeBSD , DragonFly BSD
típus
Engedély MIT licenc
Weboldal wayland .freedesktop .org

A Wayland egy kommunikációs protokoll, amely meghatározza a kijelző kiszolgáló és ügyfelei közötti kommunikációt , valamint a protokoll C könyvtári megvalósítását. A Wayland protokollt használó megjelenítő szervert Wayland kompozitornak nevezik , mivel ezenkívül elvégzi az összetett ablakkezelő feladatát .

Wayland által kifejlesztett egy csoport önkéntes eredetileg vezette Kristian Høgsberg a szabad és nyílt forráskódú közösség által működtetett projekt a céllal, hogy az X Window System , korszerű, biztonságos egyszerűbb ablakkezelő rendszer a Linux és más Unix-szerű operációs rendszerek . A projekt forráskódját az engedélyezett szabad szoftverlicenc , az MIT License feltételei alapján teszik közzé .

Erőfeszítéseinek részeként a Wayland projekt a Weston nevű Wayland kompozitor referencia megvalósítását is kidolgozza .

Áttekintés

Image
  1. A Linux kernel evdev modulja kap egy eseményt, és elküldi a Wayland kompozitornak .
  2. A Wayland zeneszerző átnézi a jelenetgráfját, hogy meghatározza, melyik ablak fogadja az eseményt. A jelenetgráf megfelel a képernyőn megjelenőnek, a Wayland alkotója pedig megérti azokat az átalakításokat, amelyeket a jelenetgráf elemeire alkalmazhatott. Így a Wayland kompozitor kiválaszthatja a megfelelő ablakot, és az inverz transzformációk alkalmazásával átalakíthatja a képernyő koordinátáit ablak helyi koordinátáivá. Az ablakokra alkalmazható átalakítási típusok csak arra korlátozódnak, amire a kompozitor képes, amíg ki tudja számítani az inverz transzformációt a bemeneti eseményekhez.
  3. Az X esethez hasonlóan, amikor az ügyfél megkapja az eseményt, válaszként frissíti a felhasználói felületet. De a Wayland esetben a megjelenítést az ügyfél végzi EGL -en keresztül , és az ügyfél csak kérést küld az összeállítónak, hogy jelezze a frissített régiót.
  4. A Wayland kompozitor összegyűjti a kártérítési kérelmeket ügyfeleitől, majd újra összeállítja a képernyőt. A kompozitor ezután közvetlenül kiadhat egy ioctl -t, hogy ütemezhesse a KMS -el történő oldalmozgást .

A Wayland Display Server projektet a Red Hat fejlesztője, Kristian Høgsberg kezdte 2008 -ban.

2010 körül a Linux asztali grafikái elmozdultak a „rengeteg renderelő interfészről ” , amelyek mindegyike az univerzum középpontjában álló X szerverrel beszél a Linux kernel és összetevői (pl. Közvetlen renderelési infrastruktúra) DRI) , Direct Rendering Manager (DRM) ) "középen", "ablakrendszerek, például X és Wayland ... ki a sarokban". Ez egy "sokkal leegyszerűsített grafikus rendszer lesz, amely nagyobb rugalmasságot és jobb teljesítményt nyújt".

Høgsberg hozzáadhatott volna egy kiterjesztést az X -hez, ahogy azt sok közelmúltbeli projekt tette, de inkább a projekt [GYIK] által ismertetett okok miatt inkább „[nyomja] X -et az ügyfelek és a hardver közötti forró útról”:

Mi a különbség most az, hogy sok infrastruktúra elmozdult a X szerver a kernel (memória kezelése, parancsot ütemezés, mód beállítás ), vagy könyvtárakat ( Kairó , pixman, freetype , fontconfig , pango stb), és nagyon kevés balra kell történnie egy központi szerver folyamatban. ... [Egy X szervernek] rengeteg funkciója van, amelyeket támogatnia kell ahhoz, hogy az X protokollt beszélje, de ezt soha senki nem fogja használni. ... Ez magában foglalja a kódtáblákat, a karakterjelek raszterizálását és gyorsítótárazását, az XLFD-ket (komolyan, XLFD-ket!), És a teljes mag-megjelenítő API-t, amely lehetővé teszi a zökkenőmentes vonalak, sokszögek, széles ívek és még sok más, az 1980-as évek stílusának megfelelő grafikák rajzolását. primitívek. Sok mindenben meg tudtuk tartani az X.org szervert korszerűvé olyan bővítmények hozzáadásával, mint az XRandR , XRender és COMPOSITE ... A Wayland segítségével áthelyezhetjük az X szervert és minden korábbi technológiáját egy opcionális kódútvonalra . Ahhoz, hogy elérjük azt a pontot, ahol az X szerver kompatibilitási lehetőség a központi renderelő rendszer helyett, eltart egy darabig, de soha nem jutunk el oda, ha [nem] tervezzük.

A Wayland egy protokollból és egy Weston nevű referencia megvalósításból áll . A projekt a GTK és a Qt olyan verzióit is kifejleszti , amelyek az X helyett Waylandra jelennek meg. A legtöbb alkalmazás várhatóan támogatást nyer a Wayland számára az egyik ilyen könyvtáron keresztül, anélkül, hogy módosítaná az alkalmazást.

A Wayland kezdeti verziói nem biztosítottak hálózati átláthatóságot , bár Høgsberg 2010 -ben megjegyezte, hogy a hálózat átláthatósága lehetséges. 2011 -ben a Google Summer of Code projektjeként próbálták ki , de nem járt sikerrel. Adam Jackson elképzelte, hogy távoli hozzáférést biztosít egy Wayland-alkalmazáshoz "képpont-lekaparással" (például VNC-vel ), vagy "renderelő parancsfolyamot" küld a hálózaton keresztül (például az RDP , a SPICE vagy az X11 esetében ). 2013 elejétől Høgsberg kísérletezik a hálózati átláthatósággal egy proxy Wayland szerver segítségével, amely tömörített képeket küld az igazi kompozitornak. 2017 augusztusában a GNOME látta az első ilyen pixelkaparó VNC szerver implementációt a Wayland alatt.

Szoftver architektúra

Protokoll architektúra

Image
A Wayland protokoll architektúrában az ügyfél és a kompozitor a Wayland protokollon keresztül kommunikál a referencia implementációs könyvtárak használatával.

A Wayland protokoll egy kliens -szerver modellt követ , amelyben a kliensek a grafikus alkalmazások, amelyek képpont -pufferek megjelenítését kérik a képernyőn, és a szerver (kompozitor) a szolgáltató, amely ezeknek a puffereknek a megjelenítését vezérli.

A Wayland referencia implementációt kétrétegű protokollként tervezték:

  • Alacsony szintű réteg vagy vezetékes protokoll, amely kezeli a két érintett folyamat -a „kliens és a kompozitor” -process folyamatközi kommunikációt és az általuk felcserélt adatok rendezését . Ez a réteg üzenet-alapú, és rendszerint a rendszermag IPC-szolgáltatásai segítségével valósul meg, különösen a Linux és a Unix-szerű operációs rendszerek esetében a Unix domain socketekkel .
  • Magas szintű réteg épül rá, amely kezeli azokat az információkat, amelyeket az ügyfélnek és a kompozitornak cserélnie kell az ablakrendszer alapvető jellemzőinek megvalósításához . Ez a réteg "aszinkron objektumorientált protokollként" valósul meg.

Míg az alacsony szintű fóliát manuálisan írták C nyelven , a magas szintű réteg automatikusan generálódik a protokoll XML formátumban tárolt elemeinek leírásából . Minden alkalommal, amikor ennek az XML-fájlnak a protokollleírása megváltozik, az ilyen protokollt megvalósító C forráskód újragenerálható, hogy tartalmazza az új módosításokat, lehetővé téve egy nagyon rugalmas, bővíthető és hibamentes protokollt.

A Wayland protokoll referencia -megvalósítása két könyvtárra oszlik : a Wayland -ügyfelek által használt libwayland-clientkönyvtárra és a Wayland -komponisták által használt könyvtárra libwayland-server.

Protokoll áttekintés

A Wayland protokollt "aszinkron objektumorientált protokollként" írják le . Az objektum-orientált azt jelenti, hogy az alkotó által kínált szolgáltatások ugyanazon a kompozitoron élő objektumok sorozataként kerülnek bemutatásra . Mindegyik objektum egy felületet valósít meg, amely rendelkezik névvel, számos módszerrel (úgynevezett kéréssel ), valamint több kapcsolódó eseménnyel . Minden kérésnek és eseménynek nulla vagy több argumentuma van, mindegyik névvel és adattípussal . A protokoll aszinkron abban az értelemben, hogy a kéréseknek nem kell várniuk a szinkronizált válaszokra vagy az ACK-kra , elkerülve az oda-vissza késleltetési időt és javítva a teljesítményt.

A Wayland kliensek kérést (metódus meghívást) kérhetnek bizonyos objektumokon, ha az objektum interfésze támogatja ezt a kérést. Az ügyfélnek meg kell adnia a kérelem érveihez szükséges adatokat is. Az ügyfelek így kérnek szolgáltatásokat az összeállítótól. Az összeállító viszont információt küld az ügyfélnek azáltal, hogy az objektum eseményeket bocsát ki (valószínűleg érvekkel is). Ezeket az eseményeket a kompozitor egy bizonyos kérésre adott válaszként vagy aszinkron módon bocsáthatja ki, belső események (például egy beviteli eszközről származó események) vagy állapotváltozások függvényében. A hibafeltételeket eseményként is jelzi az összeállító.

Ahhoz, hogy az ügyfél kérést tudjon küldeni egy objektumhoz, először meg kell mondania a szervernek az azonosító számát, amelyet az objektum azonosítására használ. Kétféle típusú objektum található az összeállítóban: globális és nem globális objektumok. A globális objektumokat a kompozitor hirdeti az ügyfeleknek létrehozásukkor (és megsemmisítéskor is), míg a nem globális objektumokat általában más objektumok hozzák létre, amelyek már működésük részeként léteznek.

Az interfészek és azok kérései és eseményei a Wayland protokollt meghatározó alapelemek. A protokoll minden verziója tartalmaz interfészeket, valamint kéréseiket és eseményeiket, amelyek várhatóan minden Wayland -kompozitorban megtalálhatók lesznek. Opcionálisan egy Wayland -kompozitor meghatározhat és megvalósíthat saját interfészeket, amelyek támogatják az új kéréseket és eseményeket, ezáltal kiterjesztve a funkcionalitást az alapvető protokollon túlra. A protokoll megváltoztatásának megkönnyítése érdekében minden felület tartalmaz egy "verziószám" attribútumot a neve mellett; ez az attribútum lehetővé teszi ugyanazon felület változatainak megkülönböztetését. Minden Wayland -kompozitor nemcsak a rendelkezésre álló interfészeket mutatja be, hanem az interfészek támogatott verzióit is.

Wayland mag interfészek

A Wayland protokoll aktuális verziójának interfészeit a Wayland forráskód protokoll/wayland.xml fájlja határozza meg . Ez egy XML fájl, amely felsorolja az aktuális verzióban létező interfészeket, azok kéréseivel, eseményeivel és egyéb attribútumaival együtt. Ez az interfészkészlet a minimum, amelyet bármely Wayland -kompozitornak végre kell hajtania.

A Wayland protokoll néhány legalapvetőbb felülete:

  • wl_display  - az alapvető globális objektum, egy speciális objektum, amely magába foglalja a Wayland protokollt
  • wl_registry  - a globális nyilvántartási objektum, amelyben az összeállító regisztrálja az összes globális objektumot, amelyet minden ügyfél számára elérhetővé szeretne tenni
  • wl_compositor  - egy objektum, amely a kompozitort képviseli, és felelős a különböző felületek egy kimenetben történő egyesítéséért
  • wl_surface  - egy objektum, amely egy négyszögletes területet jelenít meg a képernyőn, hely, méret és pixeltartalom alapján
  • wl_buffer  - olyan objektum, amely a wl_surface objektumhoz csatolva biztosítja megjeleníthető tartalmát
  • wl_output  - a képernyő megjeleníthető területét képviselő objektum
  • wl_pointer , wl_keyboard , wl_touch  - különböző beviteli eszközöket ábrázoló objektumok, például mutatók vagy billentyűzetek
  • wl_seat  - egy ülést (be- és kimeneti eszközök halmazát ) reprezentáló objektum több üléses konfigurációkban

Egy tipikus Wayland kliens munkamenet úgy kezdődik, hogy a wl_display objektum segítségével megnyitja a kapcsolatot az alkotóval . Ez egy speciális helyi objektum, amely a kapcsolatot képviseli, és nem él a szerveren. Interfészének használatával az ügyfél kérheti a wl_registry globális objektumot a kompozitortól, ahol az összes globális objektumnév található, és megkötheti azokat, amelyek az ügyfél iránt érdeklődnek. Általában az ügyfél legalább egy wl_compositor objektumot köt le , ahonnan kérni fog egyet vagy további wl_surface objektumok az alkalmazás kimenetének megjelenítéséhez a kijelzőn.

Wayland kiterjesztési interfészek

A Wayland kompozitor saját kiegészítő interfészeit definiálhatja és exportálhatja. Ez a szolgáltatás a protokoll kiterjesztésére szolgál az alapvető interfészek által biztosított alapvető funkciókon túl, és a Wayland protokollbővítmények szabványos megvalósítási módjává vált. Bizonyos zeneszerzők egyedi interfészek hozzáadásával választhatnak speciális vagy egyedi funkciókat. A Wayland referenciakomponens, a Weston új kísérleti interfészek megvalósítására használta őket, mint új koncepciók és ötletek tesztágyát, amelyek közül néhány később az alapprotokoll része lett (például a Wayl 1.4 -ben hozzáadott wl_subsurface interfész).

Bővítési protokollok az alapprotokollhoz

XDG-Shell protokoll

Az XDG-Shell protokoll (az XDG-t lásd a freedesktop.org címen) kiterjesztett módja a felületek kezelésének Wayland kompozitorok alatt (nem csak Weston). A felületek manipulálásának (maximalizálása, minimalizálása, teljes képernyős stb.) Hagyományos módja a wl_shell _*() függvények használata, amelyek az alapvető Wayland protokoll részét képezik, és a libwayland-kliensben élnek . Az xdg-shell protokoll megvalósítását éppen ellenkezőleg, a Wayland kompozitornak kell biztosítania. Tehát megtalálja az xdg-shell-client-protocol.h fejlécet a Weston forrásfában. Minden Wayland -komponálónak saját megvalósítását kell biztosítania.

2014 júniusától az XDG-Shell protokoll nem volt változatos, és továbbra is hajlamos a változásokra.

Az xdg_shell egy protokoll, amely hosszú távon helyettesíti a wl_shell -et, de nem lesz része a Wayland magprotokolljának. Nem stabil API-ként indul, amelyet először fejlesztési helyként kell használni, és ha a funkciókat több asztali héj megköveteli, akkor végül stabillá tehető. Főleg két új felületet biztosít: xdg_surface és xdg_popup. Az xdg_surface felület egy asztali stílusú ablakot valósít meg, amely áthelyezhető, átméretezhető, maximalizálható stb.; kérést nyújt a gyermek/szülő kapcsolat létrehozására. Az xdg_popup felület egy asztali stílusú előugró menüt valósít meg; Az xdg_popup mindig átmeneti egy másik felülethez, és implicit fogással is rendelkezik.

IVI-Shell protokoll

Az IVI-Shell a Wayland magprotokolljának kiterjesztése, amely a járműben található infotainment (IVI) eszközöket célozza meg .

Renderelési modell

Image
A Wayland kompozitor és ügyfelei az EGL segítségével közvetlenül a keretbufferbe húzódnak ; X.Org Server a XWayland és Glamour .

A Wayland protokoll nem tartalmaz renderelő API -t. Ehelyett a Wayland közvetlen renderelési modellt követ , amelyben az ügyfélnek az ablak tartalmát a komponálóval megosztható pufferré kell alakítania. Ebből a célból az ügyfél dönthet úgy, hogy minden renderelést egyedül végez, használ egy renderelt könyvtárat, például Kairót vagy OpenGL-t , vagy támaszkodhat a Wayland támogatással rendelkező magas szintű widget-könyvtárak, például a Qt vagy a GTK megjelenítő motorjára . A kliens is használhat, más szakkönyvtárak adott feladat, például Freetype az betűmegjelenítő .

A kapott puffert a renderelt ablak tartalmával egy wl_buffer objektum tárolja . Az objektum belső típusa megvalósítástól függ. Az egyetlen követelmény az, hogy a tartalmi adatoknak megoszthatónak kell lenniük az ügyfél és az összeállító között. Ha az ügyfél szoftveres (CPU) renderelőt használ, és az eredményt a rendszer memóriájában tárolja , akkor az ügyfél és a kompozitor megosztott memóriát használhat a pufferkommunikáció további példányok nélküli megvalósításához. A Wayland protokoll már natívan biztosítja ezt a fajta megosztott memóriapuffert a wl_shm és wl_shm_pool interfészeken keresztül. Ennek a módszernek az a hátránya, hogy a kompozitornak további munkára van szüksége (általában a megosztott adatok GPU -ba történő másolásához) a megjelenítéshez, ami lassabb grafikai teljesítményhez vezet.

A legjellemzőbb eset az, hogy az ügyfél közvetlenül egy videomemória -pufferbe rendereli hardver (GPU) gyorsított API, például OpenGL , OpenGL ES vagy Vulkan használatával . Az ügyfél és a kompozitor megoszthatja ezt a GPU-tér puffert egy speciális kezelő segítségével, hogy hivatkozzon rá. Ez a módszer lehetővé teszi az író számára, hogy elkerülje az extra adatmásolást a fő memóriapuffer kliens-kompozitor-GPU módszerben, ami gyorsabb grafikus teljesítményt eredményez, ezért az előnyben részesített. A kompozitor tovább optimalizálhatja a kijelzőn megjelenítendő utolsó jelenet összetételét ugyanazon hardvergyorsító API használatával, mint az API kliens.

Amikor a renderelés megosztott pufferben fejeződik be, a Wayland ügyfélnek utasítania kell az írót, hogy jelenítse meg a puffer megjelenített tartalmát a kijelzőn. Ebből a célból az ügyfél leköti a megjelenített tartalmat tároló pufferobjektumot a felszíni objektumhoz, és "véglegesítési" kérést küld a felületre, átadva a puffer tényleges vezérlését a kompozitornak. Ezután az ügyfél megvárja, hogy a kompozitor felszabadítsa a puffert (egy esemény jelzi), ha újra akarja használni a puffert egy másik keret megjelenítéséhez, vagy használhat egy másik puffert az új keret megjelenítéséhez, és amikor a renderelés befejeződött, megköti ezt az új puffert a felszínre, és véglegesítse annak tartalmát. A rendereléshez használt eljárás, beleértve az érintett pufferek számát és azok kezelését, teljes mértékben az ügyfél ellenőrzése alatt áll.

Összehasonlítás más ablakrendszerekkel

Különbségek Wayland és X között

A Wayland és az X között számos különbség van a teljesítmény, a kód karbantarthatóság és a biztonság tekintetében:

Építészet
A kompozíciókezelő külön, kiegészítő funkció az X -ben, míg a Wayland egyetlen funkcióként egyesíti a kijelzőszervert és a kompozitort. Ezenkívül magában foglalja az ablakkezelő néhány feladatát is , ami X-ben egy külön ügyféloldali folyamat.
Összeállítás
A komponálás opcionális X -ben, de Wayland -ben kötelező. Az X -ben való komponálás "aktív"; vagyis a szerkesztőnek le kell kérnie az összes képpontadatot, ami késleltetést vezet be. A Wayland -ban a kompozíció "passzív", ami azt jelenti, hogy a komponens közvetlenül a kliensektől kap pixel adatokat.
Renderelés
Az X szerver maga képes megjeleníteni a renderelést, de utasítható egy ügyfél által küldött renderelt ablak megjelenítésére is. Ezzel szemben a Wayland nem tesz ki semmilyen API -t a megjelenítéshez, hanem delegál az ügyfeleknek ilyen feladatokat (beleértve a betűtípusok, widgetek stb. Megjelenítését). Az ablakdekorációk megjeleníthetők az ügyféloldalon (pl. Grafikus eszköztárral) vagy a szerver oldalon (az alkotó által).
Biztonság
A Wayland elszigeteli minden ablak bemenetét és kimenetét, mindkét esetben bizalmasságot, integritást és elérhetőséget biztosítva; az eredeti X dizájnból hiányoznak ezek a fontos biztonsági jellemzők, bár néhány bővítményt azért fejlesztettek ki, hogy enyhítsék. Továbbá, mivel a kód túlnyomó része a kliensben fut, kevesebb kódot kell futtatni root jogosultságokkal, javítva a biztonságot, bár több népszerű Linux disztribúció lehetővé teszi az X futtatását root jogosultságok nélkül.
Folyamatok közötti kommunikáció
Az X szerver alapvető kommunikációs módszert biztosít az X kliensek között, amelyet később az ICCCM konvenciók bővítettek . Ezt az X kliensek közötti kommunikációt az ablakkezelők használják, valamint X munkamenetek , kijelölések, húzás és más funkciók megvalósítására. A Wayland magprotokoll egyáltalán nem támogatja a Wayland kliensek közötti kommunikációt, és a megfelelő funkciókat (ha szükséges) az asztali környezeteknek (például a KDE vagy a GNOME) vagy egy harmadik félnek kell megvalósítania (például natív IPC használatával ) az alapul szolgáló operációs rendszer).
Hálózatépítés
Az X Window System egy olyan architektúra , amelyet úgy terveztek, hogy a hálózaton keresztül fusson. A Wayland önmagában nem kínál hálózati átláthatóságot; a kompozitor azonban bármilyen távoli asztali protokollt megvalósíthat a távoli megjelenítés elérése érdekében. Ezenkívül kutatásokat folytatnak a Wayland képáramlásról és tömörítésről, amelyek a VNC -hez hasonló távoli keretpuffer -hozzáférést biztosítanának .

Kompatibilitás az X -el

Az XWayland egy X szerver , amely Wayland kliensként fut, és így képes megjeleníteni a natív X11 kliens alkalmazásokat Wayland kompozitor környezetben. Ez hasonló ahhoz, ahogyan az XQuartz X alkalmazásokat futtat a macOS natív ablakkezelő rendszerében. Az XWayland célja, hogy megkönnyítse az X Window System -ről Wayland környezetre való átmenetet, lehetővé téve a nemportált alkalmazások futtatását. Az XWayland bekerült az X.Org Server 1.16 verziójába.

A widget-eszközkészletek, mint például a Qt 5 és a GTK 3, futás közben válthatják grafikus háttérképüket, így a felhasználók kiválaszthatják a betöltéskor, hogy X vagy Wayland felett akarják-e futtatni az alkalmazást. A Qt 5 ehhez -platformparancssori lehetőséget biztosít, míg a GTK 3 lehetővé teszi a felhasználók számára, hogy a Unix környezeti változó beállításával kiválasszák a kívánt GDK háttérképet . GDK_BACKEND

Wayland zeneszerzők

Image
Az ablak tipikus elemei . Sem a Wayland, sem az X11 nem határozza meg, hogy milyen szoftver felelős az ablakdíszítésért . A Weston megköveteli, hogy az ügyfél rajzolja meg őket, de a KWin megvalósítja a szerveroldali dekorációt.

Szervereket , hogy hajtsák végre a Wayland kijelző szerver protokoll is nevezik Wayland compositors mert ezek mellett a feladatot egy kompozit ablakkezelő .

  • Weston  - egy Wayland kompozitor referencia megvalósítása ; A Weston az ügyféloldali dekorációt valósítja meg
  • Rúzs - mobil grafikus héjkeret, amely a Wayland kompozitort valósítja meg; a Sailfish OS , a Nemo Mobile és az AsteroidOS rendszerekben használják
  • A felvilágosodás teljes Wayland támogatást igényelt a 0.20 -as verzió óta, de jelenleg folyik a munka a teljes Wayland -kompozitor megszerzéséhez
  • A KWin majdnem teljes Wayland támogatással rendelkezik 2021 -től
  • A Mutter külön ágazatot tart fenn a Wayland integrálásához a GNOME 3.9 számára (2013 szeptemberében)
  • Clayland - egy egyszerű példa a Wayland zeneszerzőjére a Clutter használatával
  • Westeros- egy Wayland kompozitor könyvtár, amely lehetővé teszi az alkalmazások számára, hogy saját Wayland kijelzőiket hozzák létre, lehetővé téve a harmadik féltől származó alkalmazások beágyazását és beágyazását
  • wlroots - moduláris Wayland implementáció, amely más zeneszerzők, különösen a Sway alapjaként működik
  • Sway- csempézett Wayland kompozitor és az i3 ablakkezelő cseréje X11 esetén
  • gamescope - a SteamOS része, amely a korábbi steamcompmgr helyére lép

Weston

A Weston egy Wayland kompozitor referencia megvalósítása, amelyet szintén a Wayland projekt fejlesztett ki. C nyelven íródott és az MIT licenc alatt tették közzé . A Weston hivatalosan csak a Linux operációs rendszert támogatja, mivel Weston függ a Linux kernel bizonyos funkcióitól , például a kernel mód-beállításától , a Graphics Execution Manager (GEM) és az udev-től , amelyeket más Unix-szerű operációs rendszerek nem alkalmaztak rendszereket. Linuxon futáskor a bemeneti hardver kezelése az evdev , míg a pufferek kezelése az általános pufferkezelésen (GBM) alapul. 2013 -ban azonban bejelentették a Weston prototípus portját a FreeBSD -hez.

A Weston támogatja a nagy sávszélességű digitális tartalomvédelmet (HDCP).

A Weston a GEM -re támaszkodva osztja meg az alkalmazáspuffereket az összeállító és az alkalmazások között. Tartalmaz egy plug-in rendszert a "héjakból" az általános asztali funkciókhoz, például dokkokhoz és panelekhez. Az ügyfelek felelősek ablakkereteik rajzolásáért és dekorációikért. A rendereléshez a Weston használhatja az OpenGL ES -t vagy a pixman könyvtárat a szoftveres megjelenítéshez . A teljes OpenGL implementációt nem használják, mert a legtöbb jelenlegi rendszeren a teljes OpenGL könyvtárak telepítése függőségként telepíti a GLX és más X Window System támogató könyvtárakat is.

A Weston távoli hozzáférési felületét 2013 októberében javasolta egy RealVNC alkalmazott.

Maynard

Image
Maynard (2017 januárjában)

A Maynard egy grafikus héj , amelyet a Weston beépülő moduljaként írtak meg, ahogy a GNOME Shell -t a Mutter beépülő moduljaként .

A Raspberry Pi Alapítvány a Collabora -val együttműködve kiadta a Maynardot, és a teljesítmény és a memóriafogyasztás javításán dolgozik.

libinput

Image
A libinput -ot azért hozták létre, hogy megszilárdítsa a bemeneti köteget több Wayland kompozitor között.

A beviteli eszközök (billentyűzetek, mutatók, érintőképernyők stb.) Kezelésére szolgáló Weston -kódot saját külön könyvtárába osztották , libinput néven , amelynek támogatását először a Weston 1.5 -ben egyesítették.

A Libinput több Wayland kompozitor beviteli eszközét kezeli, és általános X.Org szerver beviteli illesztőprogramot is biztosít . Célja, hogy egy megvalósítást biztosítson több Wayland -kompozitor számára, és közösen kezelje a bemeneti eseményeket, miközben minimálisra csökkenti az egyéni bemeneti kód -kompozitorok mennyiségét. A libinput eszközészlelést ( udev -n keresztül ), eszközkezelést, beviteli eszköz eseményfeldolgozást és absztrakciót biztosít.

A libinput 1.0 verziója követte a 0.21 -es verziót, és támogatta a táblagépeket, a gombkészleteket és az érintőpad -gesztusokat. Ez a verzió stabil API/ABI -t fog fenntartani.

Mivel a GNOME/GTK és a KDE Frameworks 5 kiemelte a szükséges módosításokat, a Fedora 22 helyettesíti az X.Org evdev és Synaptics illesztőprogramjait a libinput -ra.

Az 1.16-os verzióval az X.Org Server támogatást kapott a libinput könyvtárhoz egy xf86-input-libinput nevű burkoló formájában .

Wayland biztonsági modul

A Wayland Security Module egy olyan javaslat, amely hasonlít a Linux kernelben található Linux Security Module interfészre .

Egyes alkalmazások (különösen azok, amelyek a kisegítő lehetőségekhez kapcsolódnak ) kiváltságos képességeket igényelnek, amelyeknek működniük kell a különböző Wayland kompozitorok között. Jelenleg a Wayland alá tartozó alkalmazások általában nem tudnak kényes feladatokat végrehajtani, például képernyőképeket készíteni vagy beviteli eseményeket beadni. A Wayland fejlesztői aktívan keresnek megvalósítható módokat a privilegizált ügyfelek biztonságos kezelésére, majd kiváltságos interfészeket terveznek számukra.

A Wayland Security Module egy módja annak, hogy a biztonsági döntéseket az alkotón belül egy központi biztonsági döntési motorra ruházza át.

Örökbefogadás

A Wayland protokollt úgy tervezték, hogy egyszerű legyen, így további protokollokat és interfészeket kell meghatározni és megvalósítani a holisztikus ablakrendszer elérése érdekében. 2014 júliusától ezeken a további interfészeken dolgoztak. Tehát, bár az eszköztárak már teljes mértékben támogatják a Wayland -t, a grafikus héjak fejlesztői együttműködnek a Wayland fejlesztőkkel, és létrehozzák a szükséges kiegészítő felületeket.

Asztali Linux disztribúciók

2020 -tól a legtöbb Linux disztribúció támogatja a Waylandet, néhány figyelemre méltó példa:

  • A Fedora a 25. verziótól kezdve (2016. november 22.) a Waylandet használja az alapértelmezett GNOME 3.22 asztali munkamenethez, az X.Org tartalékként, ha a grafikus illesztőprogram nem támogatja a Wayland -t. A Fedora a Waylandet használja alapértelmezésként a KDE asztali munkamenetéhez a 34 -es verziótól (2021. április 27 -én)
  • Az Ubuntu alapértelmezettként szállítja a Waylandet az Ubuntu 17.10 (Artful Aardvark) programban. Az Ubuntu visszatért az X.Org rendszerhez az Ubuntu 18.04 LTS -hez, mivel a Wayland továbbra is problémákat tapasztal a képernyőmegosztással és a távoli asztali alkalmazásokkal, és nem áll helyre olyan jól az ablakkezelő összeomlása után. Az Ubuntu alapértelmezés szerint 21.04 -ben szállítja a Waylandet.
  • A Red Hat Enterprise Linux alapértelmezett munkamenetként szállítja a Waylandet a 2019. május 7 -én kiadott 8 -as verzióban.
  • A Debian a Wayland -t a GNOME alapértelmezett munkameneteként szállítja a 2019. július 6 -án kiadott 10 -es verzió óta.
  • A Slackware Linux 2020. február 20 -án a Wayland fejlesztői verzióját, a -current -et is tartalmazza, amely végül 15.0 -s verzió lesz.
  • A Manjaro alapértelmezettként szállítja a Waylandet a Manjaro 20.2 (Nibia) Gnome kiadásában (megjelent 2020. november 22 -én).

Figyelemre méltó korai elfogadó:

  • A RebeccaBlackOS egy élő, Debian-alapú Linux-disztribúció, amely lehetővé teszi a valódi Wayland asztali számítógép kipróbálását anélkül, hogy módosítania kellene a számítógép fő operációs rendszerén. Már 2012 óta használják a Wayland bemutatására.

Eszközkészlet támogatás

A Waylandet támogató eszközkészletek a következők:

  • A rendetlenség teljes Wayland támogatással rendelkezik.
  • Az EFL teljes körű Wayland támogatással rendelkezik, kivéve a kiválasztást.
  • A GTK 3.20 teljes Wayland támogatással rendelkezik.
  • A Qt 5 teljes Wayland támogatással rendelkezik, és használható mind a Wayland kompozitorok, mind a Wayland kliensek írására.
  • A Wayland SDL támogatása a 2.0.2 kiadással debütált, és alapértelmezés szerint engedélyezett a 2.0.4 verzió óta.
  • A GLFW 3.2 Wayland támogatással rendelkezik.
  • A FreeGLUT kezdeti Wayland támogatással rendelkezik.

Asztali környezetek

Az asztali környezetek, amelyeket X -ről Wayland -re hordoznak, a GNOME , a KDE Plasma 5 és az Enlightenment .

2015 novemberében bejelentették az Enlightenment e20 -at, teljes Wayland támogatással. A GNOME 3.20 volt az első verzió, amely teljes Wayland -munkamenetet kapott. A GNOME 3.22 sokkal továbbfejlesztett Wayland támogatást tartalmazott a GTK, a Mutter és a GNOME Shell szerte. A GNOME 3.24 támogatást szállított a szabadalmaztatott NVidia illesztőprogramokhoz a Wayland alatt.

A KDE Plasma Wayland támogatása elmaradt a Plasma 5 megjelenéséig, bár korábban a KWin 4.11 kísérleti Wayland támogatást kapott. A Plasma 5.4 -es verziója volt az első Wayland -munkamenettel. 2020 folyamán a Klipper a Waylandre került, és a következő, 2020. októberi 5.20 -as kiadás célja a képernyő -átvitel és -felvétel javítása.

Más szoftver

A Waylandet támogató egyéb szoftverek a következők:

  • Az intelligens bemeneti busz a Wayland támogatásán dolgozik, készen állhat a Fedora 22 -re.
  • A RealVNC 2014 júliusában közzétett egy Wayland fejlesztői előzetest.
  • A Maliit egy Wayland alatt futó beviteli módszer keretrendszer.
  • A kmscon támogatja a Waylandet a wlterm segítségével.
  • A Mesa Wayland támogatást tartalmaz.
  • Az Eclipse -t a Wayland -on futtatták egy GSoC -projekt során 2014 -ben.
  • A Vulkan WSI (Window System Interface) egy API hívás, amely hasonló célt szolgál, mint az EGL az OpenGL ES esetében vagy a GLX az OpenGL esetében. A Vulkan WSI az első naptól kezdve támogatja a Wayland -t: VK_USE_PLATFORM_WAYLAND_KHR. A Vulkan kliensek módosítatlan Wayland szervereken is futhatnak, beleértve a Westont, a GENIVI LayerManager -t, a Mutter / GNOME Shell -t, az Enlightenmentet és még sok mást. A WSI lehetővé teszi az alkalmazások számára, hogy felfedezzék a rendszer különböző GPU -jait, és megjelenítsék a GPU -renderelés eredményeit egy ablakrendszerben.
  • SPURV , az Android alkalmazások kompatibilitási rétege a Wayland használatával Linux disztribúciókon

Mobil és beágyazott hardver

A Waylandet támogató mobil és beágyazott hardverek a következők:

Történelem

Kristian Høgsberg, Linux grafikus és X.Org fejlesztő, aki korábban az AIGLX-en és a DRI2-n dolgozott , 2008-ban szabadidős projektként kezdte a Waylandet, miközben a Red Hat-nél dolgozott . Meghatározott célja egy olyan rendszer volt, amelyben "minden képkocka tökéletes, ezalatt azt értem, hogy az alkalmazások képesek lesznek annyira szabályozni a megjelenítést, hogy soha nem látunk szakadást, késést, átrajzolást vagy villódzást". Høgsberg a Massachusetts állambeli Wayland városon keresztül vezetett , amikor a mögöttes fogalmak "kikristályosodtak", innen a név.

2010 októberében a Wayland freedesktop.org projekt lett . Az áttelepítés részeként a korábbi Google-csoportot felváltotta a wayland-devel levelezőlista, amely a projekt központi vita- és fejlesztési pontja.

A Wayland kliens- és szerverkönyvtárakat eredetileg az MIT licenc alatt adták ki , míg a referenciaösszesítő Weston és néhány példakliens a GNU General Public License 2 -es verzióját használta . Később az összes GPL kódot újra engedélyezték az MIT licenc alatt, "hogy megkönnyítsék a kód áthelyezését a referencia megvalósítás és a tényleges könyvtárak között". 2015 -ben kiderült, hogy a Wayland által használt engedély szöveg kissé más és régebbi változata volt az MIT licencnek, és a licenc szövegét frissítették az X.Org projekt által használt jelenlegi verzióra ( MIT Expat License ).

A Wayland együttműködik az összes Mesa-kompatibilis illesztőprogrammal, DRI2 támogatással, valamint az Android illesztőprogramokkal a Hybris projekten keresztül .

Kiadások

Major Wayland és Weston kiadások
Változat Dátum Főbb jellemzői
Wayland Weston
Régi, már nem karbantartott verzió: 0,85 2012. február 9 Első kiadás.
Régi, már nem karbantartott verzió: 0,95 2012. július 24 Elkezdődött az API stabilizálása.
Régi, már nem karbantartott verzió: 1.0 2012. október 22 Stabil wayland-client API.
Régi, már nem karbantartott verzió: 1.1 2013. április 15 Szoftver renderelés. FBDEV, RDP háttérprogramok.
Régi, már nem karbantartott verzió: 1.2 2013. július 12 Stabil wayland-szerver API. Színkezelés. Alfelületek. Raspberry Pi háttérrendszer.
Régi, már nem karbantartott verzió: 1.3 2013. október 11 Több pixel formátum. Nyelvi kötések támogatása. Android illesztőprogram támogatás libhybris -en keresztül .
Régi, már nem karbantartott verzió: 1.4 2014. január 23 Új wl_subcompositor és wl_subsurface interfészek. Több framebuffer formátum. logind támogatás a gyökértelen Weston számára.
Régi, már nem karbantartott verzió: 1.5 2014. május 20 libinput. Teljes képernyős héj.
Régi, már nem karbantartott verzió: 1.6 2014. szeptember 19 alapértelmezés szerint a libinput.
Régi, már nem karbantartott verzió: 1.7 2015. február 14 A Wayland bemutató kiterjesztésének és a felszíni szerepek támogatása. IVI shell protokoll.
Régi, már nem karbantartott verzió: 1.8 2015. június 2 Elkülönített fejlécek a mag és a generált protokoll számára. Újrafestés ütemezése. Nevesített kimenetek. Kimeneti transzformációk. Surface-shooting API.
Régi, már nem karbantartott verzió: 1.9 2015. szeptember 21 Frissített licenc. Frissített licenc. Új tesztkeret. Háromfejű DRM kompozitor. linux_dmabuf kiterjesztés.
Régi, már nem karbantartott verzió: 1.10 2016. február 17 Fogd és vidd funkció, csoportosított mutatóesemények. Video 4 Linux 2, érintéses bevitel, hibakeresési fejlesztések.
Régi, már nem karbantartott verzió: 1.11 2016. június 1 Új biztonsági mentési betöltési rutin, új beállítási logika. Proxy csomagolók, megosztott memória módosítások, Doxygen által generált HTML dokumentumok.
Régi, már nem karbantartott verzió: 1.12 2016. szeptember 21 A hibakeresési támogatás javult. libweston és libweston-desktop. Mutató reteszelése és bezárása. Relatív mutató támogatás.
Régi, már nem karbantartott verzió: 1.13 2017. február 24 A Weston ABI -je megváltozott, így az új verziót 2.0.0 -nak nevezték, nem pedig 1.13.0 -nak.
Régi, már nem karbantartott verzió: 1.14 2017. augusztus 8 Ugyanakkor megjelent a Weston 3.0.0.
Régi, már nem karbantartott verzió: 1.15 2018. április 9 Ugyanakkor megjelent a Weston 4.0.0.
Régi, már nem karbantartott verzió: 1.16 2018. augusztus 24 Ugyanakkor megjelent a Weston 5.0.0.
Régi, már nem karbantartott verzió: 1.17 2019. március 20 Ugyanakkor megjelent a Weston 6.0.0.
Régi, már nem karbantartott verzió: 1.18 2019. augusztus 2 A Weston 7.0.0 egy hónappal később jelent meg.
Jelenlegi stabil verzió: 1.19 2021. január 27
Weston 8 2020. január 24
Weston 9 2020. szeptember 4
Legenda:
Régi verzió
Régebbi verzió, még mindig karbantartva
Legújabb verzió
A legújabb előzetes verzió
Jövőbeni megjelenés

Lásd még

Hivatkozások

Külső linkek