💾 Archived View for aelspire.info › posty › 2022-11-05-wayland › post.gmi captured on 2023-01-29 at 02:33:01. Gemini links have been rewritten to link to archived content
-=-=-=-=-=-=-
Niedawno w końcu udało mi się na ostatnim z moich komputerów zainstalować kompozytor Wayland’a – Hyprland. Do tej pory ten komputer miał zainstalowany bspwm. Główną przyczyną takiego stanu rzeczy był fakt, że maszyna ta ma kartę graficzną nVidii. Niestety. Kupowałem ją w czasach kiedy o dobrych sterownikach do AMD jeszcze nikt nie mówił, a Blender3D wspierał tylko CUDA jako akceleracje GPU do renderowania. Teraz już bym sobie nic od nVidii nie kupił.
Jednakże nie obyło się bez małych problemów: zaobserwowałem losowe mignięcia ekranu, jest to znany problem z nVidii’ą. Na szczęście sugerowany patch z Hyprland’a pomógł tutaj. Na Intelu którego mam na laptopie problemów nie było żadnych. Do tego nie działa WebGL którego na złość musi używać jedna strona z której korzystam: Airly¹. I znowu na laptopie bez problemów. Czyli nVidii’a ciągle w tyle za innymi jeżeli chodzi o wsparcie dla Wayland’a. Ale już da się używać. Co samo w sobie jest już sporym postępem.
Z tej okazji postanowiłem zernkąć na stopień skomplikowania tego protokołu i porównać go z X11. I muszę powiedzieć, że mi się podoba. Jest znacznie prostszy i bardziej nowoczesny. A jak do X11 doliczyć jeszcze EWMH² to już w ogóle.
Ekspertem od X11 nie jestem, ale trochę na ten temat wiem. X jest zdolny to prostego software’owego rysowania, zarówno prostych grafik typu linie, łuki i prostokąty (bez antyaliasing’u, ale to da się zasymulować rysując kilka linii), jak i wyświetlania znaków na aż dwa różne sposoby. W czasach kiedy X powstawał miało to sens żeby serwer grafiki zajmował się rysowaniem. Jednakże dzisiaj większość programów nie korzysta z tych funkcji tylko rysuje za pomocą innych bibliotek np. Cairo³ na obrazek który następnie X wyświetla, albo wręcz korzysta z GPU bezpośrednio. Przez co te wszystkie funkcje stanowią tylko zbędny balast. Do tego samo jądro Linux’a obrosło w różne funkcje, które sprawiają że sam serwer Xorg zaczyna być niepotrzebny.
Wayland jest prosty. Można opisać go tak: klient komunikuje się z kompozytorem Wayland’a po socket’cie unix’owym, tworzy bufor, który jest w pamięci dzielonej z kompozytorem (shm) i do tego bufora rysuje co chce, a gdy skończy komunikuje kompozytorowi, że skończył i ten może wyświetlać zawartość bufora. Moim zdaniem tak znaczne uproszczenie całości przy zachowaniu tego co w X11 było udane (prosta komunikacja po socket’ach).
Z tej okazji próbuję stworzyć własny spersonalizowany pasek statusu:
Obecny stan mojego paska statusu.
Jak na razie wyświetla tło i czerwony prostokąt jako placeholder dla przyszłych widżetów. Zobaczymy co z tego będzie. Jak coś kiedyś będzie działało więcej to wrzucę kod na swojego publicznego Git’a.