# Moonset **Name**: Hekate (Göttin der Wegkreuzungen — passend zum Power-Menu, das den Weg der Session bestimmt) ## Projekt Moonset ist ein Wayland Session Power Menu, gebaut mit Python + GTK4 + gtk4-layer-shell. Teil des Moonarch-Ökosystems. Per Keybind aufrufbares Overlay mit 5 Aktionen: Lock, Logout, Hibernate, Reboot, Shutdown. ## Tech-Stack - Python 3.11+, PyGObject (GTK 4.0) - gtk4-layer-shell für Wayland Layer Shell (OVERLAY Layer) - pytest für Tests ## Projektstruktur - `src/moonset/` — Quellcode - `src/moonset/data/` — Package-Assets (Fallback-Wallpaper) - `tests/` — pytest Tests - `config/` — Beispiel-Konfigurationsdateien ## Kommandos ```bash # Tests ausführen uv run pytest tests/ -v # Typ-Checks uv run pyright src/ # Power-Menu starten (in Niri-Session) uv run moonset ``` ## Architektur - `power.py` — 5 Power-Action-Wrapper (lock, logout, hibernate, reboot, shutdown) - `i18n.py` — Locale-Erkennung und String-Tabellen (DE/EN) - `config.py` — TOML-Config + Wallpaper-Fallback - `panel.py` — GTK4 UI (Action-Buttons, Inline-Confirmation, WallpaperWindow) - `main.py` — Entry Point, GTK App, Layer Shell Setup, Multi-Monitor - `style.css` — Catppuccin Mocha Theme ## Design Decisions - **OVERLAY statt TOP Layer**: Waybar liegt auf TOP, moonset muss darüber - **Niri-spezifischer Logout** (`niri msg action quit`): Moonarch setzt fest auf Niri - **Einmal-Start per Keybind**: Kein Daemon, GTK `application_id` verhindert Doppelstart - **System-Icons**: Adwaita/Catppuccin liefern alle benötigten symbolischen Icons - **Lock ohne Confirmation**: Lock ist sofort reversibel, braucht kein Confirm