Multi-User Windows RemoteApp & Desktop Streaming Server für Linux (Ubuntu)
RDPWinmaster verbindet deine Windows-11-VM (z. B. auf Proxmox) nahtlos mit beliebig vielen Linux-Clients (Ubuntu). Installierte Windows-Programme werden automatisch gescannt, Original-Icons extrahiert und als native Linux-Starter (.desktop) im Ubuntu-Anwendungsmenü abgelegt.
Über die integrierte RAS (RemoteApp Server) Multi-User Streaming Engine öffnen sich Windows-Anwendungen (z. B. Zimmer Custo EKG-Software) direkt als unabhängige Einzelfenster auf den Desktops verschiedener Ubuntu-Arbeitsplätze – ohne RDP-User-Limits, ohne CAL-Kosten und ohne Modifikation von Systemdateien.
- Multi-User Streaming Engine (RAS):
- Echte Mehrbenutzer-Fähigkeit auf Windows 11 Client-Editionen durch automatische Win32 Virtual Desktop Isolation.
- Mehrere Ärzte / Arbeitsplätze können gleichzeitig mit denselben oder verschiedenen Profilen arbeiten.
- Vollbild-Sitzung ("Windows 11 Desktop") oder einzelne Seamless RemoteApps.
- Windows Admin GUI & Tray-Integration:
- Eigene Windows-Verwaltungsoberfläche mit Profil-Editor (Benutzerrechte, App-Whitelists, Session-Limits).
- Live-Session-Monitor mit Arbeitsplatz-Namen (z. B. "EKG Raum 1"), IP-Adressen und Trennen-Button.
- Minimiert sich sauber ins Windows System-Tray.
- Linux Client (PyQt6 GUI & Launcher):
- 100% eigenständiger Streaming-Client ohne externe RDP-Client-Abhängigkeiten.
- 1-Klick-Export von Windows-Apps in
~/.local/share/applications/mit hochauflösenden Icons. - Automatischer GitHub Update-Check: Prüft beim Start auf neue GitHub-Releases/Commits und fragt nach 1-Klick-Aktualisierung.
- Integrierter 1-Klick-Bereitstellungs-Webserver (Port 8766) für automatisches Windows-VM-Setup.
- Intranet Windows Auto-Sync (Zweistufiges Update):
- Sobald der Ubuntu-Client aktualisiert wurde, fragt der Windows-Helper den Versionsstand über das lokale Intranet ab (
/update/version). - Bei einer neueren Version lädt Windows den aktualisierten Helper direkt vom Ubuntu-Host herunter und führt das Update lokal ohne manuelles Eingreifen aus.
- Sobald der Ubuntu-Client aktualisiert wurde, fragt der Windows-Helper den Versionsstand über das lokale Intranet ab (
- Strenger Code-Quality-Harness:
ruff(Linting & Formatting)mypy(Strict Typing, 100% typisiert)pytest(31 Unit- & Integrationstests)pre-commitHooks
+-------------------------------------------------------------+
| Ubuntu Linux Host |
| |
| +---------------------+ +-----------------------+ |
| | PyQt6 GUI Client | | .desktop-Launcher | |
| | (rdpwinmaster-client|<--+ | (rdpwinmaster-launcher| |
| +----------+----------+ | +-----------+-----------+ |
| | | | |
| HTTP (Port 8765) | FreeRDP 3 (Port 3389) |
| | | | |
+-------------|--------------|-----------------|--------------+
| | |
v | v
+----------------------------|--------------------------------+
| | | |
| +----------v----------+ | |
| | FastAPI Helper | | Windows 11 VM (Proxmox) |
| | (rdpwinmaster-helper) | |
| +---------------------+ | |
| - Start Menu Scanner | |
| - Registry Scanner | |
| - PE / LNK Icon Extractor | |
| | |
+----------------------------+--------------------------------+
Öffne ein Terminal auf deinem Ubuntu-Rechner und führe den folgenden Befehl aus:
git clone https://github.com/AniGerm/RDPWinmaster.git && cd RDPWinmaster && ./setup-linux.shWas setup-linux.sh vollautomatisch erledigt:
- Installiert alle erforderlichen System-Abhängigkeiten (
libxcb-cursor0,python3-venv,python3-pip,git). - Richtet ein isoliertes Python Virtual Environment ein (
.venv) und installiert RDPWinmaster. - Generiert hochauflösende RDPWinmaster-Branding-Icons (256x256 und 48x48) in
~/.local/share/icons/. - Registriert die Desktop-Datei
rdpwinmaster.desktopin~/.local/share/applications/und aktualisiert die Desktop-Datenbank. - RDPWinmaster ist sofort über die Ubuntu Super-Taste (Suche) per Klick startbar!
Beim Start des Linux-Clients läuft im Hintergrund automatisch der Bereitstellungs-Server auf Port 8766.
- Öffne in deiner Windows 11 VM den Browser und rufe die Adresse deines Linux-Rechners auf:
http://<UBUNTU-IP>:8766/ - Oder öffne PowerShell als Administrator auf der Windows VM und führe den One-Liner aus:
irm http://<UBUNTU-IP>:8766/install.ps1 | iex
Was das Skript automatisch erledigt:
- Richtet Python & die benötigten Bibliotheken ein
- Erstellt eine Firewall-Regel für Port
8765 TCP - Registriert einen automatischen Start-Task für den Windows-Helper bei jedem Benutzer-Login
- Startet den Helper-Dienst sofort im Hintergrund
Falls du den Helper manuell starten oder die Windows RAS-Verwaltungsoberfläche nutzen möchtest:
# In PowerShell (Hintergrund-Dienst):
pip install rdpwinmaster[helper]
python -m rdpwinmaster.helper.main --host 0.0.0.0 --port 8765
# Oder mit grafischer Profil- und Session-Verwaltung auf Windows:
python -m rdpwinmaster.helper.main --gui- Verbindung herstellen:
- Klicke oben rechts auf ⚙️ Einstellungen & VM-Setup.
- Trage die IP deiner Windows-VM sowie deine RDP-Zugangsdaten (Benutzername & Passwort) ein.
- Apps auswählen:
- Klicke auf 🔄 Neu scannen, um alle Windows-Apps abzurufen.
- Nutze das Suchfeld, um nach Apps zu filtern.
- Markiere die gewünschten Apps per Checkbox oder nutze Alle auswählen.
- In Linux speichern:
- Klicke auf 💾 In Linux speichern (.desktop).
- Die
.desktop-Dateien und Icons werden automatisch in~/.local/share/applications/und~/.local/share/icons/angelegt.
- App starten:
- Öffne deine Windows-App ab sofort direkt über die Ubuntu-Super-Taste / das Anwendungsmenü!
Das Projekt wird mit ruff, mypy (strict) und pytest qualitätsgesichert:
# 1. Linter & Formatierung prüfen:
ruff check src tests
ruff format --check src tests
# 2. Strenge Typenprüfung:
mypy src tests
# 3. Unit- & Integrationstests ausführen:
pytest -vRDPWinmaster/
├── pyproject.toml # Paket- und Toolkonfiguration (Ruff, Mypy, Pytest)
├── .pre-commit-config.yaml # Pre-commit Hooks
├── README.md # Projektdokumentation
├── plans/
│ └── architektur-plan.md # Detaillierter Architekturplan
├── src/
│ └── rdpwinmaster/
│ ├── __init__.py
│ ├── shared/ # Gemeinsame Modelle & Konstanten
│ │ ├── constants.py
│ │ └── models.py
│ ├── helper/ # Windows-Helper-Service
│ │ ├── api.py # FastAPI Server
│ │ ├── auth.py # API-Key Sicherheit
│ │ ├── icon_extractor.py # Extraktion von Icons (.exe/.lnk/UWP)
│ │ ├── scanner.py # Scannt Startmenü, Registry & UWP
│ │ └── main.py # Helper CLI Entry-Point
│ └── client/ # Linux Client & Launcher
│ ├── api_client.py # HTTP-Client für Windows-Helper
│ ├── config.py # Konfigurationsmanager
│ ├── desktop_entry.py# .desktop-Generator & Icon-Manager
│ ├── launcher.py # FreeRDP3 RemoteApp CLI Launcher
│ ├── provisioning.py # 1-Klick Setup Server & Installer
│ ├── main.py # Client GUI Entry-Point
│ └── ui/ # PyQt6 Komponenten
│ ├── app_list_widget.py
│ ├── settings_dialog.py
│ └── main_window.py
└── tests/ # Pytest Test-Suite
├── test_api_client.py
├── test_desktop_entry.py
├── test_icon_extractor.py
├── test_launcher.py
├── test_models.py
├── test_provisioning.py
└── test_scanner.py