Выпуск пользовательского окружения Sway 1.11

После 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).


Release. Ссылка here.