Wayland ist ein Display-Server-Protokoll. Es soll der Nachfolger des X Window Systems werden. Einen Vergleich zwischen Wayland und Xorg finden Sie auf Wikipedia.
Display-Server, die das Wayland-Protokoll verwenden, werden Compositors genannt, weil sie auch als Compositing Window Manager fungieren. Nachfolgend finden Sie eine Liste von Wayland-Compositors.
Für Abwärtskompatibilität, um ältere X11-Anwendungen nahtlos auszuführen, kann XWayland verwendet werden, das einen X-Server in Wayland bereitstellt.
- Voraussetzungen
- Compositors
- Tiling
- Stacking
- Sonstiges
- Anzeigemanager
- GUI-Bibliotheken
- GTK
- Qt
- Clutter
- SDL2
- GLFW
- GLEW
- EFL
- winit
- XWayland
- Fehlerbehebung
- Farbkorrektur
- Langsame Bewegungen, grafische Störungen und Abstürze
- Kann Anzeige nicht öffnen: :0 mit Electron-basierten Anwendungen
- Fernanzeige
- Input-Grabbing in Spielen, Remote-Desktop und VM-Fenstern
- Siehe auch
Voraussetzungen
Die meisten Wayland-Compositors funktionieren nur auf Systemen, die den Kernel-Modus einstellen. Wayland selbst stellt keine grafische Umgebung zur Verfügung; hierfür benötigen Sie ebenfalls einen Compositor (siehe folgender Abschnitt) oder eine Desktop-Umgebung, die einen Compositor enthält (z.B. GNOME oder KDE).
Damit der GPU-Treiber und der Wayland-Compositor kompatibel sind, müssen sie die gleiche Puffer-API unterstützen. Es gibt zwei Haupt-APIs: GBM und EGLStreams.
Puffer-API | GPU-Treiber-Unterstützung | Wayland-Compositor-Unterstützung |
---|---|---|
GBM | Alle außer NVIDIA | Alle |
EGLStreams | NVIDIA | GNOME, KDE, Weston (mit einem Patch eines Drittanbieters) |
Compositors
Siehe Window manager#Types für den Unterschied zwischen Tiling und Stacking.
Tiling
- Cagebreak – Basiert auf cage, inspiriert von ratpoison.
https://github.com/project-repo/cagebreak || cagebreakAUR cagebreak-binAUR
- Cardboard – Scrolling Compositor, inspiriert von PaperWM, basierend auf wlroots.
https://gitlab.com/cardboardwm/cardboard || not packaged? search in AUR
- dwl – dwm-ähnlicher Wayland-Compositor auf Basis von wlroots.
https://github.com/djpohly/dwl || dwlAUR
- japokwm – Dynamischer Wayland Kachel-Compositor, der auf der Erstellung von Layouts basiert, basierend auf wlroots.
https://github.com/werererer/japokwm || nicht paketiert? Suche im AUR
- river – Dynamischer Wayland-Kompositor mit Kacheln, inspiriert von dwm und bspwm.
https://github.com/ifreund/river || river-gitAUR
- Sway – i3-kompatibler Wayland-Kompositor, basierend auf wlroots.
https://github.com/swaywm/sway || sway
- Velox – Einfacher Fenstermanager basierend auf swc, inspiriert von dwm und xmonad.
https://github.com/michaelforney/velox || veloxAUR
- waymonad – Wayland Compositor inspiriert von xmonad geschrieben in Haskell.
https://github.com/waymonad/waymonad || not packaged? search in AUR
Stacking
- Enlightenment – Siehe Enlightenment#Manually. Weitere Infos:
https://www.enlightenment.org/ || enlightenment
- Greenfield – Läuft in einem Webbrowser und kann entfernte Anwendungen anzeigen.
https://greenfield.app/ || not packaged? search in AUR
- Grefsen – Qt/Wayland Compositor, der eine minimale Desktopumgebung bietet.
https://github.com/ec1oud/grefsen || not packaged? search in AUR
- hikari – wlroots-basierter Compositor, inspiriert von cwm, der aktiv auf FreeBSD entwickelt wird, aber auch Linux unterstützt.
https://hikari.acmelabs.space/ || hikariAUR
- KDE KWin – Siehe KDE#Starting Plasma.
https://userbase.kde.org/KWin || kwin
- Liri Shell – Teil von Liri, gebaut mit QtQuick und QtCompositor als Compositor für Wayland.
https://github.com/lirios/shell || liri-shell-gitAUR
- labwc – wlroots-basierter Compositor inspiriert von Openbox.
https://github.com/johanmalm/labwc || labwc-gitAUR
- Mutter – Siehe GNOME#Starting.
https://gitlab.gnome.org/GNOME/mutter || mutter
- wayfire – 3D-Compositor inspiriert von Compiz und basierend auf wlroots.
https://wayfire.org/ || wayfireAUR
- Weston – Referenzimplementierung eines Wayland-Compositors.
https://gitlab.freedesktop.org/wayland/weston || weston
- wio – wlroots-basierter Compositor, der das Aussehen des Rio-Desktops von Plan 9 nachbilden soll.
https://wio-project.org/ || not packaged? Suche im AUR
Sonstiges
- Cage – Zeigt eine einzelne Vollbildanwendung wie einen Kiosk an.
https://www.hjdskes.nl/projects/cage/ || cage
- Maze Compositor – Rendert Fenster in einem 3D-Labyrinth mit Qt.
https://github.com/imbavirus/mazecompositor || nicht verpackt? Suche im AUR
- Motorcar – Wayland Compositor, um 3D-Fenster mit Hilfe von Virtual Reality zu erforschen.
https://github.com/evil0sheep/motorcar || nicht paketiert? Suche im AUR
Einige der oben genannten Programme unterstützen möglicherweise Display Manager. Prüfen Sie /usr/share/wayland-sessions/compositor.desktop
, um zu sehen, wie sie gestartet werden.
Anzeigemanager
Die unten aufgeführten Anzeigemanager unterstützen den Start von Wayland-Compositors. Die Spalte „Typ“ zeigt an, ob der Displaymanager sich selbst auf Wayland starten kann oder nicht.
Name | Typ | Beschreibung |
---|---|---|
GDM | Läuft auf Wayland | GNOME Displaymanager. |
greetd | Anmeldedaemon | Minimaler und flexibler Anmeldedaemon. |
LightDM | Läuft auf X11 | Desktop-übergreifender Displaymanager. |
Ly | Läuft in der Konsole | TUI-Anzeigemanager geschrieben in C |
SDDM | Läuft unter X11 | QML-basierter Anzeigemanager. |
tbsm | Läuft in der Konsole | Einfacher CLI-Sitzungsstarter, geschrieben in reiner Bash. |
GUI-Bibliotheken
Siehe Details auf der offiziellen Webseite.
GTK
Die Pakete gtk3 und gtk4 haben das Wayland Backend aktiviert. GTK verwendet standardmäßig das Wayland-Backend, aber es ist möglich, es durch Ändern einer Umgebungsvariablen auf Xwayland zu überschreiben: GDK_BACKEND=x11
.
Qt
Um die Wayland-Unterstützung in Qt 5 oder 6 zu aktivieren, installieren Sie das qt5-wayland- bzw. qt6-wayland-Paket.
Um eine Qt-Anwendung mit dem Wayland-Plugin auszuführen, verwenden Sie die Umgebungsvariable -platform wayland
oder QT_QPA_PLATFORM=wayland
. Um die Verwendung von X11 in einer Wayland-Sitzung zu erzwingen, verwenden Sie QT_QPA_PLATFORM=xcb
. Dies kann für einige proprietäre Anwendungen notwendig sein, die nicht die Qt-Implementierung des Systems verwenden, wie z.B. zoomAUR.
Auf einigen Compositors, z.B. sway, können Qt-Anwendungen, die nativ laufen, fehlende Funktionen haben. Zum Beispiel kann KeepassXC nicht in den Tray minimiert werden. Dies kann durch die Installation von qt5ct und das Setzen von QT_QPA_PLATFORMTHEME=qt5ct
vor dem Ausführen der Anwendung behoben werden.
Clutter
Das Clutter-Toolkit hat ein Wayland-Backend, das es erlaubt, als Wayland-Client zu laufen. Das Backend wird im Clutter-Paket aktiviert.
Um eine Clutter-Anwendung auf Wayland laufen zu lassen, setzen Sie CLUTTER_BACKEND=wayland
.
SDL2
Um eine SDL2-Anwendung auf Wayland laufen zu lassen, setzen Sie SDL_VIDEODRIVER=wayland
.
SDL_VIDEODRIVER=wayland
setzen. Um die Anwendung zu zwingen, mit XWayland zu laufen, setzen Sie SDL_VIDEODRIVER=x11
.GLFW
Um GLFW mit dem Wayland-Backend zu verwenden, installieren Sie das glfw-wayland-Paket (anstelle von glfw-x11).
GLEW
Das glew-waylandAUR-Paket funktioniert derzeit noch nicht mit vielen GLEW-basierten Anwendungen, daher ist die einzige Möglichkeit, glew mit Xwayland zu verwenden. Siehe FS#62713.
EFL
EFL hat vollständige Wayland-Unterstützung. Um eine EFL-Anwendung auf Wayland laufen zu lassen, siehe Wayland-Projektseite.
winit
Winit ist eine Fensterbehandlungsbibliothek in Rust. Es wird standardmäßig das Wayland-Backend verwendet, aber es ist möglich, es durch Ändern einer Umgebungsvariablen auf Xwayland zu überschreiben: WINIT_UNIX_BACKEND=x11
.
XWayland
XWayland ist ein X-Server, der unter Wayland läuft. Er bietet Abwärtskompatibilität für ältere X11-Anwendungen.
Um ihn zu verwenden, installieren Sie das Paket xorg-xwayland.
XWayland wird über einen Compositor gestartet, daher sollten Sie sich über die Kompatibilität mit XWayland und die Anweisungen zum Starten von XWayland mit dem Compositor Ihrer Wahl informieren.
- Bei der Sicherheit: XWayland ist ein X-Server, hat also nicht die Sicherheitsfunktionen von Wayland!
- Der proprietäre Nvidia-Treiber unterstützt derzeit keine GPU-Beschleunigung für XWayland. Siehe dies oder diesen Pull Request für den Status der XWayland-Unterstützung.
Fehlerbehebung
Farbkorrektur
Siehe Hintergrundbeleuchtung#Farbkorrektur.
Langsame Bewegungen, grafische Störungen und Abstürze
Gnome-Shell-Benutzer können Darstellungsprobleme haben, wenn sie von X zu Wayland wechseln. Eine der Ursachen könnte die CLUTTER_PAINT=disable-clipped-redraws:disable-culling
sein, die Sie selbst für die Xorg-basierte gnome-shell eingestellt haben. Versuchen Sie einfach, es aus /etc/environment
oder anderen rc-Dateien zu entfernen, um zu sehen, ob alles wieder normal läuft.
Kann Anzeige nicht öffnen: :0 mit Electron-basierten Anwendungen
Stellen Sie sicher, dass Sie GDK_BACKEND=wayland nicht gesetzt haben. Das globale Setzen wird Electron-Anwendungen kaputt machen.
Fernanzeige
- (20200206) wlroots (verwendet von sway) bietet ein VNC-Backend über wayvncAUR seit Version 0.10. Das RDP-Backend wurde entfernt. .
- (20180401) mutter hat nun Remote-Desktop zur Kompilierungszeit aktiviert, siehe und gnome-remote-desktop für Details.
- Es gab eine Zusammenführung von FreeRDP in Weston im Jahr 2013, aktiviert über ein Kompilierungsflag. Das weston-Paket hat es seit Version 6.0.0.
- waypipe-gitAUR ist ein transparenter Proxy für Wayland-Anwendungen, mit einem Wrapper-Befehl, um über SSH zu laufen
Input-Grabbing in Spielen, Remote-Desktop und VM-Fenstern
Im Gegensatz zu Xorg erlaubt Wayland kein exklusives Input-Device-Grabbing, auch bekannt als aktives oder explizites Grabging (z.z.B. Tastatur, Maus), stattdessen ist es auf den Wayland-Compositor angewiesen, um Tastaturkürzel zu übergeben und das Zeigergerät auf das Anwendungsfenster zu beschränken.
Diese Änderung im Input-Grabbing bricht das Verhalten aktueller Anwendungen, was bedeutet:
- Hotkey-Kombinationen und Modifikatoren werden vom Compositor abgefangen und nicht an Remote-Desktop- und virtuelle Maschinenfenster gesendet.
- Der Mauszeiger ist nicht auf das Fenster der Anwendung beschränkt, was zu einem Parallaxeneffekt führen kann, bei dem die Position des Mauszeigers innerhalb des Fensters der virtuellen Maschine oder des Remote-Desktops gegenüber dem Mauszeiger des Hosts verschoben ist.
Wayland löst dieses Problem durch Hinzufügen von Protokollerweiterungen für Wayland und XWayland. Die Unterstützung für diese Erweiterungen muss zu den Wayland-Compositors hinzugefügt werden. Im Falle von nativen Wayland-Clients müssen die verwendeten Widget-Toolkits (z.B. GTK, Qt) diese Erweiterungen unterstützen oder die Anwendungen selbst, wenn kein Widget-Toolkit verwendet wird. Im Falle von Xorg-Anwendungen sind keine Änderungen in den Anwendungen oder Widget-Toolkits erforderlich, da die XWayland-Unterstützung ausreicht.
Diese Erweiterungen sind bereits in wayland-protocols enthalten und werden von xorg-xwayland unterstützt.
Die zugehörigen Erweiterungen sind:
- XWayland keyboard grabbing protocol
- Compositor shortcuts inhibit protocol
- Relative pointer protocol
- Pointer constraints protocol
Supporting Wayland compositors:
- Mutter, GNOME’s compositor since release 3.28
- wlroots unterstützt relative-pointer und pointer-constraints
Unterstützt Widget-Toolkits:
- GTK seit Release 3.22.18.
Siehe auch
- Wayland Dokumentation online
- Offizielle Wayland Git Repo
- Fedora:How to debug Wayland problems
- Awesome Wayland projects
- Cursor themes
- Arch Linux forum discussion
- i3 Migration Guide – Common X11 apps used on i3 with Wayland alternatives