Главная | IT | Представлен Denial, композитный сервер со встроенным движком Flutter

Представлен Denial, композитный сервер со встроенным движком Flutter

Проект Denial развивает открытый композитный сервер на базе протокола Wayland, примечательный встраиванием движка построения пользовательского интерфейса на базе фреймворка Flutter. В отличие от традиционных решений, в которых Flutter-приложения запускаются поверх оконного менеджера, встраивание Flutter в композитный сервер позволило напрямую задействовать его для отрисовки всех элементов пользовательского окружения, создания анимации и компоновки окон. Проект находится на стадии публичного альфа-тестирования. Код написан на языках Dart и Rust, и распространяется под лицензией GPLv3+. При разработке задействован AI-ассистент OpenAI Codex.

Низкоуровневая часть композитного сервера написана на языке Rust с использованием библиотеки Smithay, и отвечает за обработку протоколов Wayland, управление состояниями клиентских окон, взаимодействие с устройствами ввода через libinput, управление устройствами вывода (DRM/KMS), переключение фокуса и управления ресурсами. Пользовательская оболочка написана на языке Dart и использует Flutter для управления раскладкой окон, формирования панелей, управления жестами, навигации и визуальных эффектов.

Кадровые буферы Wayland-приложений импортируются как внешние GPU-текстуры через расширение «EGL_EXT_image_dma_buf_import», что исключает копирование данных между CPU и GPU. Сцена, включающая элементы оболочки на базе Flutter и текстуры запущенных программ, отрисовываются напрямую в GBM-буферы (Generic Buffer Management) и выводятся на экран через DRM/KMS без промежуточной отрисовки.
Поддерживается запуск Wayland-приложений, а также X11-приложений с помощью прослойки Xwayland (подтверждена корректная работа игр под Steam и Proton).

Реализованы такие возможности, как вывод на несколько мониторов, встроенная система уведомлений, независимая регулировка громкости для каждого окна, блокировка экрана и поддержка desktop-порталов XDG для организации записи и трансляции экрана. При разработке пользовательской оболочки поддерживается горячая перезагрузка (Hot Reload), применение утилит Flutter Inspector, а также использование для отладки встроенных в браузеры инструментов для web-разработчиков.

Источник