Atomic Booster - утилита-компаньон для настройки ALT Atomic
  • Python 98.8%
  • Makefile 0.9%
  • Dockerfile 0.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
plafon 0f97d5b2b5
Some checks failed
CI / Lint (ruff) (push) Successful in 18s
Release / Build and release (push) Successful in 6s
CI / Smoke (daemon startup, thread count, D-Bus) (push) Successful in 1m3s
CI / Unit tests (pytest) (push) Failing after 33s
fix: установка GSettings-схемы snooze (atomic-booster падал при старте)
2026-08-16 23:36:52 +02:00
.forgejo/workflows v0.2-17: CI smoke — daemon skip if GTK/X11 fails 2026-08-05 15:06:16 +02:00
data fix: .desktop переименован в org.plafonlinux.AtomicBooster.desktop — иконка в таскбаре (AppID = WMClass) 2026-08-15 23:02:15 +02:00
icons/hicolor/scalable/apps Replace icon with official ALT Atomic logo, fix sys.path for non-/usr installs 2026-07-12 12:10:14 +02:00
src/atomic_booster feat: Flatpak-обновление — прогресс «x из N» + одно итоговое уведомление 2026-08-15 20:42:06 +02:00
tests test: fix flatpak mock — side_effect для двух скоупов (--user + --system) 2026-08-05 17:22:37 +02:00
.gitignore feat: implement app, window, and stub pages with 4-tab AdwViewStack 2026-06-15 18:11:34 +02:00
CHANGELOG.md feat: Flatpak-обновление — прогресс «x из N» + одно итоговое уведомление 2026-08-15 20:42:06 +02:00
Containerfile test: регрессия утечки потоков + smoke-тесты + CI workflow 2026-08-01 17:06:05 +02:00
CONTRIBUTING.md docs: add pyproject.toml, py.typed, CONTRIBUTING.md 2026-06-15 21:06:53 +02:00
LICENSE Initial commit 2026-06-15 18:56:10 +03:00
Makefile fix: установка GSettings-схемы snooze (atomic-booster падал при старте) 2026-08-16 23:36:52 +02:00
pyproject.toml v0.2-7: CI fix — smoke apt-get, ruff config, lint cleanup 2026-08-05 14:45:12 +02:00
README.md feat: Podman tab — rootless image & container manager v0.2.0 2026-07-25 19:36:57 +02:00

Atomic Booster

Системный менеджер для ALT Atomic — immutable OCI-дистрибутива на bootc/composefs. Управление обновлениями образа, Flatpak-приложениями, откат деплоев и точка входа в экосистему.

License: MIT Platform GTK Python


О проекте

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 remote
  • python3-module-pygobject3
  • python3-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