9 ポイント 投稿者 kernalix7 21 일 전 | まだコメントはありません。 | WhatsAppで共有

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歓迎です。

まだコメントはありません。

まだコメントはありません。