Hrátky v Linuxe
2021-02-02 - orzo
Zhruba pred týždňom ma pochytila taká akási low-level mánia a pustil som sa do šprtania desktopových útrob. Zasa. Na vine je nová verzia Waylandu (v.1.19.0), ktorú čochvíľa doplnia upgradnuté desktopy Gnome 40 a KDE Plasma 5.21.
Nastal čas - zvolal som slávnostným tónom - spraviť po rokoch nič-nerobenia nové review. Malú programátorskú rozcvičku. Svojpomocne si overíme, v akom stave sa nachádza Wayland, ako pokročila jeho podpora v Plazme, či je už wl použiteľný na nvidiackych kartách.
Cieľom má byť jednoduchá dummy aplikácia, wayland klient. Najprv prázdne okno, potom jednoduché demíčko.
Prvú fázu som chcel mať hotovú za jeden deň (keďže v tom mám Prax), ale nakoniec som exampel dokončil až po týždni. Vrámci svojich možností, popri robote.
Samotný Wayland, pripomeniem, je len niekoľko xml-ok, ktoré definujú protokol medzi serverovým "compositorom" ("window managerom", wm) a "oknom aplikácie". Wayland nie je aplikácia, knižnica ani SDK. Predstavte si loď na mori, ktorá si zbesilo vymieňa svetelné signály s majákom. Wl nereprezentuje loď, maják, more ani reflektory. Wl je ten svetelný kód; formát, protokol, v ktorom si loď a maják vymieňajú informácie.
To "ostatné" - postavené na wayland protokole - sú od neho nezávislé projekty.
Medzi "majákmi" (display servermi) nájdete napríklad Mutter, KWin, Sway. Keď windowsák povie "beží to pod Windowsom", v linuxovej terminológii by tým narážal na display server.
"Loďou" je potom váš web-browser, alebo file-browser, alebo notepad. Alebo tá moja malá, maličká lodička, kľudne aj deravá nafukovačka, skrátka jednoduchá natívna waylandová gameska.
Ale späť k Waylandu a jeho xml-kám. Z benevolentnosti wl teamu si z nich vieme behom sekúnd vygenerovať low-level knižnice (wrappery) libwayland-server (pre window manager) a libwayland-client (pre hru).
Display server sa stará o enumeráciu obrazoviek, inputov (klávesnice, myšky), rozmiestnenie okien. Pokiaľ si na to trúfate, s libwlserverom (prípadne s nadstavbami wlroots alebo libwayland) môžete vytvoriť svoj vlastný plnohodnotný desktop.
Mňa dnes zaujíma len wl client - aplikačné okno. Aké máme novinky v user-space, či je už gamedev na linuxoch menej odstrašujúci; či je priam dev-friendly; ako ľudia okolo waylandu za posledné roky pokročili s podporou vývojárov.
Na webe nám samozrejme pribudla nejedna nová knižka a tutorial, čo je super. Ďalšie už písať nemusia, je ich dosť.
Čo je naopak mrzuté, že všetky sú pre "začiatočníkov". Končia - prázdnym oknom.
Hlavným zdrojom informácií je naďalej Weston, tzv. referenčný compositor. V Arch repozitoroch má celý balík povedzme že štyri mega... Možno šesť. Plus mínus. Do šiestich mega máte narvaný celý desktop (tak ako desktopy vnímajú Windowsáci) aj so zdrojákmi a examplami.
Weston je bez irónie dielo vytvorené s láskou a citom; krásne, dizajnom minimalstické, a pritom na pozadí komplexné. Waylanďáci do neho investovali absurdné množstvo času, energie, prostriedkov.
A - nikto - nechápe - prečo.
Weston má slúžiť ako zborník examplov, príkladov, snippetov; akýsi katalyzátor na adopciu wl v hlavných linuxových kompozitoroch. Lenže osem rokov stagnácie myslím dostatočne dokazuje, ako moc sa minul účinkom. Takto to vo vývoji skrátka nechodí. Nové technológie sa nezavádzajú tak, že vsetci zainteresovaní budú desať-dvadsať rokov reverse-inžinierovať kohosi pet projekt.
Weston nemôže zastúpiť SDKčky.
Desktopový Linux urgentne potrebuje low-level alternatívu ku Windows SDK. Vývoj nemôže fungovať ako Ikea, že než sa dostaneme ku práci, najprv musíme hodinu montovať nástroje a stoly. Všetka rutina mala byť dávno zawrappovaná - spravená raz a poriadne. Autormi waylandu. Nie je možné, aby začiatočník (amatér, študent, demoscéner) potreboval štyri noci na vytvorenie prázdneho okna.
Pre porovnanie, na Windowsoch vytvoríte v c-čku prázdne okno za pár desiatok minút. Max.
Uf.
Prejdime k pozitívnym zmenám.
Po dvojitom preventívnom pyčungu prichádza to hlavné - príjemné - prekvapenie: xdg-decorations sa behom ostatných dvoch rokov stali pevnou (hoci unstable) súčasťou protokolu!
Vnímate tú radosť? :)
Že čo presne to znamená?
Že moje wl okno má konečne titlebar! :) Maximize, minimize, close tlačítko! Okraj, ktorým môžem oknu meniť rozmery! :) A všetko je to renderované v rovnakej téme, ako desktop! Neuveriteľné. Krásne. Úžasné. O takom sme pred tromi rokmi nechyrovali. Elementárne featury (na ktoré sme zvyknutí od prvého Amiga OS z 1985) sa stávajú realitou aj vo Waylande.
Už zostáva vytvoriť len stabilný desktop :)
KDE Plasma 5.20 je vo WL móde bohužiaľ na hrane použiteľnosti, +/- na úrovni pre-alfy. Pre c/c++ samoukov je... asi... ok... ale dlhodobo ju nedokážem používať. Screen-tearing, polofunkčný clipboard, crashujúci task-switcher... Plasma 5.20 WL nie je do produkčného prostredia.
Nás samozrejme bude zaujímať predovšetkým Plasma 5.21, ktorá vychádza o dva-tri týždne. Na nej si (podľa možností) vyskúšame aj aktuálny stav Vulkanu na nvidiách.
Alternatívne, na Fedore a na Archoch za chvíľu vychádza Gnome 40 (postavený na GTK4). Taktiež aprílový Ubuntu 21.4 bude mať prednastavený wayland mód. AK sa stane nemožné a niekto z tých "zlých linuxákov" ("ja viem najlepšie čo vy chcete") do muttera adaptuje xdg-decorations -- o čom všetci pochybujeme -- bude to pre gamedev na linuxoch obrovský, nepredstaviteľný skok dopredu.
Hráči bez xdg-decorations bezpochyby prežijú. Ich hry (ak raz nejaké vzniknú) pobežia len vo fullscreen móde. Nič hrozné sa nedeje. KDE Plasma bude mať oproti Gnome malú plusku.
Lenže u vývojárov, developerov, ktorých ide pri debugovaní poraziť z podobných iracionálnych zákerností - u nás aj takáto prkotina zaváži. Desktopový Linux nie je v pozícii, že by mohol vyjednávať: "Túto featuru vám dáme, a túto nie, lebo nám škratí náš grandiózny UML diagram".
Linux sa musí prispôsobiť gamedev scéne. Nie naopak.
Tak sa veci majú.
V každom prípade, bez ohľadu na mutter, Gnome, Red Hat a Canonical, prinajmenšom vďaka KDE nás čaká veľký rok. Progres! Vývoj! Tešíme sa, konečne sa hýbeme vpred.
A teraz hurá nazad do práce.