# motd-assist TUI-Tool zur Verwaltung dynamischer MOTDs auf Ubuntu/Debian (`/etc/update-motd.d`) — geschrieben in Go mit [Bubble Tea](https://github.com/charmbracelet/bubbletea) und [Lip Gloss](https://github.com/charmbracelet/lipgloss). ## Features - **Presets**: schnell zwischen MOTD-Stilen wechseln (mitgeliefert: `ubuntu-default`, `minimal`, `server-dashboard`); eigene Presets landen in `~/.config/motd-assist/presets/` - **Live-Vorschau**: die aktivierten Scripte werden ausgeführt und farbig in der TUI angezeigt – inklusive noch nicht installierter Preset-Scripte und Breitenanpassung - **Dynamische Erkennung**: welche Scripte existieren, welche aktiv sind (Executable-Bit), ob `pam_motd` konfiguriert ist, Distro/Hostname - **Gebündelte Style-Scripte**: Branding-Header, Sysinfo-Panel (MEM/DISK/LOAD-Balken), dezenter Footer – reines POSIX `sh`, keine Abhängigkeiten - **Sicherheiten**: Script-Inhalte werden nie verändert (nur chmod/rename/install), vor jedem Apply wird ein Snapshot geschrieben, `motd-assist restore` macht ihn rückgängig ## Installation ```sh go build -o motd-assist . # oder: go install motd-assist@latest sudo cp motd-assist /usr/local/bin/ ``` ## Bedienung (TUI) `motd-assist` startet die TUI. Lesen und Vorschauen geht ohne Root; erst beim Anwenden (`a`) erscheint die sudo-Passwortabfrage. | Taste | Funktion | | --- | --- | | `tab` / `shift+tab` | zwischen Presets · Scripten · Vorschau wechseln | | `j`/`k`, `↑`/`↓` | auswählen | | `enter` / `space` | Preset laden · Script an/aus | | `u` / `d` | Script in der MOTD-Reihenfolge nach oben/unten | | `a` | Änderungen anwenden (sudo) | | `esc` | ausstehende Änderungen verwerfen | | `s` | aktuellen Zustand als Preset speichern | | `D` | ausgewähltes Preset löschen (nur eigene) | | `r` | Systemzustand neu einlesen | | `?` | Hilfe · `q` beenden | ## CLI ```sh motd-assist preview [-w 72] # aktuellen MOTD rendern und ausgeben motd-assist list # Scripte + Zustand anzeigen motd-assist presets # verfügbare Presets auflisten motd-assist apply # Preset anwenden (fragt ggf. sudo-Passwort) motd-assist restore # letzten Apply zurücksetzen ``` ## Preset-Format (JSON) ```json { "name": "mein-preset", "description": "Kurze Beschreibung", "scripts": [ { "name": "00-header", "enabled": false }, { "name": "10-brand-header", "enabled": true, "install": "brand-header" }, { "name": "95-footer", "enabled": true, "install": "footer" } ] } ``` Die Array-Reihenfolge bestimmt die MOTD-Reihenfolge. Nicht gelistete System-Scripte bleiben unverändert; nicht mehr benötigte gebündelte Scripte werden beim Preset-Wechsel entfernt. `install` referenziert eine gebündelte Vorlage (`brand-header`, `sysinfo-panel`, `footer`). ## Entwicklung ```sh go test ./... # Unit-Tests (Logik plattformneutral) MOTD_ASSIST_ROOT= go run . # gegen ein Test-Root laufen lassen ``` Das Tool zielt auf Linux; Windows-Builds kompilieren, haben aber kein Executable-Bit-Konzept (alles Lesen/Planen funktioniert, Ausführen der Scripte nicht).