Winpodx – Tool zum Ausführen von Windows-Apps unter Linux als native Fenster
(github.com/kernalix7)Ich nutze Linux seit über fünf Jahren als Hauptsystem, und es hat mich immer gestört, dass mich gelegentlich Windows-abhängige Programme wie Office (Outlook mit Exchange-Anbindung, MS Project) oder staatliche/finanzbezogene Websites wieder zu Windows hinziehen. Wine deckt vieles ab, bricht aber bei Bereichen zusammen, die tief in Microsoft integriert sind.
Also habe ich es gebaut. Wenn man im Linux-App-Menü auf ein Windows-App-Icon klickt, öffnet es sich wie ein natives Linux-Fenster. Kein Vollbild-RDP, sondern jede App erscheint als eigenes, unabhängiges Linux-Fenster.
Funktionsweise
Im Hintergrund läuft ein Windows-Container (dockur/windows) auf Podman, und jede Windows-App wird per FreeRDP RemoteApp als natives Linux-Fenster dargestellt. Innerhalb des Gasts läuft ein per Bearer-Authentifizierung geschützter HTTP-Agent, der den Host→Gast-Befehlskanal verarbeitet (ohne dass ein PowerShell-Fenster aufpoppt).
- App-Icon anklicken und sofort starten (Zero-Config beim ersten Start)
- Gruppierung in der Taskleiste, Dateizuordnungen und Alt-Tab funktionieren ganz normal
- Automatische Erkennung der im Gast installierten Apps (Registry App Paths, Start Menu, UWP/MSIX, Chocolatey, Scoop)
- Container wird bei Inaktivität automatisch pausiert, RDP-Passwort wird alle 7 Tage automatisch rotiert
- Automatische Multi-DE-HiDPI-Skalierung (GNOME, KDE, Sway, Hyprland, Cinnamon)
- Python + Qt6 (kein Electron, überwiegend stdlib)
Unterschiede zu Tools im gleichen Bereich
winapps, winboat und LinOffice nutzen ebenfalls die Kombination aus dockur + FreeRDP. Die Besonderheiten von winpodx:
- Zero-Config beim ersten Start (andere Tools erfordern manuelle Einrichtung oder einen GUI-Installer)
- Explizite Unterstützung für Air-Gapped-Installationspfade (
--source,--image-tar,--skip-deps) - Tiefere Auto-Konfiguration (automatisches Pausieren, Passwortrotation, Multi-DE-HiDPI)
RDPWrap in Rust neu implementiert (rdprrap)
Beim Bauen gab es eine Side-Quest, die unerwartet viel mehr Wochenenden verschlungen hat als gedacht.
Windows Desktop beschränkt RDP-Sitzungen auf eine Sitzung pro Benutzer. Öffnet man eine zweite App, kapert sie die erste Sitzung. Die Standardlösung RDPWrap wird seit Jahren nicht mehr gepflegt und nur noch als intransparente C++-Binärdatei ausgeliefert.
Deshalb habe ich es in Rust von Grund auf neu implementiert (rdprrap, MIT). Es ist in winpodx gebündelt und wird automatisch installiert; unterstützt werden bis zu 10 unabhängige RDP-Sitzungen.
Einschränkungen
- Einige GB RAM für den Container erforderlich
- Noch kein GPU-Passthrough (für performancekritische Aufgaben und Spiele wird Wine + DXVK empfohlen)
- Bei RAIL gibt es noch nicht vollständig auspolierte app-spezifische Besonderheiten
- Beta (v0.3.0)
Installation
Unterstützte Distributionen: openSUSE, Fedora, Debian/Ubuntu, RHEL/Alma/Rocky 9 und 10. AUR steht noch aus.
curl -fsSL https://raw.githubusercontent.com/kernalix7/winpodx/main/install.sh | bash
Alternativ können vorgebaute RPM-/deb-Pakete aus den GitHub Releases heruntergeladen werden. Für openSUSE/Fedora über OBS:
sudo zypper addrepo https://download.opensuse.org/repositories/home:/…
sudo zypper install winpodx
GitHub: https://github.com/kernalix7/winpodx
Da es sich noch in der Beta-Phase befindet, sind Issues willkommen.
Noch keine Kommentare.