Выпуск композитного сервера Niri 25.11, использующего Wayland

После трёх месяцев разработки опубликован выпуск композитного сервера Niri 25.11, реализующего метод мозаичной (tiling) компоновки в стиле GNOME-расширения PaperWM, в котором окна группируются в бесконечно прокручиваемую на экране ленту. Открытие нового окна приводит к расширению ленты, а ранее добавленные окна не меняют свой размер. Проект базируется на использовании протокола Wayland, но позволяет запускать приложения X11 при помощи DDX-сервера Xwayland. Код проекта написан на языке Rust и распространяется под лицензией GPLv3. Пакеты формируются для Fedora, NixOS , Arch Linux и FreeBSD.

Принципиальным отличием Niri от PaperWM является привязка к каждому монитору собственной ленты окон, не пересекающейся с лентами на других мониторах (в PaperWM раздельная работа с мониторами не может быть реализована из-за привязки к глобальным оконным координатам в GNOME Shell). Niri поддерживает HiDPI и может работать на системах с несколькими GPU (например, гибридных системах с дискретной видеокартой и встроенным GPU). Имеется встроенный интерфейс для создания скриншотов и записи скринкастов, особенностью которого является возможность исключения из записи отдельных окон с конфиденциальной информацией.

Виртуальные рабочие столы в Niri создаются динамически и по аналогии с GNOME размещаются вертикально (лента окон вращается горизонтально, а лента рабочих столов – вертикально). На каждом мониторе может отображаться независимый набор виртуальных рабочих столов. Для переключения между рабочими столами и окнами можно использовать управляющие жесты на тачпаде. При отключении монитора раскладка виртуальных рабочих столов запоминается и переносится на оставшийся монитор, а при возвращении монитора восстанавливается в исходное состояние. Настройка осуществляется через файл конфигурации, позволяющий изменять такие параметры, как ширина рамок, отступы, режимы вывода и размеры окон. Внесённые в файл конфигурации изменения применяется автоматически без перезапуска композитного сервера.


В новой версии:

  • Добавлен интерфейс для переключения между окнами по Alt+Tab с показом эскизов во время прокрутки окон.
    Возможно отображение окон в привязке к текущему виртуальному рабочему столу (клавиша “w”) или устройству вывода (клавиша “o”). Также доступна комбинация клавиш Alt+”‘” для переключения между окнами текущего приложения.
  • Добавлены анимационные эффекты перехода окна в полноэкранный режим и выхода из него.
  • Реализована полноценная поддержка раскрытия окон на весь экран (ранее поддерживалось раскрытие окна на полную ширину с сохранением отступов и рамок, а теперь поддерживается раскрытие с занятием всей доступной области без показа рамок). Раскрытие производится при нажатии соответствующей кнопки в верхней части окна или при двойном клике мышью по заголовку.

  • Добавлена возможность генерации событий прокрутки содержимого при осуществлении горизонтального перетаскивания мышью заголовка окна в мозаичной раскладке (вертикальное перетаскивание приводит к перемещению окна, а горизонтальное – к прокрутке информации в окне).
  • Предоставлена возможность определения отдельных конфигураций раскладки окон, привязанных к определённому устройству вывода (монитору) или виртуальному рабочему столу.
  • В файлах конфигурации реализована директива “include” для подстановки содержимого других файлов.
  • Добавлена поддержка внешних мониторов, подключённых через порт DisplayLink.
  • Внесены изменения, снижающие мерцание экрана.
  • Добавлена поддержка задания собственных видеорежимов для устройств вывода, не ограниченных режимами, переданными через EDID. Например, ‘mode custom=true “1920×1080@100″‘.
  • Добавлена поддержка запуска оконного сеанса niri в WSL (Windows Subsystem for Linux).

Release. Ссылка here.