Устройство проекта
Эта часть документации для тех, кто хочет писать плагины и менять систему. Здесь описано, из чего состоит ALT Atomic Niri и где что лежит.
Репозитории#
Всё живёт на altlinux.space (ALS), у каждой части свой репозиторий:
| Репозиторий | Что это |
|---|---|
| atomic-niri-plafon | Сам образ: рецепт сборки, конфиги по умолчанию, CI сборки каналов |
| NitiVala | Shell Niti: панель, лаунчер, быстрое меню, уведомления, виджеты (Vala, GTK4) |
| AtomicBoosterVala | Atomic Booster: система, приложения, контейнеры (Vala, GTK4) |
| Tuner | Центр настроек, загружает плагины через libpeas (апстрим ALT Gnome) |
TunerNiri*, TunerNiti* | Плагины Tuner, по одному на страницу, у каждого свой репозиторий |
| ReadySet | Мастер первой настройки (апстрим ALT Gnome) |
ReadySetNiri*, ReadySetNiti* | Шаги мастера, по одному на репозиторий |
| atomic-niri | Исходники сайта и этой документации |
Языки и стек#
- Vala для всего нативного: Niti, Booster, плагины Tuner, шаги ReadySet.
- GTK4 и libadwaita для интерфейса.
- libpeas 2 для плагинов: и Tuner, и Niti загружают плагины как расширения libpeas.
- meson для сборки.
- Конфиги это JSON (Niti) и INI (отдельные плагины).
Rust используется только в менеджере входа Seni. Python остаётся в некоторых служебных скриптах и тестах.
Ветки и релизы#
В каждом репозитории две ветки: разработка идёт в dev, в main попадает проверенное. Образ собирается так:
latestберёт веткиmainкомпонентов;stableберёт релизные теги компонентов;dev-testсобирается из ветокdevдля проверки.
Подробнее в разделе ветки образа. Релизы компонентов делаются в CI: после определённого числа коммитов от прошлого тега создаётся тег вида v0.1-1 и приложенный архив.
Важно. В main образа и в CORE.lock без согласия сопровождающего ничего не меняют. Если собираетесь вносить правки в образ, сначала обсудите их в чате ALT Atomic.
С чего начать разработчику#
- Заведите учётную запись и научитесь работать с репозиториями на ALS: работа с ALS.
- Выберите, что писать: - страницу настроек: плагин Tuner на Vala; - виджет панели: виджет Niti на Vala.
- Научитесь проверять изменения без пересборки образа: проверка без пересборки.
- Если плагин Niti готов, опубликуйте его: публикация плагина Niti.
Правила, которые стоит знать заранее#
- Собирайте проекты в контейнерах: тулчейн Vala на неизменяемой системе на хост не ставят.
- Каждая новая механика сопровождается тестом.
- В Vala легко получить утечку памяти через замыкания. Прочитайте раздел Vala: память и замыкания и чек-лист до того, как писать код.
- В коммитах пишите только суть изменений.