Einführung von KWinFT, einem Fork von KWin mit Fokus auf Wayland

Roman Gilg, teilnehmen in der Entwicklung von KDE, Wayland, Xwayland und X Server, eingeführt Projekt KWinFT (KWin Fast Track) entwickelt einen flexiblen und benutzerfreundlichen zusammengesetzten Fenstermanager für Wayland und X11 basierend auf der Codebasis Kwin. Neben dem Fenstermanager entwickelt das Projekt auch eine Bibliothek Wrapland mit der Implementierung einer Bindung über libwayland für Qt/C++, Weiterentwicklung KWayland, aber von der Bindung an Qt befreit. Der Code wird unter den Lizenzen GPLv2 und LGPLv2 vertrieben.

Ziel des Projekts ist die Wiederverwertung von KWin und KWayland
moderne Technologien und Entwicklungspraktiken, die es Ihnen ermöglichen, die Entwicklung des Projekts zu beschleunigen, den Code umzugestalten, Optimierungen hinzuzufügen und das Hinzufügen grundlegender Innovationen zu vereinfachen, deren Integration in KWin in seiner aktuellen Form schwierig ist. KWinFT und Wrapland können verwendet werden, um KWin und KWayland nahtlos zu ersetzen, sie sind jedoch nicht durch die KWin-Sperre vieler Produkte eingeschränkt, bei denen die Aufrechterhaltung der vollständigen Kompatibilität eine Priorität ist, die die Weiterentwicklung von Innovationen verhindert.

Mit KWinFT haben Entwickler freie Hand, um mit neuen Funktionen zu experimentieren und gleichzeitig die Stabilität durch den Einsatz modernerer Entwicklungstechniken zu gewährleisten. Um beispielsweise den KWinFT-Code zu überprüfen, wird ein kontinuierliches Integrationssystem verwendet, einschließlich der Überprüfung mithilfe verschiedener Linters, der automatischen Generierung von Baugruppen und erweiterten Tests. Im Hinblick auf die Funktionalitätsentwicklung wird das Hauptaugenmerk von KWinFT auf der Bereitstellung einer qualitativ hochwertigen und vollständigen Protokollunterstützung liegen
Wayland, einschließlich der Überarbeitung der KWin-Architekturfunktionen, die die Integration mit Wayland erschweren.

Zu den experimentellen Innovationen, die KWinFT bereits hinzugefügt wurden, gehören:

  • Der Compositing-Prozess wurde überarbeitet, was die Darstellung von Inhalten unter X11 und Wayland deutlich verbessert hat. Darüber hinaus wurde ein Timer hinzugefügt, um Verzögerungen zwischen der Erstellung eines Bildes und seiner Anzeige auf dem Bildschirm zu minimieren.
  • Eine Erweiterung des Wayland-Protokolls implementiert.Zuschauer„Damit kann der Client serverseitige Skalierung und Beschneidung von Oberflächenkanten durchführen. In Kombination mit der nächsten Hauptversion von XWayland wird die Erweiterung die Möglichkeit bieten, Änderungen der Bildschirmauflösung für ältere Spiele zu emulieren.
  • Volle Unterstützung für rotierende und gespiegelte Ausgabe für Wayland-basierte Sitzungen.

Wrapland bietet eine Programmierschnittstelle im Qt-Stil, die den Zugriff auf libwayland-Funktionen in einer Form ermöglicht, die in C++-Projekten einfach zu verwenden ist. Wrapland sollte ursprünglich als Fork von KWayland entwickelt werden, aber aufgrund des unbefriedigenden Zustands des KWayland-Codes wird es nun als Projekt zur vollständigen Überarbeitung von KWayland in Betracht gezogen. Der wichtigste Unterschied zwischen Wrapland und KWayland besteht darin, dass es nicht mehr an Qt gebunden ist und separat verwendet werden kann, ohne dass Qt installiert werden muss. Zukünftig kann Wrapland als universelle Bibliothek mit einer C++-API verwendet werden, sodass Entwickler nicht mehr die libwayland C-API verwenden müssen.

Für Manjaro-Linux-Benutzer werden vorgefertigte Pakete erstellt. Um KWinFT zu verwenden, installieren Sie einfach kwinft aus dem Repository. Um zum Standard-KWin zurückzukehren, installieren Sie das kwin-Paket. Die Verwendung von Wrapland ist nicht auf KDE beschränkt, es wurde beispielsweise eine Client-Implementierung für die Verwendung in vorbereitet wlroots Ausgabekontrollprotokoll, das in Verbundservern basierend auf wlroots (Schwanken, Wegfeuer) verwenden Sie KScreen, um die Ausgabe anzupassen.

Inzwischen, fortsetzen Projektaktualisierungen werden veröffentlicht KWin-niedrige Latenz, der eine Edition des KWin-Composite-Managers mit Patches bildet, um die Reaktionsfähigkeit der Schnittstelle zu erhöhen und einige Probleme zu beheben, die mit der Reaktionsgeschwindigkeit auf Benutzeraktionen verbunden sind, wie z. B. stotternde Eingaben. Zusätzlich zu DRM VBlank unterstützt KWin-lowlatency die Verwendung von glXWaitVideoSync, glFinish oder NVIDIA VSync, um Schutz vor Tearing zu bieten, ohne die Reaktionsfähigkeit negativ zu beeinflussen (der ursprüngliche Tearing-Schutz von KWin wird mithilfe eines Timers implementiert und kann zu großen Latenzen (bis zu 50 ms) bei der Ausgabe führen und dadurch eine Verzögerung der Antwort bei der Eingabe). Neue Versionen von KWin-lowlatency können anstelle des Standard-Composite-Servers in KDE Plasma 5.18 verwendet werden.

Source: opennet.ru

Kommentar hinzufügen