Tuner и плагины: настройки из отдельных кусочков

Wi-Fi, звук, внешний вид, клавиатура, панель: каждая вкладка настроек это самостоятельный плагин.

Что такое Tuner

Tuner это расширяемый центр настроек на GTK4 и libadwaita, который загружает плагины через libpeas. Сам Tuner умеет немного: показывает окно, боковое меню и подгружает плагины. Всё остальное, то есть сами настройки, лежит в плагинах.

В Atomic Niri Tuner это основное место настройки системы после установки.

Одна вкладка это один плагин и один репозиторий

В Atomic Niri каждая страница Tuner (Wi-Fi, Звук, Bluetooth, Внешний вид, Обои, Клавиатура, Питание…) вынесена в отдельный плагин со своим репозиторием. Это сознательное решение, и вот что оно даёт:

Проще управлять

У каждой настройки свой код, свои тесты и свой релиз. Менять звук, не трогая сеть, и выпускать обновления по одному.

Проще находить ошибки

Сломалась вкладка: понятно, чей это репозиторий. Баг не размазан по монолиту, а проверяется отдельными тестами.

Можно написать свой плагин

Нужна вкладка для своего железа или сервиса? Достаточно отдельного репозитория по образцу. Ничего не нужно «вливать» в чужой код.

Расширяется без правки ядра

Новый плагин ставится отдельно и подхватывается Tuner: код самого центра настроек менять не нужно.

Плагины Atomic Niri

Страницы по порядку в боковом меню. Исходники каждого плагина лежат в plafonlinux.

СтраницаЧто настраиваетПлагин
Wi-Fi, Сетьсети, скрытые сети, точка доступа, проводные соединения, VPN, проксиTunerNiriNet
Bluetoothустройства и сопряжениеTunerNitiBluetooth
Уведомления, Поиск«Не беспокоить», приложения, расположение и таймаут уведомлений, поставщики поискаTunerNitiNotifications
Внешний видтема, иконки, курсор, акцентный цвет из обоев, шрифтыTunerNiriAppearance
Обоигалерея, случайная смена, акцентный цвет из обоевTunerNiriWallpapers
Ночной светцветовая температура, расписание (по солнцу или вручную)TunerNiriNightLight
Звуквывод и ввод, громкость, баланс, приложенияTunerNitiAudio
Питаниебатареи и периферия, режим питания, экран блокировкиTunerNitiPower
Клавиатурараскладки и сочетания клавиш niriTunerNitiKeyboard
Принтерыпринтеры и очередь печати (CUPS)TunerNitiPrinter
Настройки панели, Быстрое менюрежим и высота панели, состав и порядок виджетов, плитки быстрого менюTunerNitiSettings
Меню питаниясостав и порядок кнопок, свои командыTunerNiriPowerMenu
Сетевые учётные записи, Общий доступGNOME Online Accounts, имя устройства, SSH, удалённый доступTunerNitiOnline
Приложения по умолчаниюбраузер, почта, календарь, музыка, видео, фотоTunerNiriDefaultApps
Информация о системедиагностика ALT Atomic и железаTunerOSInfo

Как выглядит

Напишите свой плагин

Плагин Tuner это обычный репозиторий с небольшим набором файлов. Плагины пишутся на Vala (нативный модуль) или на Python.

  • Имя репозитория: TunerИмя (PascalCase с префиксом Tuner). Владелец любой: общего пространства имён не нужно.
  • Структура: meson.build, описание плагина в data/ ([Plugin] Name=… Module=…) и исходный код в src/.
  • Сборка: для Vala нужны meson, vala, библиотеки Tuner и libpeas2; удобно собирать в контейнере.
  • Общая библиотека: TunerNitiPluginLib даёт безопасное чтение и запись JSON-конфигов, чтобы не писать это каждый раз.
  • Образец: посмотрите готовые плагины из таблицы выше, например небольшой TunerNiriNightLight.

Если вы написали плагин, расскажите в чате ALT Atomic.