# PulseGate Desktop PulseGate Desktop ist eine grafische Desktop-App zur Verwaltung von SSH-Servern. Die App nutzt eine YAML-Konfiguration, listet und verwaltet Server, zeigt SSH-Befehle an und startet Verbindungen im lokalen Terminal-Emulator. Läuft nativ auf **Linux** und **Windows**. Für Windows liegt ein fertiger Installer-Build (PyInstaller + Inno Setup) bei. ## Features - Desktop-UI ohne Browser - Aufpolierte Oberfläche mit Hover-Effekten, Akzent-Design und edlen Karten - Serverliste mit Suche - Server hinzufügen, bearbeiten, duplizieren und löschen - Gruppenfilter in der Sidebar - SSH-Verbindung per Button, per Doppelklick oder über das Kontextmenü starten - Erreichbarkeits-Check pro Server (TCP-Ping) - SSH-Befehl pro Server anzeigen und in die Zwischenablage kopieren - **Quick Commands ausführbar** – lokal oder via SSH auf dem ausgewählten Server - Konfigurierbare Themes (neon-green, ocean-blue, sunset-orange, cyber-purple) - Tastenkürzel: F5 neu laden, Ctrl+N neuer Server, Ctrl+S speichern - Terminal-Settings verwalten, Config-Ordner direkt öffnen - Gemeinsame Konfiguration mit PulseGate TUI ## Voraussetzungen ### Linux - Python 3 mit `tkinter` - Python-Paket `PyYAML` - `ssh` - ein unterstützter Terminal-Emulator: - `kitty`, `alacritty`, `konsole`, `gnome-terminal`, `xfce4-terminal` oder `xterm` ### Windows - Windows 10/11 (OpenSSH-Client ist standardmäßig integriert) - Optionale Terminal-Emulatoren (werden in dieser Reihenfolge erkannt): - `wt` (Windows Terminal) - `cmd` (Fallback, immer verfügbar) - `powershell` - Für den Installer-Build zusätzlich: Python 3 + Inno Setup 6 ## Start Desktop-App starten: ```bash ./pulsegate-desktop ``` Direkt mit Python: ```bash python3 desktop/pulsegate_desktop.py ``` Optional kann ein eigener Config-Pfad übergeben werden: ```bash ./pulsegate-desktop /pfad/zur/config.yaml ``` ## Konfiguration Standardmäßig liest und schreibt PulseGate Desktop diese Datei: - Linux: `~/.config/pulsegate/config.yaml` - Windows: `%APPDATA%\pulsegate\config.yaml` Beispiel: ```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 key: "" password_id: unraid-root kitty_fix: true quick_commands: - name: Disk Usage command: df -h ``` ## Windows-Build und Installer Auf einem Windows-Rechner: 1. Build der EXE (erzeugt `dist\PulseGate.exe`): ```bat build_windows.bat ``` 2. Installer kompilieren – Inno Setup 6 öffnen mit: ```text installer\installer.iss ``` oder per Kommandozeile: ```bat iscc installer\installer.iss ``` Ergebnis: `installer\output\PulseGate-Setup-1.0.0.exe` Alternativ wird bei einem Tag `v*` (z. B. `git tag v1.0.0 && git push --tags`) automatisch per Gitea Actions ein Windows-Build inklusive Installer erstellt. ## Web-Variante Im Projekt liegt zusätzlich eine optionale lokale Web-Variante: ```bash go run ./cmd/pulsegate-gui ``` Danach öffnen: `http://127.0.0.1:8090` ## Projektstruktur ```text . ├── cmd/pulsegate-gui/ # optionale Go-Webvariante ├── desktop/ # Python/Tk Desktop-App (Linux + Windows) ├── installer/ # Inno Setup Installer-Skript ├── assets/ # App-Icon ├── scripts/ # Icon-Generierung ├── web/ # optionale Web-Oberfläche ├── build_windows.bat # Windows-EXE-Build (PyInstaller) ├── requirements.txt # Laufzeit-Abhängigkeiten ├── requirements-build.txt # Build-Abhängigkeiten ├── pulsegate-desktop # Linux-Launcher └── README.md ``` ## Entwicklung Python-Syntax prüfen: ```bash python3 -m py_compile desktop/pulsegate_desktop.py ``` Go-Code prüfen: ```bash go test ./... ``` ## Hinweis Die Desktop-App startet SSH in einem separaten lokalen Terminal-Fenster. Passwortabfragen und interaktive SSH-Sessions laufen dort direkt im Terminal.