Winpodx - LinuxでWindowsアプリをネイティブウィンドウとして実行するツール
(github.com/kernalix7)Linuxをメインに5年以上使っていますが、Office(Exchange連携のOutlook、MS Project)や政府・金融系サイトのようなWindows依存のプログラムが、たまに自分をWindowsへ引き戻すのがずっと不満でした。Wineは多くのことを処理できますが、Microsoftに深く統合された部分では崩れてしまいます。
そこで作りました。LinuxのアプリメニューでWindowsアプリのアイコンをクリックすると、ネイティブなLinuxウィンドウのように開きます。フルスクリーンRDPではなく、アプリごとに独立したLinuxウィンドウとして表示されます。
仕組み
バックグラウンドでWindowsコンテナ(dockur/windows)をPodman上で動かし、FreeRDP RemoteAppで各WindowsアプリをネイティブなLinuxウィンドウのように表示します。ゲスト内部ではbearer認証付きのHTTP agentを起動し、host→guestのコマンドチャネルを処理します(PowerShellウィンドウは表示されません)。
- アプリアイコンをクリックするとすぐ起動(初回起動はzero-config)
- タスクバーのグループ化、ファイル関連付け、alt-tabもすべて正常動作
- ゲストにインストールされたアプリを自動検出(Registry App Paths、Start Menu、UWP/MSIX、Chocolatey、Scoop)
- アイドル時はコンテナを自動一時停止、7日ごとにRDPパスワードを自動ローテーション
- マルチDE環境でのHiDPI自動スケーリング(GNOME、KDE、Sway、Hyprland、Cinnamon)
- Python + Qt6(Electronは不使用、主にstdlibを使用)
同分野のツールとの違い
winapps、winboat、LinOfficeも同じdockur + FreeRDPの組み合わせを使っています。winpodxの差別化ポイント:
- 初回起動がzero-config(他ツールは手動設定またはGUIインストーラー)
- air-gappedなインストール経路を明示的にサポート(--source、--image-tar、--skip-deps)
- より深いauto-config(auto suspend、password rotation、multi-DE HiDPI)
RDPWrapをRustで再実装(rdprrap)
作る中で、予想以上に週末を大量に消費したサイドクエストがありました。
Windows DesktopはユーザーごとにRDPセッションを1つに制限するため、2つ目のアプリを開くと1つ目のセッションが奪われます。標準的な解決策であるRDPWrapは何年もメンテナンスされておらず、不透明なC++バイナリのみで配布されている状態でした。
そこでRustでゼロから再実装しました(rdprrap、MIT)。winpodxにバンドルされて自動インストールされ、最大10個の独立RDPセッションをサポートします。
制限事項
- コンテナ用に数GBのRAMが必要
- GPUパススルーはまだ未対応(性能重視の作業やゲームにはWine + DXVKを推奨)
- RAILのアプリごとの固有動作で、まだ詰め切れていない部分あり
- ベータ(v0.3.0)
インストール
対応ディストリビューション: openSUSE、Fedora、Debian/Ubuntu、RHEL/Alma/Rocky 9および10。AURは準備中。
curl -fsSL https://raw.githubusercontent.com/kernalix7/winpodx/main/install.sh | bash
または、事前ビルド済みのRPM/debパッケージをGitHub Releaseから取得できます。openSUSE/FedoraはOBS経由で:
sudo zypper addrepo https://download.opensuse.org/repositories/home:/…
sudo zypper install winpodx
GitHub: https://github.com/kernalix7/winpodx
ベータ段階なので、issue歓迎です。
まだコメントはありません。