KWinFT is introduced, a fork of KWin focused on Wayland

Roman Gilg, participating in development for KDE, Wayland, Xwayland and X Server, presented project KWinFT (KWin Fast Track), developing a flexible and easy-to-use composite window manager for Wayland and X11 based on the codebase Kwin. In addition to the window manager, the project also develops a library wrapland with libwayland binding implementation for Qt/C++ continuing development KWayland, but got rid of the binding to Qt. The code is distributed under the GPLv2 and LGPLv2 licenses.

The goal of the project is to rework KWin and KWayland using
modern technologies and development practices that allow you to accelerate the development of the project, refactor the code, add optimizations and simplify the addition of fundamental innovations, the integration of which into KWin in its current form is difficult. KWinFT and Wrapland can be used as transparent replacements for KWin and KWayland, but they are not limited by the KWin binding of many products, for which maintaining full compatibility is a priority that hinders innovation.

In KWinFT, developers have a free hand and can experiment with new features while maintaining stability through the use of more modern development techniques. For example, to check the KWinFT code, a continuous integration system is used, which includes checking using different linters, automatic generation of assemblies, and advanced testing. As for the development of functionality, the main focus in KWinFT will be on providing high-quality and complete protocol support.
Wayland, including re-architecting features of KWin that make integration with Wayland more difficult.

Among the experimental innovations already added to KWinFT are:

  • The compositing process has been redesigned, which has significantly improved the rendering of content under X11 and Wayland. Additionally, a timer has been added to minimize delays between creating an image and displaying it on the screen.
  • Implemented Wayland protocol extension"viewporterβ€œ, which allows the client to perform scaling and cropping actions on the surface on the server side. Combined with the next major release of XWayland, the expansion will provide the ability to emulate screen resolution changes for older games.
  • Full support for output rotation and mirroring for Wayland-based sessions.

Wrapland provides a Qt-style API that provides access to libwayland functions in a form suitable for use in C++ projects. Wrapland was originally planned to be developed as a fork of KWayland, but due to the poor state of the KWayland code, it is now being considered as a complete overhaul of KWayland. The most important difference between Wrapland and KWayland is that it is no longer tied to Qt and can be used standalone without installing Qt. In the future, Wrapland can be used as a generic C++ API library, eliminating the need for developers to use libwayland's C API.

Ready-made packages are formed for Manjaro Linux users. To use KWinFT, it is enough to install kwinft from the repository, and to roll back to the regular KWin, install the kwin package. The use of Wrapland is not limited to KDE, for example, a client implementation has been prepared for use in wlroots output control protocol that allows wlroots-based composite servers (Sway, Wayfire) use KScreen to customize the output.

Meanwhile, the ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ publish project updates KWin-lowlatency, which forms an edition of the KWin composite manager with patches to increase the responsiveness of the interface and fix some problems related to the speed of response to user actions, such as input stuttering. In addition to VBlank DRM, KWin-lowlatency supports the use of glXWaitVideoSync, glFinish, or NVIDIA VSync to provide protection against tearing during output (tearing) without negatively affecting responsiveness (the tear protection originally present in KWin is implemented using a timer and can lead to large delays ( up to 50ms) output and, as a result, to a delay in the response during input). New releases of KWin-lowlatency can be used in place of the stock composite server in KDE Plasma 5.18.

Source: opennet.ru

Add a comment