No description
Find a file
Tronax d56659e21a
feat: add motd-assist TUI for managing dynamic MOTDs
Initial Go project built with Bubble Tea and Lip Gloss:
- Live preview and management of /etc/update-motd.d scripts
- Embedded presets (ubuntu-default, minimal, server-dashboard)
- Bundled POSIX sh style scripts (brand header, sysinfo panel, footer)
- Snapshot/restore safety around applying changes
- CLI subcommands preview, apply, restore, list-presets
- Unit tests for detect, sanitize, and apply logic
2026-08-24 14:19:28 +02:00
internal feat: add motd-assist TUI for managing dynamic MOTDs 2026-08-24 14:19:28 +02:00
scripts feat: add motd-assist TUI for managing dynamic MOTDs 2026-08-24 14:19:28 +02:00
.gitignore feat: add motd-assist TUI for managing dynamic MOTDs 2026-08-24 14:19:28 +02:00
go.mod feat: add motd-assist TUI for managing dynamic MOTDs 2026-08-24 14:19:28 +02:00
go.sum feat: add motd-assist TUI for managing dynamic MOTDs 2026-08-24 14:19:28 +02:00
main.go feat: add motd-assist TUI for managing dynamic MOTDs 2026-08-24 14:19:28 +02:00
README.md feat: add motd-assist TUI for managing dynamic MOTDs 2026-08-24 14:19:28 +02:00

motd-assist

TUI-Tool zur Verwaltung dynamischer MOTDs auf Ubuntu/Debian (/etc/update-motd.d) — geschrieben in Go mit Bubble Tea und Lip Gloss.

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

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

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>    # Preset anwenden (fragt ggf. sudo-Passwort)
motd-assist restore           # letzten Apply zurücksetzen

Preset-Format (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

go test ./...                 # Unit-Tests (Logik plattformneutral)
MOTD_ASSIST_ROOT=<dir> 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).