Die Veröffentlichung des Composite Managers River 0.4.0 wurde vorgestellt, der im Gegensatz zu anderen Composite Managern auf Basis des Wayland-Protokolls eine modulare Architektur verwendet, bei der der Fenster-Manager in ein separates Programm ausgelagert wird. In River sind Fenster-Manager erweiterbar, und der Benutzer kann sie nach Belieben auswählen. Der Code des Projekts ist in der Programmiersprache Zig geschrieben und wird unter der GPLv3-Lizenz verbreitet.
River kann sowohl in verschachtelten Sitzungen ausgeführt werden, die über anderen X11- und Wayland-Servern laufen, als auch ohne Layer, wobei KMS/DRM-Treiber für die Ausgabe verwendet werden. Zur Trennung der Funktionen von Composite- und Fenster-Managern wird das Wayland-Protokoll river-window-management-v1 entwickelt. Funktionen wie Fensterdekoration, Eingabefokussteuerung, Zeigersteuerung, Tastenkombinationen sowie die Position und Größe der Fenster werden in den Fenster-Manager ausgelagert.
Fenster-Manager können zur Laufzeit ohne Unterbrechung der Sitzung gewechselt werden. Es stehen 16 mit River kompatible Fenster-Manager zur Auswahl, darunter Kachel-Manager im Stil von DWM oder xmonad, Emacs-ähnliche Manager im Stil von EXWM, klassische Stapel-Manager und solche auf Basis von Scroll-Leisten. Für den Start von X11-Anwendungen wird die Verwendung von Xwayland unterstützt.
Zu den Gründen für die Trennung von Composite- und Fenster-Managern gehören: die Senkung der Eintrittsbarriere zur Erstellung von Fenster-Managern; die Möglichkeit, Fenster-Manager in Hochsprachen mit Garbage Collection zu implementieren, die die Leistung des Composite-Managers nicht beeinträchtigen; die Möglichkeit, Fenster-Manager ohne einen Neustart des Composite- Server und der laufenden grafischen Programme heiß zu ersetzen; sowie die Vereinfachung von Experimenten im Zusammenhang mit dem Design von Fenster-Managern.
Zu den Einschränkungen des Protokolls river-window-management-v1 gehört das Fehlen von Funktionen, die über 2D-Operationen auf dem Desktop hinausgehen. Beispielsweise werden komplexe Effekte und 3D-Schnittstellen für virtuelle Realität nicht unterstützt. Die Effekte sind derzeit auf einfache Animationen beschränkt, aber in Zukunft wird geplant, komplexere Effekte mithilfe von Shadern zu realisieren.

Quelle: opennet.ru
