c't 11/2021
S. 50
Aktuell
Open Source

Wayland für Windows

Windows Subsystem for Linux GUI startet grafische Linux-Programme

Seine Linux-Virtualisierung WSL 2 erweitert Microsoft um die Komponente „Windows Subsystem for Linux GUI“ (WSLg). Damit laufen grafische Linux-­Anwendungen auch unter ­Windows, bei Bedarf mit 3D-­Beschleunigung. WSLg nutzt moderne Open-Source-Ansätze.

Von Keywan Tonekaboni

Microsoft treibt die Verzahnung von Windows und Linux weiter voran. Ende April hat das Software-Unternehmen eine Erweiterung für seine Linux-­Kompatibilitätsschicht „Windows Sub­system for Linux“ (WSL 2) veröffentlicht. Damit lassen sich unter WSL 2 auch Linux-­Programme mit grafischer Oberfläche starten. Bisher war WSL 2 auf Kommandozeilentools und Hintergrunddienste beschränkt. Wer eine grafische Linux-App starten wollte, musste einige Verrenkungen anstellen, beispielsweise unter Windows einen X-Server installieren und das Linux-System damit verbinden.

Diese Umwege sind jetzt nicht mehr nötig. Microsoft verwendet für WSLg gängige Open-Source-Techniken wie Wayland, Mesa 3D und PulseAudio. Der für WSL verantwortliche Produktma­nager Craig Loewen demonstriert die Fähigkeiten von WSLg in einem Video (siehe ct.de/ydap). Darin spielt er unter Windows mit der Linux-Variante von Audacity live ein Gitarrenriff ein und gibt anschließend die Aufnahme wieder.

Microsoft-Entwickler Craig Loewen startet zur Demonstration von WSLg Gedit unter Windows.
Bild: Microsoft

Wo in WSL 2 per Paravirtualisierung die Grafikchips des Windows-Hosts nutzbar sind (vGPU), kommen auch mit WSLg gestartete Programme in den Genuss von hardwarebeschleunigter 3D-Leistung. Dazu ist der Gallium3D-Treiber für DirectX 12 nötig, der erst in der kürzlich veröffentlichten Version 21.0 der Grafikbibliothek Mesa 3D enthalten ist. Zwar kommt WSLg nicht an die Leistung unter Windows heran, aber laut Loewen laufen 3D-Anwendungen mit Frameraten von 60 fps.

Interessant ist WSLg insbesondere für Entwickler, die ihre Anwendungen schnell unter Linux testen wollen, ohne auf zusätzliche Systeme zugreifen zu müssen.

Standardkonform

Dem Microsoft-Team war es nach eigenen Angaben wichtig, Standards aktueller Linux-Desktops zu folgen. Dort läuft bereits seit Längerem eine Transformation von X11 zu Wayland (siehe S. 122). Daher nutzt WSLg zur Darstellung des Programmfensters primär Waylands Referenz-Compositor Weston. X11-Anwendungen werden mithilfe des X-Servers XWayland dargestellt, so wie es auch Linux-Desktops im Wayland-Modus handhaben.

Um die Linux-Programme in Windows anzuzeigen, nutzen die Entwickler das in Weston bereits verfügbare RDP-Backend auf Basis von FreeRDP. Das RDP-Backend haben sie erweitert, um statt eines virtualisierten Desktops nur die einzelnen Anwendungsfenster anzuzeigen.

Die Entwickler haben im RDP-Backend eine gemeinsame Zwischenablage und Multi-Monitor-Support mit individuellen Skalierungen nachgerüstet. An einigen Stellen hakt es aber noch: Drag & Drop klappt ebenso wenig wie das Einschnappen der Linux-Fenster am Bildschirmrand. Neben Weston haben die Entwickler auch FreeRDP entsprechend angepasst. Die Erweiterungen sollen auch außerhalb von WSLg nutzbar sein und Microsoft will sie „upstream“ in die jeweiligen Projekte einbringen.

Linux-Systeme in WSL 2 greifen über ­Sockets auf WSLg zu, das wiederum per RDP mit Windows kommuniziert.
Bild: Microsoft

WSLg läuft isoliert in einem eigenen Linux-­System, das Microsoft „System Distro“ nennt und in dem die bisher intern für die Cloud entwickelte Linux-Distribution CBL-Mariner verwendet wird. Die von Nutzern in WSL installierten Linux-Systeme („User Distros“) greifen über Sockets auf Weston, XWayland und PulseAudio zu. Beim ersten Aufruf einer Linux-App startet ein Dienst Weston, PulseAudio und stellt die RDP-Verbindung her.

Ein Plug-in sucht innerhalb der User Distro nach .desktop-Dateien und erzeugt dazu passende Einträge samt Icon im Windows-Startmenü, sodass die Linux-­Anwendungen bequem per Mausklick starten.

Ausprobiert

Um WSLg auszuprobieren, benötigt man Windows Insider Preview ab Build 21364. Wenn WSL 2 bereits installiert ist, rüstet man WSLg mit dem Befehl wsl --update nach, ansonsten wird es mit wsl --install zusammen mit WSL 2 gleich mitinstalliert. Als „User Distro“ empfiehlt Microsoft „Ubuntu on Windows Community Preview“, das auch die passende Mesa-3D-­Version enthält. (ktn@ct.de)

Weitere Infos: ct.de/ydap

Kommentieren