Skip to content

Latest commit

 

History

15 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RDPWinmaster 🚀

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.


🌟 Kern-Features

  • 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.
  • Strenger Code-Quality-Harness:
    • ruff (Linting & Formatting)
    • mypy (Strict Typing, 100% typisiert)
    • pytest (31 Unit- & Integrationstests)
    • pre-commit Hooks

🏗️ Systemarchitektur

+-------------------------------------------------------------+
|                     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 |                                |
|                            |                                |
+----------------------------+--------------------------------+

🚀 Schnellstart-Anleitung

1. 1-Klick Installation auf Ubuntu direkt von GitHub

Ö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.sh

Was setup-linux.sh vollautomatisch erledigt:

  1. Installiert alle erforderlichen System-Abhängigkeiten (libxcb-cursor0, python3-venv, python3-pip, git).
  2. Richtet ein isoliertes Python Virtual Environment ein (.venv) und installiert RDPWinmaster.
  3. Generiert hochauflösende RDPWinmaster-Branding-Icons (256x256 und 48x48) in ~/.local/share/icons/.
  4. Registriert die Desktop-Datei rdpwinmaster.desktop in ~/.local/share/applications/ und aktualisiert die Desktop-Datenbank.
  5. RDPWinmaster ist sofort über die Ubuntu Super-Taste (Suche) per Klick startbar!

2. Automatische 1-Klick-Installation auf der Windows 11 VM

Beim Start des Linux-Clients läuft im Hintergrund automatisch der Bereitstellungs-Server auf Port 8766.

  1. Öffne in deiner Windows 11 VM den Browser und rufe die Adresse deines Linux-Rechners auf:
    http://<UBUNTU-IP>:8766/
    
  2. 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

3. Manuelle Installation auf der Windows 11 VM & Admin GUI

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

🖥️ Verwendung der Linux-App

  1. Verbindung herstellen:
    • Klicke oben rechts auf ⚙️ Einstellungen & VM-Setup.
    • Trage die IP deiner Windows-VM sowie deine RDP-Zugangsdaten (Benutzername & Passwort) ein.
  2. 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.
  3. 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.
  4. App starten:
    • Öffne deine Windows-App ab sofort direkt über die Ubuntu-Super-Taste / das Anwendungsmenü!

🧪 Entwicklungs- & Qualitätsprüfung (Code Harness)

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 -v

📦 Projektstruktur

RDPWinmaster/
├── 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

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages