četvrtak, 18 aprila, 2024
Predstavljamo

Wayland i zbrka sa X serverom

Autor: Nikola Hardi

Grafička okruženja

Unix-oliki sistemi poseduju grafička okruženja još od sredine osamdesetih godina kada čistokrvni UNIX još nije bio ugrožena vrsta. Reč je o Xfree86 standardu koji je petnaest godina kasnije zamenjen X.org projektom zbog nekih nesuglasica u vezi sa licenciranjem. Na internetu se po ovom pitanju upravo događa nova revolucija jer se Wayland priprema da zameni X.

Od osamdesetih pa do danas, skup tehnologija koje su se nizale da bismo na raspolaganju imali moderna grafička okruženja, brzo je rastao. Protokoli i standardi su dodavani, menjani i završili smo sa X serverom koji je prava mala džungla. Jako malo ljudi na svetu zaista zna i razume kako funkcioniše (prim.aut.). U nekom trenutku, verovatno, i njima je prestalo biti jasno zašto to još uvek funkcioniše.

Sledi kratak pregled ovih tehnologija, od kernela pa do kursora. Drajvere za grafičke kartice ćemo ovaj put ostaviti po strani. Videćemo gde je nastala zbrka, zašto želimo nov standard i na kraju zašto ćemo nažalost morati da sačekamo još neodređeno dugo vremena da Wayland zameni X.

X stack

Krenimo unatraške, jedan po jedan korak. Pred sobom imamo monitor koji pokazuje niz piksela. Niz piksela koji istovremeno treba da budu prikazani na monitoru, zovu se frejm (eng. frame). Mesto gde će ti pikseli biti nagomilani pre nego što budu jedan za drugim poslati ka monitoru, naziva se frejm bafer (eng. frame buffer) i taj deo memorije je naša polazna tačka. X server je, pored drugih stvari, zadužen za pripremanje piksela koji će biti smešteni u frejm bafer.

U redu, šta treba da bude prikazano na monitoru? Želimo da vidimo aplikacije koje su prikazane u vidu prozora, sa svojim menijima, bojama, preklapanjima itd. O tome gde će koji prozor biti iscrtan, koje veličine će biti, da li će preko njega biti još nešto iscrtano, odlučuje window manager (wm). Zanimljiva klasa window manager-a su tzv. kompozitni window manager-i (composite window manger, compositors) koji omogućavaju preklapanje prozora uz uključivanje aktivne prozirnosti i slične igrarije. Window manager je zadužen i za transformaciju prozora (sećate se compiz 3D kocke?). Window manager je deo i radnog okruženja (eng. desktop environment). Radna okruženja su širok pojam i recimo da možemo da ih aproksimiramo kao skup programa koji su potrebni za prijatan rad na računaru (window manager, toolbar, radna površina itd.).

Zanimljiva stvar je da window manager-i mogu da rade i samostalno, bez radnog okruženja, što nije tako retka pojava. Recimo dwm, awesome wm, i3, openbox, fluxbox i mnoštvo drugih su vrlo popularni među zajednicom ljudi koji su zaljubljeni u minimalizam i koriste računare do krajnjih granica.

Gde je nastala zbrka?

Kao što smo već i napisali, X je skup tehnologija koje su u opticaju već predugo, mnoge sitnice su tu zbog kompatibilnosti i istorijskih razloga. Recimo X radi kroz mrežu, komunicira kroz tcp/ip protokol. Nekada je X bio zadužen i za upravljanje uređajima za unos (miš, tastatura i drugo), svašta je dodavano i izbacivano.

Trenutna konfiguracija može da se svede na sledeću postavku. X server je u centru. Putem X-a aplikacije komuniciraju sa window manager-om (compositor-om), a X potom smešta piksele u frejm bafer. Dakle, sve se svelo na to da je X samo posrednik u komunikaciji između frejm bafera i aplikacija koje žele da iscrtavaju? Kako Wayland programeri u šali kažu, X je sada sistem za komunikaciju između procesa, i to loš sistem.

X polako stari, vrlo je složen za nadogradnju i dalji razvoj. Zbog arhitekture trenutnog sistema za grafički prikaz i mrežnih protokola koji još uvek rade u pozadini, X počinje da pravi probleme na slabijem hardveru kao što je, recimo, Raspberry Pi. Osim navedenih stavki koje u grubim crtama opisuju problem, postoji niz drugih problema kao što su način na koji su prozori jedne aplikacije predstavljeni X serveru.

Ideja iza Wayland-a je da se taj posrednik izbaci i da kompozitor ujedno bude zadužen i za tu komunikaciju sa drugim aplikacijama i za pripremu frejm bafera, odnosno iscrtavanje. Wayland nije zamena za X već samo protokol kojim aplikacije i kompozitor mogu međusobno da komuniciraju. To znači da će nam biti potrebni novi window manager-i koji će raditi onaj deo posla za koji je X trenutno zadužen.

Šta je Wayland, šta je Weston i ko to sve pravi?

Ideja na prvi pogled izgleda suludo. Zašto bi se jedan mali program kao window manager bavio celom tom problematikom? Ključ leži u tome da Wayland protokol od te problematike pravi rutinski posao koji se rešava u relativno malo linija koda. Bitna stvar za koju je pravi trenutak da skrenemo pažnju, jeste da će X biti zamenjen modernim window manager-ima, a ne Wayland-om koji je samo protokol.

Jedan od window manager-a koji je zasnovan na Wayland protokolu je Weston. On služi kao primer šta sve Wayland kao protokol omogućava, kao primer kako drugi programeri treba da razvijaju svoje kompozitore. Weston se najbrže razvija i praktično je jedini koji ide u korak sa razvojem Wayland-a. Bitna stavka je da Wayland i Weston razvija grupa ljudi iz X.org fondacije koja je inače zadužena i za X server. Ovo je svakako bitan podatak jer je reč o ljudima kojima verujemo već jako dugi niz godina.

Kako mogu da probam?

U redu, nadamo se da smo uspeli da opišemo probleme koji su počeli da se javljaju sa trenutnim rešenjima i da vas zainteresujemo za Wayland/Weston kombinaciju, međutim, moraćemo da vas razočaramo jer Wayland još uvek nije sasvim upotrebljiv i proći će još barem nekoliko godina dok ne zaživi svugde oko nas, a i tada će X biti prisutan, makar u tragovima.

Najjednostavniji način da isprobate Wayland, jeste da instalirate Weston. Kada ga pokrenete u postojećoj X sesiji (u već pokrenutom grafičkom okruženju), pred vama će biti novo okruženje radne površi sa kojim možete da se igrate. Dakle, Weston će raditi svoj posao, ali neće iscrtavati direktno na monitor, već će iscrtavati u prozor koji će X i trenutni window manager već nekako prikazati na monitoru.

Drugi način je da Weston pokrenete umesto X sesije i koristite ga baš kako je i zamišljeno. Primetićete da to već izgleda poprilično fino i upotrebljivo, osim što aplikacije na koje ste navikli, verovatno ne rade u Weston-u. Dakle ipak postoje krupni problemi za koje treba još dosta vremena da budu rešeni, a evo i o čemu je tu reč.

Zašto nećemo ubrzo početi da koristimo Wayland?

Grafičke biblioteke i programi koje koristimo u svakodnevnom radu na unix-olikim operativnim sistemima, pisane su tako da komuniciraju sa X serverom, a mi sada odjednom želimo da one pričaju novim protokolom po imenu Wayland. Mnoge popularne biblioteke već uveliko rade na tome da „propričaju” Wayland protokolom, programi se razvijaju, a window manager-i pišu, ali to još nije uzelo maha.

Privremeno rešenje postoji i ono se zove XWayland. Ideja je da pored Weston-a imamo i pokrenut X server i da, kao što je ranije u tekstu bilo opisano, X bude zadužen za iscrtavanje Weston-a, a sada Weston bude zadužen za iscrtavanje aplikacija koje je pripremio X. U suštini to izgleda ovako. Imamo Wayland klijente koji direktno pričaju sa Weston-om, i imamo stare, X klijente koji pričaju sa X serverom u pozadini, a Weston potom njihov sadržaj iscrtava. Napomenućemo da X server može da radi u tzv. rootless režimu, tako da su svi programi (X klijenti) koji su priključeni na jedan X server, ipak posebni prozori u Weston-u. Dakle, ovo je razlog zašto će se X još dugo zadržati, makar u tragovima – kompatibilnost sa starijim aplikacijama pisanim za X.

Konkurencija i mišljenje drugih

Sigurno ste načuli da pored Wayland-a postoji i drugi projekat koji „preti” da zameni X. Reč je o projektu po imenu Mir koji je pokrenuo Cannonical za potrebe razvoja Ubuntu-a i Unity okruženja. Po konceptu je vrlo sličan Wayland-u.

Uopšteno, Wayland je naišao na odobravanje u zajednici, osim po jednom pitanju oko kojeg se još uvek vodi bučna rasprava, ali Wayland programeri ne odustaju od svojih stavova. Da li će Wayland omogućiti upotrebu grafičkih programa kroz mrežu, kao što to čini X (ssh -X)? Kratko i jasno: neće! Wayland ekipa tvrdi da način na koji je ovo realizovano u X serveru, svakako nije dobar, zatim da postoje druga rešenja i da nemaju ništa protiv ovakvih mogućnosti, ali to je posao za jedan sasvim novi tim i jedan sasvim novi projekat.