После 7 месяцев разработки опубликован релиз композитного менеджера Sway 1.11, построенного с использованием протокола Wayland и совместимого с мозаичным оконным менеджером i3 и панелью i3bar. Код проекта написан на языке Си и распространяется под лицензией MIT. Проект нацелен на использование в Linux и FreeBSD.
Sway позволяет размещать окна на экране не пространственно, а логически. Окна располагаются, образуя сетку, оптимально использующую экранное пространство и позволяющую быстро манипулировать окнами только при помощи клавиатуры. Совместимость с i3 обеспечена на уровне команд, файлов конфигурации и IPC, что позволяет использовать Sway в качестве прозрачной замены i3, использующей Wayland вместо X11.
Для обустройства полноценного пользовательского окружения предлагаются сопутствующие компоненты: swayidle (фоновый процесс с реализацией ждущего режима), swaylock (хранитель экрана), mako (менеджер уведомлений), grim (создание скриншотов), slurp (выделение области на экране), wf-recorder (захват видео), waybar (панель приложений), virtboard (экранная клавиатура), wl-clipboard (работа с буфером обмена), wallutils (управление обоями рабочего стола).
Sway развивается как модульный проект, построенный поверх библиотеки wlroots, в которую вынесены все базовые примитивы для организации работы композитного менеджера. Wlroots включает бэкенды для
абстрагирования доступа к экрану, устройствам ввода, отрисовки без прямого обращения к OpenGL, взаимодействию с KMS/DRM, libinput, Wayland и X11 (предоставляется прослойка для запуска X11-приложений на базе Xwayland). Помимо Sway библиотека wlroots активно используется и в других проектах. Кроме поддержки языков Си/С++, предоставляются обвязки для языков Scheme, Common Lisp, Go, Haskell, OCaml, Zig, Python и Rust.
В новом выпуске:
- Добавлена поддержка Wayland-протокола linux-drm-syncobj-v1 для явной синхронизации буферов, позволяющей убедиться, что операция отрисовки в буфер завершена до того, как композитный менеджер отобразит данный буфер.
- Добавлена поддержка Wayland-протокола alpha-modifier-v1, позволяющего клиентам менять уровень прозрачности поверхности и выносить операции по обеспечению прозрачности на сторону композитного сервера, который в свою очередь может переадресовать эти операции работающему на уровне ядра модулю KMS.
- Добавлена поддержка Wayland-протоколов ext-image-capture-source и ext-image-copy-capture для захвата контента, выводимого на экран.
- Добавлена поддержка Wayland-протокола ext-data-control, позволяющего привилегированным клиентам управлять обработкой данных, например, для реализации менеджеров буфера обмена.
- В механизм межпроцессного взаимодействия (IPC) интегрирована поддержка метаданных для контекстов безопасности, реализуемых при помощи Wayland-протокола security-context-v1.
- Улучшена логика настройки вывода для более качественного и быстрого отката на другие устройства.
- Добавлена поддержка клавиш управления указателем.
- В файл конфигурации по умолчанию добавлены комбинации клавиш для вызова утилит pactl, brightnessctl и grim.
- Предлагаемое по умолчанию меню переведено на использование утилиты wmenu-run и больше не зависит от скрипта dmenu_path.
- Задействованы новые возможности библиотеки wlroots 0.19. Среди изменений в wlroots:
- Реализованы Wayland-протоколы:
- color-management-v1 (для поддержки HDR10);
- ext-image-capture-source-v1 и ext-image-copy-capture-v1 (для захвата содержимого экрана);
- ext-data-control-v1 (для управления буфером обмена);
- xdg-toplevel-icon-v1 (для привязки своих пиктограмм);
- xdg-dialog-v1 (для создания продвинутых диалоговых окон);
- xdg-system-bell-v1 (для вывода сигнала);
- ext-idle-notify-v1 (для отслеживания активности);
- presentation-time (для адаптивного изменения частоты обновления монитора);
- wlr-layer-shell-v1.5 (для задания границ эксклюзивных зон на экране).
- В бэкендах и движках отрисовки реализована поддержка явной синхронизации буферов при помощи объектов синхронизации DRM (Direct Rendering Manager).
- Добавлена поддержка Multi-GPU для устройств вывода на экран, таких как USB-адаптеры GUD.
- Реализация прямого вывода (direct scanout) в бэкендах теперь поддерживает кадрирование и масштабирование буферов.
- Оптимизированы операции с графом сцены (Scene-graph).
- Реализованы Wayland-протоколы:
