Представлен KWinFT, форк KWin, сфокусированный на Wayland - AsaDagar

Представлен KWinFT, форк KWin, сфокусированный на Wayland

Роман Гилг (Roman Gilg), участвующий в разработке KDE, Wayland, Xwayland и X Server, представил проект KWinFT (KWin Fast Track), развивающий гибкий и простой в использовании композитный оконный менеджер для Wayland и X11, основанный на кодовой базе KWin. Помимо оконного менеджера проект также развивает библиотеку wrapland с реализацией обвязки над libwayland для Qt/C++, продолжающей развитие KWayland, но избавленной от привязки к Qt. Код распространяется под лицензиями GPLv2 и LGPLv2.

Целью проекта является переработка KWin и KWayland с использованием современных технологий и практик разработки, позволяющих ускорить развитие проекта, провести рефакторинг кода, добавить оптимизации и упростить добавление фундаментальных новшеств, интеграция которых в KWin в текущем виде затруднена. KWinFT и Wrapland могут использоваться для прозрачной замены KWin и KWayland, но они не ограничены рамками, которые накладывает завязка на KWin многих продуктов, сохранение полной совместимости с которыми является приоритетом, препятствующим продвижению новшеств.

В KWinFT у разработчиков развязаны руки и они могут экспериментировать с новыми возможностями, добиваясь сохранения стабильности за счёт применения более современных техник разработки. Например, для проверки кода KWinFT задействована система непрерывной интеграции, включающая проверку при помощи разных linter, автоматическое формирование сборок и расширенное тестирование. Что касается развития функциональности, основное внимание в KWinFT будет уделяться обеспечению качественной и полной поддержки протокола Wayland, в том числе переработке архитектурых особенностей KWin, усложняющих интеграцию с Wayland.

Среди уже добавленных в KWinFT экспериментальных новшеств, отмечаются:

  • Переработан процесс композитинга, что позволило значительно улучшить отрисовку контента под управлением X11 и Wayland. Дополнительно добавлен таймер для минимизации задержек между созданием изображения и его выводом на экран.
  • Реализовано расширение протокола Wayland «viewporter«, позволяющее клиенту выполнять действия по масштабированию и обрезанию краёв поверхности на стороне сервера. В сочетании со следующим значительным выпуском XWayland расширение даст возможность эмулировать изменение разрешения экрана для старых игр.
  • Полная поддержка поворота и зеркального отражения вывода для сеансов на основе Wayland.

Wrapland предоставляет спроектированный в стиле Qt программный интерфейс, предоставляющий доступ к функциям libwayland в форме удобной для использования в проектах на С++. Вначале Wrapland планировали развивать как форк KWayland, но из-за неудовлетворительного состояния кода KWayland он теперь рассматривается как проект по полной переработке KWayland. Наиболее важным отличием Wrapland от KWayland является избавление от привязки к Qt и возможность использования отдельно без установки Qt. В будущем Wrapland сможет применяться как универсальная библиотека с С++ API, избавляющая разработчиков от необходимости использования С API libwayland.

Готовые пакеты сформированы для пользователей Manjaro Linux. Для задействования KWinFT достаточно установить из репозитория kwinft, а для отката на штатный KWin — установить пакет kwin. Использование Wrapland не ограничивается KDE, например, подготовлена реализация клиента для применяемого в wlroots протокола управления выводом, позволяющая в композитных серверах на базе wlroots (Sway, Wayfire) использовать KScreen для настройки вывода.

Тем временем, продолжают публиковаться обновления проекта KWin-lowlatency, формирующего редакцию композитного менеджера KWin с патчами для увеличения отзывчивости интерфейса и исправления некоторых проблем, связанных со скоростью реакции на действия пользователя, таких как притормаживание ввода. Для предоставления защиты от появления разрывов при выводе (tearing) без негативного влияния на отзывчивость помимо DRM VBlank в KWin-lowlatency поддерживается использование glXWaitVideoSync, glFinish или NVIDIA VSync (изначально присутствующая в KWin защита от разрывов реализована с использованием таймера и может приводить к большим задержкам (до 50мс) вывода и, как следствие, к запаздыванию реакции при вводе). Новые выпуски KWin-lowlatency могут использоваться вместо штатного композитного сервера в KDE Plasma 5.18.

Подписаться
Уведомить о
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии