Wayland jest protokołem serwera wyświetlania. Jego celem jest bycie następcą X Window System. Porównanie Waylanda i Xorg można znaleźć w Wikipedii.
Serwery wyświetlania używające protokołu Wayland są nazywane kompozytorami, ponieważ działają również jako kompozytowe menedżery okien. Poniżej znajduje się lista kompozytorów Waylanda.
Dla wstecznej kompatybilności, aby bezproblemowo uruchamiać starsze aplikacje X11, może być użyty XWayland, który dostarcza serwer X w Waylandzie.
- Wymagania
- Kompozytory
- Tiling
- Stacking
- Inne
- Menedżery wyświetlania
- Biblioteki GUI
- GTK
- Qt
- Clutter
- SDL2
- GLFW
- GLEW
- EFL
- winit
- XWayland
- Rozwiązywanie problemów
- Korekcja kolorów
- Spowolnienie ruchu, błędy graficzne i awarie
- Cannot open display: :0 with Electron-based applications
- Zdalne wyświetlanie
- Chwytanie wejścia w grach, zdalnym pulpicie i oknach maszyn wirtualnych
- Zobacz także
Wymagania
Większość kompozytorów Waylanda działa tylko na systemach używających ustawień trybu jądra. Wayland sam w sobie nie dostarcza środowiska graficznego; do tego potrzebny jest również kompozytor (zobacz następną sekcję), lub środowisko graficzne zawierające kompozytor (np. GNOME lub KDE).
Aby sterownik GPU i kompozytor Waylanda były kompatybilne, muszą obsługiwać to samo API bufora. Istnieją dwa główne API: GBM i EGLStreams.
Buforowe API | Obsługa sterownika GPU | Obsługa kompozytora Wayland |
---|---|---|
GBM | Wszystkie z wyjątkiem NVIDIA | Wszystkie |
EGLStreams | NVIDIA | GNOME, KDE, Weston (z łatką innej firmy) |
Kompozytory
Zobacz Menedżer okien#Types dla różnicy między Kafelkowaniem a Układaniem.
Tiling
- Cagebreak – Oparty na klatce, zainspirowany przez ratpoison.
https://github.com/project-repo/cagebreak || cagebreakAUR cagebreak-binAUR
- Cardboard – Przewijany kompozytor, zainspirowany przez PaperWM, oparty na wlroots.
https://gitlab.com/cardboardwm/cardboard || not packaged? szukaj w AUR
- dwl – dwm-like Wayland compositor oparty na wlroots.
https://github.com/djpohly/dwl || dwlAUR
- japokwm – dynamiczny waylandzki kompozytor kafelków oparty na tworzeniu układów, bazujący na wlroots.
https://github.com/werererer/japokwm || nie spakowany? szukaj w AUR
- river – dynamiczny waylandzki kompozytor kafelkowania inspirowany dwm i bspwm.
https://github.com/ifreund/river || river-gitAUR
- Sway – kompatybilny z i3 kompozytor Waylanda oparty na wlroots.
https://github.com/swaywm/sway || sway
- Velox – Prosty menedżer okien oparty na swc, inspirowany dwm i xmonad.
https://github.com/michaelforney/velox || veloxAUR
- waymonad – Waylandzki kompozytor inspirowany xmonad napisany w Haskellu.
https://github.com/waymonad/waymonad || not packaged? szukaj w AUR
Stacking
- Enlightenment – Zobacz Enlightenment#Manually. Więcej informacji:
https://www.enlightenment.org/ || enlightenment
- Greenfield – Uruchamia się w przeglądarce internetowej i może wyświetlać zdalne aplikacje.
https://greenfield.app/ || not packaged? search in AUR
- Grefsen – Kompozytor Qt/Wayland zapewniający minimalne środowisko graficzne.
https://github.com/ec1oud/grefsen || not packaged? search in AUR
- hikari – oparty na wlroots kompozytor zainspirowany cwm, który jest aktywnie rozwijany na FreeBSD, ale obsługuje także Linuksa.
https://hikari.acmelabs.space/ || hikariAUR
- KDE KWin – Zobacz KDE#Starting Plasma.
https://userbase.kde.org/KWin || kwin
- Liri Shell – część Liri, zbudowana przy użyciu QtQuick i QtCompositor jako kompozytor dla Wayland.
https://github.com/lirios/shell || liri-shell-gitAUR
- labwc – oparty na wlroots kompozytor zainspirowany przez Openbox.
https://github.com/johanmalm/labwc || labwc-gitAUR
- Mutter – Zobacz GNOME#Starting.
https://gitlab.gnome.org/GNOME/mutter || mutter
- wayfire – kompozytor 3D zainspirowany przez Compiz i oparty na wlroots.
https://wayfire.org/ || wayfireAUR
- Weston – referencyjna implementacja kompozytora Wayland.
https://gitlab.freedesktop.org/wayland/weston || weston
- wio – kompozytor oparty na wlroots, którego celem jest odtworzenie wyglądu i działania pulpitu Rio z Planu 9.
https://wio-project.org/ || nie spakowany? szukaj w AUR
Inne
- Cage – wyświetla pojedynczą aplikację pełnoekranową jak kiosk.
https://www.hjdskes.nl/projects/cage/ || cage
- Maze Compositor – renderuje okna w labiryncie 3D przy użyciu Qt.
https://github.com/imbavirus/mazecompositor || nie spakowane? szukaj w AUR
- Motorcar – kompozytor Waylanda do eksploracji okien 3D przy użyciu wirtualnej rzeczywistości.
https://github.com/evil0sheep/motorcar || not packaged? szukaj w AUR
Niektóre z powyższych mogą obsługiwać menedżery wyświetlania. Sprawdź /usr/share/wayland-sessions/compositor.desktop
, aby zobaczyć, jak są one uruchamiane.
Menedżery wyświetlania
Menedżery wyświetlania wymienione poniżej obsługują uruchamianie kompozytorów Waylanda. Kolumna „Typ” wskazuje, czy menedżer wyświetlania obsługuje uruchamianie się na Waylandzie, czy nie.
Nazwa | Typ | Opis |
---|---|---|
GDM | Uruchamia się na Waylandzie | Menedżer wyświetlania GNOME. |
greetd | Demon logowania | Minimalny i elastyczny demon logowania. |
LightDM | Działa na X11 | Menedżer wyświetlania na całym pulpicie. |
Ly | Uruchamia się w konsoli | Menedżer wyświetlania TI napisany w C |
SDDM | Uruchamia się na X11 | Menedżer wyświetlania oparty na QML. |
tbsm | Uruchamia się w konsoli | Proste uruchamianie sesji CLI napisane w czystym bashu. |
Biblioteki GUI
Zobacz szczegóły na oficjalnej stronie.
GTK
Pakiety gtk3 i gtk4 mają włączony backend Wayland. GTK będzie domyślnie korzystał z backendu Wayland, ale można to zmienić na Xwayland przez modyfikację zmiennej środowiskowej: GDK_BACKEND=x11
.
Qt
Aby włączyć obsługę Wayland w Qt 5 lub 6, należy zainstalować odpowiednio pakiet qt5-wayland lub qt6-wayland.
Aby uruchomić aplikację Qt z wtyczką Wayland , należy użyć zmiennej środowiskowej -platform wayland
lub QT_QPA_PLATFORM=wayland
. Aby wymusić użycie X11 w sesji Wayland, użyj QT_QPA_PLATFORM=xcb
. Może to być konieczne dla niektórych prawnie zastrzeżonych aplikacji, które nie używają systemowej implementacji Qt, takich jak zoomAUR.
Na niektórych kompozytorach, na przykład sway, aplikacje Qt działające natywnie mogą mieć brakującą funkcjonalność. Na przykład, KeepassXC nie będzie w stanie zminimalizować się do zasobnika. Można to rozwiązać instalując qt5ct i ustawiając QT_QPA_PLATFORMTHEME=qt5ct
przed uruchomieniem aplikacji.
Clutter
Zestaw narzędzi Clutter ma Wayland backend, który pozwala mu działać jako klient Wayland. Backend jest włączony w pakiecie clutter.
Aby uruchomić aplikację Clutter na Waylandzie, ustaw CLUTTER_BACKEND=wayland
.
SDL2
Aby uruchomić aplikację SDL2 na Waylandzie, ustaw SDL_VIDEODRIVER=wayland
.
SDL_VIDEODRIVER=wayland
. Aby zmusić aplikację do działania z XWayland, ustaw SDL_VIDEODRIVER=x11
.GLFW
Aby użyć GLFW z backendem Wayland, zainstaluj pakiet glfw-wayland (zamiast glfw-x11).
GLEW
Pakiet glew-waylandAUR obecnie nadal nie działa z wieloma aplikacjami opartymi na GLEW, więc jedyną opcją jest użycie glew z Xwayland. Zobacz FS#62713.
EFL
EFL ma pełne wsparcie dla Waylanda. Aby uruchomić aplikację EFL na Waylandzie, zobacz stronę projektu Wayland.
winit
Winit jest biblioteką obsługi okien w Rust. Domyślnie ustawia się na backend Waylanda, ale możliwe jest zastąpienie go Xwaylandem przez modyfikację zmiennej środowiskowej: WINIT_UNIX_BACKEND=x11
.
XWayland
XWayland jest serwerem X, który działa pod Waylandem. Zapewnia wsteczną kompatybilność dla starszych aplikacji X11.
Aby go używać, zainstaluj pakiet xorg-xwayland.
XWayland jest uruchamiany przez kompozytor, więc powinieneś sprawdzić kompatybilność XWayland i instrukcje, jak uruchomić XWayland, z wybranym przez siebie kompozytorem.
- W odniesieniu do bezpieczeństwa: XWayland jest serwerem X, więc nie ma takich zabezpieczeń jak Wayland!
- Na razie własnościowy sterownik Nvidii nie obsługuje akceleracji GPU dla XWayland. Zobacz ten lub ten pull request dla statusu wsparcia XWayland.
Rozwiązywanie problemów
Korekcja kolorów
Zobacz Podświetlenie#Korekcja kolorów.
Spowolnienie ruchu, błędy graficzne i awarie
Użytkownicy gnome-shell mogą doświadczać problemów z wyświetlaniem po przejściu na Waylanda z X. Jedną z głównych przyczyn może być CLUTTER_PAINT=disable-clipped-redraws:disable-culling
ustawiony przez ciebie dla gnome-shell opartego na Xorgu. Spróbuj usunąć go z /etc/environment
lub innych plików rc, aby sprawdzić czy wszystko wróci do normy.
Cannot open display: :0 with Electron-based applications
Upewnij się, że nie ustawiłeś GDK_BACKEND=wayland. Ustawienie go globalnie złamie aplikacje oparte na Electronie.
Zdalne wyświetlanie
- (20200206) wlroots (używany przez sway) oferuje backend VNC poprzez wayvncAUR od wersji 0.10. Backend RDP został usunięty. .
- (20180401) mutter ma teraz zdalny pulpit włączony w czasie kompilacji, zobacz i gnome-remote-desktop po szczegóły.
- W 2013 roku nastąpiło połączenie FreeRDP z Westonem, włączone poprzez flagę kompilacji. Pakiet weston ma ją włączoną od wersji 6.0.0.
- waypipe-gitAUR jest przezroczystym proxy dla aplikacji Wayland, z komendą wrapper do uruchomienia przez SSH
Chwytanie wejścia w grach, zdalnym pulpicie i oknach maszyn wirtualnych
W przeciwieństwie do Xorg, Wayland nie pozwala na wyłączne chwytanie urządzeń wejściowych, znane również jako aktywne lub jawne chwytanie (np.np. klawiatura, mysz), zamiast tego zależy od kompozytora Waylanda, aby przekazać skróty klawiaturowe i ograniczyć urządzenie wskazujące do okna aplikacji.
Ta zmiana w chwytaniu danych wejściowych łamie zachowanie obecnych aplikacji, co oznacza, że:
- Kombinacje klawiszy i modyfikatory będą przechwytywane przez kompozytor i nie będą wysyłane do okien zdalnych pulpitów i maszyn wirtualnych.
- Wskaźnik myszy nie będzie ograniczony do okna aplikacji, co może powodować efekt paralaksy, gdzie położenie wskaźnika myszy wewnątrz okna maszyny wirtualnej lub zdalnego pulpitu jest przesunięte względem wskaźnika myszy hosta.
Wayland rozwiązuje to przez dodanie rozszerzeń protokołu dla Wayland i XWayland. Wsparcie dla tych rozszerzeń jest potrzebne, aby zostać dodane do kompozytorów Wayland. W przypadku natywnych klientów Wayland, używane zestawy narzędzi widżetowych (np. GTK, Qt) muszą wspierać te rozszerzenia lub same aplikacje, jeśli nie używa się żadnych zestawów narzędzi widżetowych. W przypadku aplikacji Xorg, żadne zmiany w aplikacjach lub zestawach narzędzi widżetów nie są potrzebne, ponieważ wsparcie XWayland jest wystarczające.
Te rozszerzenia są już zawarte w wayland-protocols, i wspierane przez xorg-xwayland.
Powiązane rozszerzenia to:
- Protokół chwytania klawiatury XWayland
- Protokół blokowania skrótów klawiszowych kompozytora
- Protokół relatywnego wskaźnika
- Protokół ograniczeń wskaźnika
Wspierające kompozytory Wayland:
- Mutter, kompozytor GNOME od wydania 3.28
- wlroots obsługuje relative-pointer i pointer-constraints
Wspierające zestawy narzędzi widżetów:
- GTK od wydania 3.22.18.
Zobacz także
- Dokumentacja Wayland online
- Oficjalne Wayland Git Repo
- Fedora:How to debug Wayland problems
- Awesome Wayland projects
- Cursor themes
- Arch Linux forum dyskusyjne
- i3 Migration Guide – Common X11 apps used on i3 with Wayland alternatives
.