KWin mit XFree-KWin nativ unter Wayland

KDE-Logo
Bild LGPL

 

Wayland wird künftig immer mehr die Rolle des veralteten X11 übernehmen. Doch längst nicht alle Applikationen sind bereits für Wayland vorbereitet. So werden uns trotzt Wayland als künftigem Standard X11 und die Kompatibilitätsschicht XWayland noch über Jahre begleiten. Während GNOME bereits unter Fedora 26 und bald unter Ubuntu 17.10 mit [wiki title=”Wayland_(Anzeige-Server)”]Wayland[/wiki] als Standard läuft, sind bei KDE die Umbauarbeiten noch im Gange.

KWin-Maintainer Martin Gräßlin stellt jetzt in seinem Blog das XFree-KWin-Projekt vor. Die Idee dahinter ist, [wiki base=”DE” thumbnail=”on”]KWin[/wiki] unter Wayland ohne XWayland-Unterstützung starten zu können. Während die meisten der dafür notwendigen Änderungen bereits in Plasma 5.11 eingeflossen sind, ist nicht alles rechtzeitig fertig geworden. Jetzt sind die ausstehenden Änderungen im KDE Phabricator zur Überprüfung eingestellt worden. Dabei stellt sich die Frage, warum Zeit damit verbracht wird, KWin ohne X11-Unterstützung zum Laufen zu bringen, wenn XWayland in absehbarer Zukunft trotzdem bereitgestellt werden muss, um Legacy-Anwendungen zu unterstützen, die noch nicht unter Wayland laufen.

Einerseits zeigt es,  dass alles portiert ist oder zumindest nicht mehr so stark von X11 abhängt. Dann ist da noch Plasma Mobile, das völlig ohne XWayland auskommt. Durch den Verzicht auf XWayland kann dort der Start beschleunigt und der Speicher entlastet werden. KWin muss beim Start nicht auf XWayland warten, beide können parallel gestartet werden. Das bedeutet KWin und die komplette Plasma-Sitzung startet etwas schneller.

Etwas Hintergrund

Die allgemeine Idee hinter dem Projekt XFree-KWin ist, das Code, der nicht geladen ist auch nicht stören kann. KWin verwendet für die verschiedenen Plattformen auf denen es laufen kann nicht die Qt Platform Abstraction-Plugins sondern separate Plugins pro Plattform. Für KWin unter X11 gibt es ein solches Plattform-Plugin, sodass Code, der nur im KWin/X11-Kontext benötigt wird, in das Plattform-Plugin verschoben werden kann. Da KWin unter Wayland dieses Plugin nicht lädt, wird der Code auch nicht geladen.

Plugin-basierte Compositoren

Eine weitere Idee ist es, Compositoren in Plugins zu integrieren. Insbesondere der auf XRender basierende Compositor ist in einer Wayland-Umgebung unnötig und sollte daher nicht in die Binärdatei geladen werden. Leider haben verschiedene Teile von KWin direkt die konkreten Compositor-Implementierungen aufgerufen, sodass die interne API an dieser Stelle erweitert werden musste. In Plasma 5.11 werden nun der XRender- und QPainter- Compositor als Plugins geladen, sodass bei Wayland der nicht kompatible XRender-Compositor nicht mehr in den Speicher geladen wird – desgleichen  bei X11 der nicht kompatible QPainter-Compositor. Aber auch auf Wayland wird der QPainter-Compositor nur dann in den Speicher geladen, wenn er auch verwendet werden soll. Der OpenGL-Compositor wird derzeit noch in Plasma 5.11 geladen, aber die Änderung zur Auslagerung als Plugin ist bereits vorbereitet. Dies bringt große Vorteile für die Stabilität des Systems

Ausblick

KWin unter Wayland ohne X11-Unterstützung zu starten und zu betreiben ist aber erst der Anfang, weitere Änderungen sind erforderlich. So soll das Laden von XWayland in Zukunft generell verzögert werden, bis eine Anwendung versucht, sich damit zu verbinden. Dies wäre beim Start von Plasma derzeit wenig sinnvoll, da Anwendungen wie Ksmerver im Startup noch X11 benötigen.

Ein weiteres recht aufwendiges Projekt ist es, KWin ohne X11-Unterstützung kompilieren zu lassen und alles, was für Xwayland benötigt wird, in ein Plugin auszulagern. Hier muss viel Code bewegt werden und weitere Abstraktionen müssen in einigen Bereichen von KWin hinzugefügt werden. Als schnellen Workaround für Plasma Mobile und das Purism Librem-5-Smartphone  könnte laut Flöser ein ifdef um jeden X11-Code-Bereich herum eine vorläufige  Lösung sein.

 

Teilt den Beitrag, falls ihr mögt

Abonnieren
Benachrichtige mich bei
0 Kommentare
Inline Feedbacks
View all comments