Рабочий стол: niri и Niti

Композитор, который раскладывает окна в бесконечную ленту, и shell, который превращает его в законченный рабочий стол.

Что такое niri

niri это тайловый Wayland-композитор с прокручиваемой лентой окон (scrollable tiling). Окна стоят в колонках на бесконечной горизонтальной ленте, и у каждого монитора она своя. Открыли новое окно: оно появляется рядом, а остальные не сжимаются и не прыгают, как в обычных тайловых менеджерах. Нужное окно просто «доезжает» в видимую область.

Что умеет

  • создан с нуля для прокручиваемого тайлинга, мониторы по-настоящему независимы (разные масштабы и DPI);
  • динамические рабочие столы, как в GNOME, и обзор, который уменьшает рабочие столы и окна;
  • встроенный интерфейс скриншотов и запись экрана или отдельного окна через xdg-desktop-portal-gnome;
  • анимации (в том числе со своими шейдерами), градиентные рамки, размытие фона, группировка окон во вкладки;
  • удобно и с мышью: при зажатой клавише Mod колесо листает рабочие столы, а горизонтальное (боковое) колёсико двигает ленту окон; с Mod+Ctrl переносит колонки;
  • конфиг перечитывается на лету, есть поддержка программ чтения с экрана;
  • приложения X11 работают через xwayland-satellite.

Кто и зачем

niri делает русскоязычный разработчик Иван Молодецких (на GitHub под ником YaLTeR) на языке Rust под лицензией GPL-3.0. Идея выросла из PaperWM, расширения GNOME Shell с прокручиваемым тайлингом: расширение упирается в общую систему координат оболочки, и автору хотелось написать отдельный композитор, где мониторы разделены правильно.

niri не наш проект: мы берём его как есть из апстрима и ставим в образ. Поэтому все его возможности и документацию (wiki) можно использовать и в Atomic Niri.

Что такое Niti

Сам по себе niri это только композитор: он раскладывает окна, но не рисует панель, не показывает уведомления и не запускает программы. Всё это делает Niti: полноценный shell для niri (по роли это то же, что GNOME Shell для GNOME).

Название по-русски означает «нити»: ниточки, за которые дёргают нужное в системе. Так пользователь через панель взаимодействует с системой. Как Niti появился и почему, рассказано на странице «Что такое», а всё, что он умеет, описано на отдельной странице.

Лаунчер и док

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

Быстрое меню

Сеть, Bluetooth, звук, яркость, режим «Не беспокоить» и другие плитки в одном месте.

Уведомления и OSD

Уведомления, индикаторы громкости и яркости, меню выключения.

Панель и виджеты

Часы и календарь, рабочие столы, задачи, трей, батарея, раскладка клавиатуры, медиа, диски, системный монитор и другие.

Глобальный поиск

Лаунчер на Super+D это глобальный поиск: одно поле, в котором результаты появляются по мере набора. Каждый источник показывается своим блоком:

  • Приложения рядом значков, подходящее выделено;
  • Tuner: страницы настроек с описанием, совпадение подсвечено жирным;
  • Atomic Booster: разделы и действия системы;
  • Калькулятор, справка и системные действия;
  • Внешние поставщики поиска в стиле GNOME и расположения для поиска файлов, которые вы добавили в настройках.

Какие источники включены и где искать, настраивается в Tuner на странице «Поиск». Отдельное окно для вопросов к ИИ открывается по Super+Shift+Space.

Написан на нативной Vala

Niti написан на Vala: этот язык компилируется напрямую в нативный код C/GObject, на котором построен сам GTK. Нет прослойки биндингов и сборщика мусора, поэтому панель стартует мгновенно и почти ничего не ест в простое. Интерфейс на GTK4 и libadwaita.

  • Плагинная архитектура (libpeas). Каждый виджет это независимый модуль по простому контракту. Заменить или отключить один виджет можно без пересборки всей панели, и свои виджеты можно добавлять так же.
  • Настройка без правки файлов. Состав и порядок виджетов, быстрое меню, меню питания настраиваются в Tuner и в мастере первой настройки.
  • История. Niti родился как панель на Go в противовес ashell, но очень быстро вырос в полноценный shell, который теперь реализован на Vala. Go-версия больше не развивается, проект продолжает NitiVala. Подробнее о Niti.

Только для ALT Atomic

Niti создан сугубо для ALT Atomic и тесно связан с её экосистемой: обновлениями образа, Atomic Booster, Tuner и ReadySet. Расширять его на другие дистрибутивы пока не планируется. Это осознанный выбор: глубокая интеграция с одной системой лучше, чем поверхностная поддержка всех.

Как это складывается

СлойЧто это
niriкомпозитор: окна, рабочие столы, мониторы, ввод
Nitishell: панель, лаунчер, быстрое меню, уведомления
Tunerнастройки; каждая вкладка отдельный плагин
Atomic Boosterсистема, приложения, контейнеры
ReadySetмастер первой настройки
ALT Atomicнеизменяемая основа, обновления и откат