Git

Устройство проекта

Эта часть документации для тех, кто хочет писать плагины и менять систему. Здесь описано, из чего состоит ALT Atomic Niri и где что лежит.

Репозитории#

Всё живёт на altlinux.space (ALS), у каждой части свой репозиторий:

РепозиторийЧто это
atomic-niri-plafonСам образ: рецепт сборки, конфиги по умолчанию, CI сборки каналов
NitiValaShell Niti: панель, лаунчер, быстрое меню, уведомления, виджеты (Vala, GTK4)
AtomicBoosterValaAtomic 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.

С чего начать разработчику#

  1. Заведите учётную запись и научитесь работать с репозиториями на ALS: работа с ALS.
  2. Выберите, что писать: - страницу настроек: плагин Tuner на Vala; - виджет панели: виджет Niti на Vala.
  3. Научитесь проверять изменения без пересборки образа: проверка без пересборки.
  4. Если плагин Niti готов, опубликуйте его: публикация плагина Niti.

Правила, которые стоит знать заранее#

  • Собирайте проекты в контейнерах: тулчейн Vala на неизменяемой системе на хост не ставят.
  • Каждая новая механика сопровождается тестом.
  • В Vala легко получить утечку памяти через замыкания. Прочитайте раздел Vala: память и замыкания и чек-лист до того, как писать код.
  • В коммитах пишите только суть изменений.