# PulseGate **PulseGate** ist ein neon-inspiriertes SSH Control Center als TUI-Anwendung für dein Terminal. Die App verwaltet gespeicherte Server, unterstützt Key- und Passwort-Login, Quick Commands, Statuschecks und Kitty/TERM-Fixes für saubere SSH-Sessions unter Hyprland/Kitty. ![PulseGate Screenshot](./pulsegate_screenshot.png) ## Features - Server aus `config.yaml` laden - Server hinzufügen, bearbeiten und löschen - SSH-Verbindung per Key oder Passwort - Passwortspeicherung über den Linux-Keyring - Quick Commands pro ausgewähltem Server ausführen - Command-Output in der TUI anzeigen - SSH-Port-Statuscheck mit Refresh - Kitty-Fix über `TERM=xterm-256color` - Vollbild-TUI mit Navigation, Settings und Help-View ## Voraussetzungen ### Arch / CachyOS ```bash sudo pacman -S go git sshpass gnome-keyring libsecret seahorse ``` Optional, aber empfohlen: ```bash sudo pacman -S openssh ``` ## Installation Repository klonen oder Projektordner öffnen: ```bash cd ~/Projects/pulsegate ``` Go-Abhängigkeiten installieren: ```bash go mod tidy ``` Falls du die Dependencies manuell installieren möchtest: ```bash go get github.com/charmbracelet/bubbletea go get github.com/charmbracelet/lipgloss go get github.com/charmbracelet/bubbles/textinput go get gopkg.in/yaml.v3 go get github.com/99designs/keyring go get golang.org/x/term ``` ## Konfiguration Lege im Projektordner eine `config.yaml` an: ```yaml settings: theme: neon-green terminal: term: xterm-256color enable_kitty_fix: true servers: - name: Unraid host: 10.0.0.15 user: root port: 22 group: Homelab auth: password password_id: unraid-root kitty_fix: true - name: Webhost host: 10.0.0.23 user: administrator port: 22 group: Homelab auth: key key: ~/.ssh/id_ed25519 kitty_fix: true quick_commands: - name: Docker PS command: docker ps - name: Disk Usage command: df -h - name: RAM Usage command: free -h - name: Uptime command: uptime ``` ## Starten Während der Entwicklung: ```bash go run . ``` Als Binary bauen: ```bash go build -o pulsegate ./pulsegate ``` Optional global installieren: ```bash sudo cp pulsegate /usr/local/bin/ pulsegate ``` ## Bedienung | Taste | Funktion | |---|---| | `↑` / `↓` oder `k` / `j` | Auswahl bewegen | | `Enter` | Server verbinden oder Command ausführen | | `a` | Server hinzufügen | | `e` | Server bearbeiten | | `d` | Server löschen | | `c` | Quick Commands öffnen | | `r` | SSH-Port-Status aktualisieren | | `Tab` | Ansicht wechseln | | `s` | Settings öffnen | | `h` | Hilfe öffnen | | `q` | Zurück oder beenden | ## Passwort-Login PulseGate speichert Passwörter nicht in der `config.yaml`, sondern über den Linux-Keyring. Beim ersten Verbindungsaufbau mit `auth: password` fragt PulseGate nach dem Passwort und speichert es unter der angegebenen `password_id`. Beispiel: ```yaml auth: password password_id: unraid-root ``` Zum Anzeigen oder Löschen gespeicherter Passwörter kannst du Seahorse verwenden: ```bash seahorse ``` Dort nach `pulsegate` oder der jeweiligen `password_id` suchen. ## SSH-Key-Login Beispielkonfiguration: ```yaml auth: key key: ~/.ssh/id_ed25519 ``` Public Key auf den Server kopieren: ```bash ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server-ip ``` ## Kitty / TERM Fix Wenn du über Kitty per SSH auf Server gehst, kann es zu Fehlern kommen wie: ```text Error opening terminal: xterm-kitty ``` PulseGate kann für solche Server automatisch setzen: ```bash TERM=xterm-256color ``` Aktivierung global: ```yaml settings: terminal: term: xterm-256color enable_kitty_fix: true ``` Aktivierung pro Server: ```yaml kitty_fix: true ``` ## Screenshot austauschen Der enthaltene Screenshot ist ein Beispielbild. Einen echten Screenshot kannst du unter Hyprland z. B. mit `grim` erstellen: ```bash grim -g "$(slurp)" pulsegate_screenshot.png ``` Oder mit einem anderen Screenshot-Tool deiner Wahl. Lege die Datei anschließend neben die README: ```text README.md pulsegate_screenshot.png ``` ## Roadmap Mögliche nächste Features: - Suche und Filter mit `/` - Scrollbarer Command-Output - Servergruppen / Tags - Import aus `~/.ssh/config` - Passwort ändern/löschen direkt in der TUI - Themes wie `neon-green`, `neon-cyan`, `orange-authentik` - Quick Commands pro Servergruppe