Wayland ist ein Display-Server-Protokoll, welches die Kommunikation zwischen einem Display-Server und seinen Clients beschreibt. Der Server wird Wayland-Compositor genannt, da er zusätzlich die Funktion eines Composition-Window-Manager übernimmt.

Das Ziel von Wayland ist es das bisherige Protokoll des X-Window-Servers (auch bekannt als X11 oder Xorg) mit einem modernen, sicheren und einfacheren Protokoll zu ersetzen. Als Teil dieses Zieles wurde mit Wetson eine Referenz-Implementierung entwickelt. Große Arbeitsumgebungen wie KDE Plasma und GNOME haben ihren eigenen Wayland-Composition-Manager implementiert.

Benutzung

Hardwareanforderungen

Verschiedene Implementierungen von Wayland unterstützen unterschiedliche Pufferschnittstellen.

GNOME (mit Mutter) und KDE Plasma (mit KWin) ab der Version 5.16 unterstützen GBM und EGLStreams, während alle anderen Implementierungen nur GBM unterstützen.

NVIDIA Grafikkarten mit dem proprietären Grafiktreiber unterstützen nur EGLStreams, alle anderen Grafikkarten und -treiber unterstützen GBM.


Arbeitsumgebungen

GNOME (unterstützt ab Version 3.20)

Die Waylandsitzung ist in GNOME eingebaut und kann auf dem Anmeldebildschirm ausgewählt werden.

Ab Debian 10 (buster) wird Wayland als Vorgabe verwendet, bei älteren Versionen ist Xorg die Vorgabe.

KDE Plasma (unterstützt ab Version 5.4)

KDE Plasma benötigt das nicht automatisch installierte Paket plasma-workspace-wayland. Dies reicht oft aus, um grundlegende Funktionalität zu erhalten, allerdings sollten Sie den Wiki-Abschnitt KDE on Wayland lesen, vor allem dann, wenn Sie eine NVIDIA-Grafikkarte einsetzen.

Enlightenment (nicht unterstützt)

Das Entwicklerteam arbeitet daran Wayland zu unterstützen.

Hawaii (nicht unterstützt)

Cinnamon (nicht unterstützt)

Auf der GitHub-Seite wird über die Unterstützung diskutiert.

MATE (nicht unterstützt)

Support geplant, update (2014), update (2019).

XFCE (nicht unterstützt)

Support geplant.

Andere Compositoren (unterstützt)

Andere interessante Compositoren sind:

(Sway wird den NVIDIA-Treiber künftig (ab Version 1.0) nicht mehr unterstützen.)

Fenstermanager und Compositoren (nicht unterstützt)


Toolkits

Einleitung

GTK3 und Qt 5 Anwendungen, welche die System-Bibliotheken verwenden, sollten automatisch Wayland verwenden. Einige statisch-verlinkte Versionen dieser Anwendungen, oder welche, die aus verschiedenen Gründen Wayland explizit nicht unterstützen (wie beispielsweise KeePassXC) erfordern das setzen spezieller Flags oder Umgebungsvariablen.

Anwendungen, welche X11 verwenden funktionieren unter Wayland mit der Xwayland Kompatibilitätsschicht, allerdings können dadurch Eingabeprobleme oder andere Fehler auftreten. Wenn möglich ist es besser, Wayland nativ zu verwenden.

Um Bildschirmfotos, Screencasting und das Teilen des Bildschirms zu unterstützen, wird pipewire und ein der Arbeitsumgebung entsprechendes xdg-desktop-portal Paket benötigt.

GTK3 (unterstützt seit Version 3.20)

Die GDK_BACKEND Umgebungsvariable kann dazu verwendet werden, um Anwendungen dazu zu zwingen Wayland oder X11 (falls unter Wayland Probleme auftreten) zu benutzen.

Beachten Sie jedoch, dass einige Electron-Anwendungen (wie Slack, Element, Discord usw.) und chromium (861796) nicht funktionieren könnten, wenn GDK_BACKEND auf »wayland« gesetzt ist.

Clutter (unterstützt)

Die CLUTTER_BACKEND Umgebungsvariable, falls auf »wayland« gesetzt, zwingt Clutter-Anwendungen dazu Wayland zu benutzen.

Qt (unterstützt seit Version 5)

Das qtwayland5 Paket installiert das relevante Plugin, welches Qt-Anwendungen erlaubt nativ unter Wayland zu laufen.

Es wird empfohlen die Umgebungsvariable QT_QPA_PLATFORM auf »wayland;xcb« zu setzen, damit Anwendungen Wayland gegenüber X11 bevorzugen. Sie können diese Umgebungsvariable auch nur auf »wayland« oder »xcb« setzen um die Anwendung dazu zu zwingen, das gewählte Backend zu verwenden.

Die -platform wayland Flag kann auch dazu verwendet werden, um die meisten Qt-Anwendungen dazu zu bringen Wayland zu benutzen

SDL1 (nicht unterstützt)

SDL1 wird nicht mehr aktiv weiterentwickelt und wird keine Unterstützung für Wayland erhalten. Es gibt eine Kompatibilitätsschicht für SDL1 Anwendungen, welche als Backend SDL2 benutzt (libsdl12-compat), welche eine transparente Wayland-Unterstützung ermöglicht, andernfalls müssen diese Anwendungen auf SDL2 portiert werden. Einige SDL1 Anwendungen könnten abstürzen, wenn sie mit SDL_VIDEODRIVER="wayland" gestartet werden.

Hier ist eine Tracking-Liste von Anwendungen, welche portiert werden müssen:

SDL2 (unterstützt seit Version 2.0.2)

Für Spiele, Anwendungen und andere Software welche SDL2 einsetzen kann die SDL_VIDEODRIVER Umgebungsvariable auf »wayland« gesetzt werden. Es wird allerdings nicht empfohlen dies Systemweit anzuwenden, da viele proprietäre Anwendungen ältere, statisch-verlinkte Versionen von SDL2 verwenden, welche Wayland möglicherweise nicht (vollständig) unterstützen.

EFL (unterstützt)

GLFW (unterstützt seit Version 3.2)

FLTK (nicht unterstützt)

FLTK unterstützt Wayland momentan nicht. Der Entwicklungsfortschritt ist bei 984620 abrufbar.


Display Manager

GDM3

GDM (GNOME Display Manager) benutzt automatisch Wayland, außer der proprietäre NVIDIA-Treiber wird eingesetzt, dann wird aufgrund von Stabilitätsproblemen auf X11 zurückgefallen.

Um das X11 Backend zu benutzen muss die Zeile WaylandEnable=false in /etc/gdm3/daemon.conf auskommentiert werden.

SDDM

Die Wayland-unterstützung für SDDM ist noch in der Entwicklungsphase, momentan wird als Backend X11 verwendet. SDDM kann allerdings für das starten einer Wayland-Sitzung verwendet werden.

LightDM

Es ist unwahrscheinlich, dass LightDM native Unterstützung für Wayland erhalten wird, allerdings kann es trotzdem für das Starten einer Wayland-Sitzung verwendet werden.


Anwendungen

Chromium (unterstützt, aber noch nicht in Debian)

Mit dem neuen Ozone Backend unterstützt Chromium Wayland, allerdings wird dies in Debian noch nicht eingesetzt. Der Fortschritt ist bei 955540 abrufbar.

Firefox (unterstützt)

Die MOZ_ENABLE_WAYLAND Umgebungsvariable kann auf »1« gesetzt werden um das Wayland Backend zu aktivieren.

LibreOffice (unterstützt, nicht als Vorgabe)

LibreOffice unterstützt Wayland über seine System-Abstraktions Plugins, in den Paketen libreoffice-gtk3, libreoffice-plasma, libreoiffice-kf5 und libreoffice-qt5.

In den Vorgabeeinstellungen versucht LibreOffice die genutzte Arbeitsumgebung zu erkennen, welche das entsprechende installierte Plugin erfordert. Falls dies nicht möglich ist, aber erkannt wird, dass Wayland eingesetzt wird wird das GTK3 backend verwendet, falls dieses nicht installiert ist stürtzt die Anwendung aufgrund einer Schutzverletzung ab.

Die SAL_USE_VCLPLUGIN Umgebungsvariable kann auf »gtk3«, »kf5« oder »qt5« gesetzt werden, um die Verwendung eines bestimmten Backends zu erzwingen, falls keine Arbeitsumgebung sondern nur ein Compositor eingesetzt wird.

Java Anwendungen (unterstützt seit OpenJDK 16?)

Ab OpenJDK 16 kann die JRE GTK3 dynamisch laden (welches Wayland unterstützt), es scheint, dass dies unterstützt wird.

Die _JAVA_AWT_WM_NONREPARENTING Umgebungsvariable kann auf »1« gesetzt werden, um den Fehler zu beheben, dass die Anwendung mit einem leeren Fenster startet.

Emacs (teilweise unterstützt)

Weil Emacs keine echte GTK-Anwendung ist, muss es mit X11 kommunizieren und verwendet deshalb XWayland.

Vim (teilweise unterstützt)

Ähnlich wie Emacs, siehe 819954.


Wayland testen

Um Wayland testen zu können benötigen Sie einen kompatiblen Kompositor. Der Wayland-Kompositor kombiniert die Aufgaben des X Fenstermanagers, Kompositmanager und des Displayservers. Die meisten großen Arbeitsumgebungen unterstützen Wayland gut, weston als Referenzimplementierung kann zu Testzwecken verwendet werden.

Sie können Wetson direkt in Ihrer regulären X-Sitzung starten, indem sie das Paket installieren und wetson im Terminal eingeben. Dies startet ein Fenster, indem Sie Wayland testen können.

Alternativ können Sie auch GNOMEs mutter Kompositor verwenden:

mutter --nested --wayland

Im erscheinenden Fenster werden dann alle Anwendungen gestartet, welche Wayland nutzen. Probieren Sie beispielsweise gnome-terminal zu starten.

Falls Sie vollständig auf Wayland gewechselt haben und feststellen wollen, ob eine Anwendung Wayland oder XWayland benutzt können Sie das xeyes Programm nutzen. Falls die Augen Ihren Cursor verfolgen können wird XWayland eingesetzt.


Xwayland

Um Abwärtskompatibilität zu gewährleisten, kann jede Anwendung, welche X11 verwendet, unter Wayland mittels XWayland laufen. Installieren Sie dafür das xwayland Paket, falls es nicht bereits installiert ist.

Falls Sie Wetson benutzen fügen Sie diese Zeilen zu ~/.config/weston.ini hinzu:

[core]
xwayland=true

[xwayland]
path=/usr/bin/Xwayland

Die Sicherheits- und Leistungsvorteile von Wayland treffen Anwendungen unter XWayland nicht.


Fehlerbehebung

Xresources laden nicht

Dieses Problem ist bekannt. In 2015 wurde entschieden, dass diese Ressourcen zu langsam sind und in Folge von GNOME entfernt. (Siehe https://bugzilla.redhat.com/show_bug.cgi?id=1225384)

Workaround: Führen Sie diesen Befehl manuell oder mittels Autostart aus

xrdb -load .Xsession


FAQ

Wieso ist Wayland erforderlich?

Wayland ermöglicht eine bessere Isolierung von Prozessen. Ein Fenster kann keine Ressourcen von anderen Fenstern (wie die Tastenanschläge) einsehen oder manipulieren.

Wayland hat auch das Potenzial schneller zu sein, indem es viele Aufgaben den Prozessen selbst überlässt.

Siehe auch das Wayland FAQ (englisch) für mehr Informationen.

Anwendungen können untereinander keine Informationen austauschen... wie funktioniert dann Kopieren und Einfügen?

Die Zwischenablage sollte zwischen X11 und Wayland Anwendungen normal funktionieren, allerdings ist dies Aufgabe des Wayland-Kompositors.

Ich bin gewohnt, verschiedene Anwendungen wie Synaptic als Root auszuführen. Wie funktioniert dies unter Wayland?

synaptic wurde vorübergehend von Debian Buster entfernt, da es nicht unter Wayland funktionierte.

Es ist in Planung, X11 Anwendungen, welche als Root ausgeführt werden in XWayland zuzulassen, allerdings müssen native Wayland Anwendungen in einen GUI-Teil und einen Root-Teil aufgeteilt werden.

Ich rufe verschiedene Anwendungen über das Netzwerk (z.B. über X11 forwarding oder xhost) auf. Wie funktioniert das unter Wayland?

X11 forwarding über SSH funktioniert über XWayland, native Wayland Anwendungen werden nicht weitergeleitet.

Ich teile Monitore zwischen Systemen mit x2x. Wie funktioniert das unter Wayland?

Das Teilen des Bildschirms in Wayland ist noch in der frühen Entwicklungsphase. Momentan funktioniert Chromium in Verbindung mit pipewire und xdg-desktop-portal am besten. Hierfür muss die Unterstützung von WebRTC PipeWire allerdings noch manuell in den Chromium Flags aktiviert werden. Die Einstellung kann durch eingeben von chrome://flags/#enable-webrtc-pipewire-capturer in der URL-Leiste getätigt werden.


Siehe auch


CategoryDesktopEnvironment