Co to jest Wayland w systemie Linux i czym różni się od X?

Opublikowany: 2023-07-17
Menedżer plików otwarty na laptopie System76 Gazelle
Hannah Stryker / Jak to zrobić
Wayland to zastępczy system okienkowy dla dystrybucji Linuksa. Zastępuje starzejący się standard X11. Ponieważ wymaga modyfikacji aplikacji, aby z nim współpracowały, jego adopcja przebiegała jak dotąd powoli. W chwili pisania tego tekstu główną przewagą nad X11 jest zwiększone bezpieczeństwo.

X11, czyli X Window System, umożliwia graficznemu środowisku pulpitu wyświetlanie i sterowanie oknami. Wayland jest następcą X11. Został zaprojektowany tak, aby był szybszy i bezpieczniejszy. Oto, co musisz o nich wiedzieć.

Spis treści

Co to jest Wayland?
Wiele imion X
Jak działa X11
Jak działa Wayland
Powolna adopcja Waylanda przez aplikacje
Czy używasz Waylanda lub X11?
Czy powinieneś używać Waylanda lub X11?

Co to jest Wayland?

Wayland to nowoczesny zamiennik X11, który od dziesięcioleci jest domyślnym systemem okienkowym w Linuksie. Wayland to protokół komunikacyjny, który definiuje przesyłanie wiadomości między serwerem wyświetlania X Window a aplikacjami klienckimi. Projekt Wayland udostępnia biblioteki klienckie i serwerowe, które umożliwiają aplikacjom korzystanie z protokołu.

Projekt Wayland został zapoczątkowany przez programistę Red Hata w 2008 roku.

Wiele imion X

X Window System to system okienkowy, po raz pierwszy wydany dla systemu Unix przez Massachusetts Institute of Technology w 1984 roku. Aplikacje mogą opierać się na funkcjonalności oferowanej przez system okienkowy w celu generowania interfejsów użytkownika.

Do 1987 roku system X Window osiągnął wersję 11 i stał się znany jako X11. Jest teraz zarządzany przez Fundację X.Org. Nadal jest w wersji 11, chociaż od 1987 roku pojawiło się wiele mniejszych wydań. W chwili pisania tego tekstu obecną wersją stabilną jest X11R7.7.

„X” w nazwie nie oznacza dziesięciu cyframi rzymskimi, ani nie sugeruje „Xtra”, „Xtended” ani niczego podobnego. Poprzedni system okien nosił nazwę „W” od „okien” i po prostu przeszli do następnej litery alfabetu, kiedy rozpoczynali nowy projekt.

Usłyszysz system X Window określany jako „X”, „X11”, „Xorg”, „X Windows” i „X Window System”.

Jak działa X11

System X Window obsługuje zdarzenia i prymitywy niskiego poziomu, takie jak interakcja z myszą oraz rysowanie i przesuwanie okien. Aplikacje obsługują wizualizacje i projekt interfejsu. Wygląd okien, jakie mają przyciski i gdzie się one znajdują, to wybory, których dokonuje programista aplikacji. System X Window rysuje wynikowy projekt na ekranie.

X11 zawiera definicję komunikacji, która musi przechodzić pomiędzy różnymi komponentami działającego systemu X Window. Ta komunikacja jest wymagana, ponieważ kod, którego aplikacja obsługująca X-y używa do rysowania okien i elementów interfejsu, nie znajduje się wewnątrz aplikacji. Ta praca jest współdzielona między serwerem X a Menedżerem okien.

Aplikacje są klientami serwera X. Menedżer okien jest specjalnym typem klienta. Serwer X jest odpowiedzialny za zarządzanie zasobami, wykonywanie żądań rysunków i kierowanie zdarzeń, takich jak naciśnięcia klawiszy i kliknięcia myszą, do odpowiednich aplikacji.

Działa również jako pośrednik w komunikacji między Menedżerem okien a aplikacjami, pośrednicząc w przekazywaniu wiadomości między nimi. Menedżer okien przechowuje listę okien, które aplikacje mają otwarte, gdzie znajdują się na ekranie, jaki mają rozmiar, czy zachodzą na siebie i tak dalej.

Compositing Window Manager utrzymuje pozaekranowy bufor dla każdego okna. Łączy te bufory w pojedynczy obraz reprezentujący najwyższe okno — reprezentujące cały pulpit — który jest zapisywany na ekranie.

Wszystkie nowoczesne graficzne środowiska graficzne, w tym GNOME i KDE, używają menedżerów okien do tworzenia kompozycji.

Jak działa Wayland

Wayland ma rozwiązać problemy X11. Architektura X11 wymaga dużej ilości komunikatów. Serwer X znajduje się pomiędzy klientami a Menedżerem okien. Znajduje się również między wszystkim a — za pośrednictwem jądra — sprzętem graficznym. Ilość wiadomości może prowadzić do opóźnień i opóźnień, skoków wizualnych.

Istnieje również duża baza kodów. Jest aplikacja serwerowa, aplikacja Window Manager i biblioteka X11, z której korzystają klienci. Im większa (i starsza) jest twoja baza kodu, tym trudniej jest ją utrzymać i tym bardziej będziesz zmagać się ze starszym kodem.

Zmieniając architekturę, Wayland zmodernizował i usprawnił bazę kodu, zapewniając korzyści w zakresie wydajności i zwiększone bezpieczeństwo.

W efekcie połączyli serwer i menedżera okien w jedną aplikację. Usunęli każdy kod, który wykonywał funkcje, które są teraz wykonywane przez jądro. Zamiast powielać wysiłek, wykorzystali funkcjonalność jądra.

Dzięki Wayland kompozytor i aplikacja kliencka komunikują się bezpośrednio. Kompozytor utrzymuje swoje wewnętrzne mapowanie, które okna znajdują się na pulpicie oraz jaki jest ich rozmiar i stan. Pośredniczy w zdarzeniach zmiany klawiatury, myszy i okien oraz wysyła je do aplikacji, które są właścicielami tych okien.

Aplikacje odpowiednio aktualizują interfejs użytkownika. Główną różnicą jest to, że renderowanie odbywa się wewnątrz samych aplikacji, przy użyciu połączonych bibliotek Wayland.

Aplikacja aktualizuje bufor używany do przechowywania okna lub tworzy nowy i odrzuca stary. Następnie aplikacja kliencka wysyła powiadomienie do kompozytora, informując go o zaktualizowaniu mapowania okien i użyciu nowego lub zaktualizowanego bufora wideo.

Ta uproszczona architektura i nowoczesny projekt kodu zapewniają poprawę wydajności, w szczególności zmiany rozmiaru i przeciąganie okien, które wydają się płynne i płynne.

Powolna adopcja Waylanda przez aplikacje

Wayland to domyślny system okienkowy w Debianie 10 i nowszych, Fedorze 34 lub nowszych, Ubuntu 18.04 lub nowszych oraz innych dystrybucjach, takich jak Arch Linux. Mimo to, najczęściej Wayland uruchamia aplikacje X11.

Istnieje warstwa kompatybilności o nazwie XWayland, która pozwala aplikacjom X11 działać pod Waylandem. Było to wymagane, ponieważ większość aplikacji X11 nie została zmodyfikowana i przeniesiona do Wayland.

W środowiskach komputerowych, które udostępniają kompozytorów Wayland, takich jak GNOME, oficjalne aplikacje, takie jak GNOME Text Editor i Maps, Files i Calendar, są natywnymi aplikacjami Wayland. Ale zdecydowana większość aplikacji X11 to wciąż nietknięte, natywne aplikacje X11.

Nvidia wydaje otwarte sterowniki GPU dla systemu Linux z haczykiem
POWIĄZANE Nvidia wypuszcza sterowniki GPU Open-Source dla systemu Linux, z haczykiem

Oprogramowanie pośrednie XWayland zwykle działa dobrze, ale mogą występować problemy z niektórymi aplikacjami X11, które wykonują funkcje związane z ekranem niskiego poziomu, takie jak nagrywanie ekranu. Używanie Waylanda z NVIDIA może być tak samo uciążliwe, jak w przypadku X11, chociaż nie miałem problemów z moim codziennym sterownikiem, używając go z procesorem graficznym NVIDIA GeForce GT 1030.

Niektórzy autorzy aplikacji X11 prawdopodobnie mają nadzieję, że ich aplikacja działa dobrze z XWayland i mogą uniknąć konieczności przerabiania ich na aplikacje Wayland. Nie zdziw się, jeśli absorpcja i migracja do Wayland będzie długa i powolna, a nowe aplikacje ją zaadoptują, ale większość istniejących aplikacji X11 pozostanie niezmieniona, pokładając swoje nadzieje w XWayland.

POWIĄZANE: Co nowego w Ubuntu 21.04 „Hirsute Hippo”

Czy używasz Waylanda lub X11?

Jeśli używasz jednej z głównych dystrybucji Linuksa, prawdopodobnie korzystasz już z Wayland. Możesz to sprawdzić, wydając następujące polecenie.

 echo $XDG_SESSION_TYPE

W systemie korzystającym z Wayland dane wyjściowe będą następujące:

A w systemie z systemem X Window zobaczysz:

Rzadko zmienna środowiskowa XDG_SESSION_TYPE nie jest ustawiona. W takim przypadku możesz zamiast tego użyć tego polecenia:

 loginctl show-session $(loginctl show-user $(whoami) -p Wyświetl --wartość) -p Typ --wartość

Wewnętrzna, zagnieżdżona komenda loginctl używa komendy show-user do wyświetlenia właściwości nazwanego użytkownika. Komenda whoami podaje nam nazwę bieżącego użytkownika. Opcja -p (property) ogranicza dane wyjściowe z loginctl do informacji o ustawieniu „Display”, a my używamy opcji --value , aby zwrócić tylko wartość. Nie chcemy mieć łańcucha „Display=” w odpowiedzi z loginctl . Wszystko to daje nam identyfikator sesji.

Przekazujemy identyfikator sesji do zewnętrznego loginctl i używamy polecenia show-session do wyświetlenia atrybutów sesji. Używamy opcji -p (property), aby ograniczyć dane wyjściowe do informacji o typie sesji, a opcji --value , aby wyświetlić wartość bez etykiety „Type=”.

Na komputerze korzystającym z Wayland zobaczysz:

Używając polecenia loginctl w Fedorze Linux, aby określić, czy używany jest Wayland lub X11

Jeśli korzystasz z systemu X Window, zobaczysz:

Używając polecenia loginctl w Manjaro inux, aby określić, czy używany jest Wayland lub X11

Czy powinieneś używać Waylanda lub X11?

Jeśli nie masz problemów, równie dobrze możesz trzymać się tego, czego już używasz. Ale jeśli zauważysz niestabilność lub gwałtowne aktualizacje ekranu, możesz spróbować przejść do dowolnego, którego nie używasz.

W GNOME, jeśli chcesz zamienić się i wypróbować inny system, na ekranie logowania kliknij swoją nazwę użytkownika, a następnie kliknij ikonę koła zębatego w prawym dolnym rogu ekranu.

Rozwijane menu w GNOME, które pozwala wybrać środowisko pulpitu oparte na Wayland lub X11

Menu oferuje różne wersje GNOME. Opcje, które wspominają o „Xorg”, używają systemu X Window, a te, które nie używają Waylanda.

POWIĄZANE: Jak wyświetlić zmienne środowiskowe w systemie Linux