- Python 98.8%
- Makefile 0.9%
- Dockerfile 0.3%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .forgejo/workflows | ||
| data | ||
| icons/hicolor/scalable/apps | ||
| src/atomic_booster | ||
| tests | ||
| .gitignore | ||
| CHANGELOG.md | ||
| Containerfile | ||
| CONTRIBUTING.md | ||
| LICENSE | ||
| Makefile | ||
| pyproject.toml | ||
| README.md | ||
Atomic Booster
Системный менеджер для ALT Atomic — immutable OCI-дистрибутива на bootc/composefs. Управление обновлениями образа, Flatpak-приложениями, откат деплоев и точка входа в экосистему.
О проекте
Atomic Booster — нативное GTK4/libadwaita приложение для управления ALT Atomic, спроектированное для работы внутри immutable OCI-образа и интеграции с панелью Niti через D-Bus.
В отличие от классических пакетных менеджеров, Atomic Booster заточен под атомарную модель:
- Daemon-архитектура: Всегда работает в фоне как systemd user-сервис. При закрытии окно скрывается, процесс продолжает проверять обновления.
- D-Bus API: CLI-флаги (
atomicbooster --updates,--rollback,--apps) не запускают новый процесс — они шлют D-Bus вызов уже запущенному демону. Панель Niti использует тот же API для интеграции. - Непрерывный мониторинг: Фоновые проверки обновлений образа и Flatpak каждые 2 часа, независимо от состояния окна.
- Атомарные обновления: Управление bootc-деплоями (статус, обновление, откат), просмотр booted/staged образов.
Ключевые возможности
Управление образом (bootc)
- Просмотр текущего (booted) и staged образа: digest, tag, дата деплоя
- Проверка наличия обновления образа (сравнение digest booted vs staged)
- Запуск
bootc upgradeс прогресс-баром и toast-уведомлениями - Откат на предыдущий деплой с подтверждением через диалог
Управление Flatpak
- Список установленных Flatpak-приложений с иконками (fallback через системную тему)
- Удаление приложений с подтверждением
- Проверка обновлений Flatpak
- Массовое обновление всех приложений
Welcome-страница
- Обзор состояния системы (образ, обновления, приложения)
- Карточка образа с ключевыми параметрами
- Быстрые действия (проверка обновлений, переход к обновлениям/откату)
- Информация об экосистеме ALT Atomic
Интеграция с Niti
- D-Bus сигналы:
SystemUpdateAvailable,FlatpakUpdatesAvailable,UpgradeProgress - Метод
ShowTabдля переключения вкладок извне - Метод
GetStatusдля получения сводки (образ + обновления)
Управление Podman
- Список образов и контейнеров rootless podman
- Запуск, остановка, перезапуск и удаление контейнеров
- Клонирование (re-tag) и удаление образов
- Pull образов из реестра с прогрессом
- Сборка из Containerfile с выбором файла, тега и контекста
- Prune неиспользуемых образов
- Логи контейнеров в отдельном окне
- Live-обновления через
podman.sockсобытия
Требования
- ALT Atomic (Sisyphus, bootc/composefs)
- Python 3.11+
- GTK 4.0 + libadwaita 1.x
bootc(в образе)flatpak+ Flathub remotepython3-module-pygobject3python3-module-dbus(dbus-python)python3-module-gobject(Gio D-Bus)
Установка
Из APM (рекомендуется)
Atomic Booster устанавливается как git-модуль APM в OCI-образ:
apm install atomic-booster
Из репозитория
git clone https://altlinux.space/plafonlinux/atomic-booster.git
cd atomic-booster
sudo make install
Система автоматически подхватит systemd user-сервис при следующем входе в сессию.
Ручной запуск
# Демон
atomicbooster --daemon
# Переключение на вкладку
atomicbooster --updates
atomicbooster --rollback
atomicbooster --apps
atomicbooster --podman
Структура проекта
atomic-booster/
├── data/ # Статические данные
│ ├── atomic-booster.service # systemd user-сервис (Type=dbus)
│ └── org.plafonlinux.AtomicBooster.xml # D-Bus интроспекция
├── src/atomic_booster/ # Исходный код
│ ├── __init__.py
│ ├── main.py # Точка входа, CLI (argparse), single-instance
│ ├── app.py # AtomicBoosterApp (Adw.Application), D-Bus владение, таймеры обновлений
│ ├── window.py # Adw.ViewStack (6 вкладок), navigate_to, guard page-switch
│ ├── dbus_service.py # Gio D-Bus сервис (ShowTab, GetStatus, сигналы)
│ ├── backends/
│ │ ├── bootc.py # BootcBackend: get_status, check_update, upgrade, rollback, get_summary
│ │ ├── flatpak.py # FlatpakBackend: get_update_count, get_installed, update_all, uninstall
│ │ └── podman.py # PodmanBackend: list_images, list_containers, ops, events stream
│ └── pages/
│ ├── welcome.py # Welcome: баннер, карточка образа, быстрые действия
│ ├── updates.py # Updates: прогресс-бар системы, Revealer Flatpak, toast-уведомления
│ ├── rollback.py # Rollback: деплои, диалог отката, StatusPage при отсутствии staged
│ ├── apps.py # Apps: список Flatpak, иконки с fallback, удаление, «Обновить все»
| ├── flatpak_apps.py # Flatpak: установленные Flatpak-приложения, freeze, update, uninstall
│ └── podman.py # Podman: образы и контейнеры, pull/build, live events
├── tests/ # Тесты (pytest + unittest.mock)
│ ├── conftest.py # Фикстуры (bootc JSON, моки subprocess)
│ ├── test_backends_bootc.py # 15 тестов BootcBackend
│ ├── test_backends_flatpak.py # 8 тестов FlatpakBackend
│ ├── test_backends_podman.py # 33 теста PodmanBackend
│ └── test_main.py # 11 тестов CLI, D-Bus, TAB_MAP
├── Makefile # make install/uninstall
└── README.md
Архитектура
┌──────────────────────────┐
│ Niti Panel (Go/GTK4) │
│ D-Bus → ShowTab/GetStatus│
└────────────┬─────────────┘
│ D-Bus (session)
┌────────────▼─────────────┐
│ Atomic Booster Daemon │
│ (systemd user, Type=dbus)│
│ ┌──────────────────────┐ │
│ │ Adw.ViewStack (6 tabs)│ │
│ │ Welcome │ Updates │ │
│ │ Rollback │ Apps │ │
│ │ Flatpak │ Podman │ │
│ └──────────────────────┘ │
│ ┌──────────────────────┐ │
│ │ Backends │ │
│ │ bootc │ flatpak │ │
│ │ podman │ │ │
│ └──────────────────────┘ │
└────────────┬─────────────┘
│ subprocess
┌────────────▼─────────────┐
│ bootc upgrade/status │
│ flatpak update/list │
│ podman ps/images/events │
└──────────────────────────┘
CLI-флаги (--updates, --rollback, --apps, --podman) отправляют D-Bus вызов ShowTab уже запущенному демону — без запуска нового процесса. Флаг --daemon запускает приложение в фоновом режиме.
Лицензия
MIT © 2026 PLAFON