Winpodx - un outil pour exécuter des applications Windows dans des fenêtres natives sur Linux
(github.com/kernalix7)J’utilise Linux comme système principal depuis plus de 5 ans, mais j’ai toujours été frustré de voir des programmes dépendants de Windows — comme Office (Outlook connecté à Exchange, MS Project) ou certains sites gouvernementaux et financiers — me ramener parfois vers Windows. Wine gère beaucoup de cas, mais dès qu’il s’agit d’éléments profondément intégrés à Microsoft, ça s’effondre.
C’est pour ça que je l’ai créé. Quand on clique sur l’icône d’une application Windows dans le menu des applications Linux, elle s’ouvre comme une fenêtre Linux native. Ce n’est pas du RDP en plein écran : chaque application apparaît comme une fenêtre Linux indépendante.
Fonctionnement
Un conteneur Windows (dockur/windows) tourne en arrière-plan sur Podman, et chaque application Windows est affichée comme une fenêtre Linux native via FreeRDP RemoteApp. À l’intérieur de l’invité, un agent HTTP avec authentification bearer traite le canal de commandes host→guest (sans faire apparaître de fenêtre PowerShell).
- lancement immédiat au clic sur l’icône de l’application (premier démarrage zero-config)
- groupement dans la barre des tâches, associations de fichiers et
Alt-Tabfonctionnent normalement - détection automatique des applications installées dans l’invité (Registry App Paths, menu Démarrer, UWP/MSIX, Chocolatey, Scoop)
- suspension automatique du conteneur en cas d’inactivité, rotation automatique du mot de passe RDP tous les 7 jours
- mise à l’échelle HiDPI automatique sur plusieurs environnements de bureau (GNOME, KDE, Sway, Hyprland, Cinnamon)
- Python + Qt6 (pas d’Electron, surtout de la stdlib)
Différences avec les autres outils du même domaine
winapps, winboat et LinOffice utilisent eux aussi la combinaison dockur + FreeRDP. Les points distinctifs de winpodx :
- premier démarrage zero-config (les autres outils demandent une configuration manuelle ou un installateur GUI)
- prise en charge explicite d’un parcours d’installation air-gapped (
--source,--image-tar,--skip-deps) - auto-configuration plus poussée (suspension automatique, rotation du mot de passe, HiDPI multi-DE)
Réimplémentation de RDPWrap en Rust (rdprrap)
En le développant, il y a eu une quête secondaire qui m’a pris bien plus de week-ends que prévu.
Windows Desktop limite les sessions RDP à une seule par utilisateur, donc si on ouvre une deuxième application, elle prend la main sur la première session. La solution standard, RDPWrap, n’est plus maintenue depuis des années et n’est distribuée que sous forme de binaires C++ opaques.
J’ai donc tout réimplémenté depuis zéro en Rust (rdprrap, MIT). Le composant est inclus avec winpodx et s’installe automatiquement, avec prise en charge de jusqu’à 10 sessions RDP indépendantes.
Limitations
- quelques Go de RAM sont nécessaires pour le conteneur
- pas encore de passthrough GPU (pour les tâches sensibles aux performances ou les jeux, Wine + DXVK est recommandé)
- il reste encore des comportements spécifiques par application à peaufiner côté RAIL
- bêta (
v0.3.0)
Installation
Distributions prises en charge : openSUSE, Fedora, Debian/Ubuntu, RHEL/Alma/Rocky 9 et 10. AUR en attente.
curl -fsSL https://raw.githubusercontent.com/kernalix7/winpodx/main/install.sh | bash
Ou vous pouvez télécharger des paquets RPM/deb précompilés depuis les GitHub Releases. Pour openSUSE/Fedora, via OBS :
sudo zypper addrepo https://download.opensuse.org/repositories/home:/…
sudo zypper install winpodx
GitHub: https://github.com/kernalix7/winpodx
Le projet est en phase bêta, donc les issues sont les bienvenues.
Aucun commentaire pour le moment.