Компания System76, разрабатывающая Linux-дистрибутив Pop!_OS, опубликовала отчёт о развитии новой редакции пользовательского окружения COSMIC, переписанной на языке Rust (не путать со старым COSMIC, который был основан на GNOME Shell). Окружение развивается как универсальный проект, не привязанный к конкретному дистрибутиву и соответствующий спецификациям Freedesktop. Проектом также разрабатывает композитный сервер cosmic-comp на базе Wayland.
Для построения интерфейса в COSMIC задействована библиотека Iced, которая использует безопасные типы, модульную архитектуру и модель реактивного программирования, а также предлагает архитектуру, привычную для разработчиков, знакомых с языком декларативного построения интерфейсов Elm. Предоставляется несколько движков отрисовки, поддерживающих Vulkan, Metal, DX12, OpenGL 2.1+ и OpenGL ES 2.0+, а также оконная оболочка и движок для интеграции с Web. Приложения на базе Iced могут быть собраны для Windows, macOS, Linux и запуска в web-браузере. Разработчикам предлагается готовый набор виджетов, возможность создавать асинхронные обработчики и использовать адаптивную компоновку элементов интерфейса в зависимости от размера окна и экрана. Код распространяется под лицензией MIT.
Среди последних достижений в разработке COSMIC:
- Предложена новая панель, отображающая список активных окон, ярлыки для быстрого доступа к приложениям и поддерживающая размещение апплетов (встроенные приложения, выполняемые в отдельных процессах). Например, через апплеты реализованы меню приложений, интерфейс переключения между рабочими столами и индикаторы для изменения раскладки клавиатуры, управление воспроизведением мультимедийных файлов, изменения громкости, управления Wi-Fi и Bluetooth, показа вывода списка накопившихся уведомлений, отображения времени и вызова экрана для завершения работы. В планах
реализация апплетов с прогнозом погоды, заметками, управления буфером обмена и реализацией пользовательских меню.Панель может разделяться на части, например, верхнюю с меню и индикаторами, и нижнюю со списком активных задач и ярлыков быстрого доступа. Части панели могут размещаться как вертикально, так и горизонтально, занимать всю ширину экрана или только выбранную область, использовать прозрачность, менять стиль в зависимости от выбора светлого и тёмного оформления.
- Опубликован сервис автоматической оптимизации System76 Scheduler 2.0, динамически настраивающий параметры планировщика задач CFS (Completely Fair Scheduler) и меняющий приоритеты выполнения процессов для снижения задержек и обеспечения максимальной производительности процесса, связанного с активным окном, с которым в текущий момент работает пользователь. В новой версии реализована интеграция с мультимедийным сервером Pipewire для повышения приоритета процессов, выводящих мультимедийный контент; осуществлён переход на новый формат файлов конфигурации, в которых можно определять собственные правила и управлять применением различных режимов оптимизации; предоставлена возможность применения настроек с учётом состояния cgroups и родительских процессов; примерно на 75% снижено потребление ресурсов в основном процессе Scheduler.
- Доступна реализация конфигуратора, подготовленного с использованием новой библиотеки виджетов. В первом варианте конфигуратора предложены настройки панели, клавиатуры и обоев рабочего стола. В дальнейшем число страниц с настройками будет увеличено. Конфигуратор имеет модульную архитектуру, позволяющую легко подключать дополнительные страницы с настройками.
- Ведётся подготовка к интеграции поддержки экранов с высоким динамическим диапазоном яркости (HDR) и средств управления цветности (например, планируется добавить поддержку цветовых профилей ICC). Разработка пока на начальной стадии и синхронизируется с общей работой по обеспечению поддержки HDR и средств управления цветом для Linux.
- В композитный сервер cosmic-comp добавлена поддержка вывода с представлением цвета 10 бит на канал.
- В GUI-библиотеке iced ведётся работа по поддержке инструментов для людей с ограниченными возможностями. Проведена экспериментальная интеграция с библиотекой AccessKit и добавлена возможность использования экранных ридеров Orca.