Show GN: 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)
- idle 시 컨테이너 자동 일시정지, 7일마다 RDP 비밀번호 자동 회전
- multi-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 세션을 하나로 제한해서, 두 번째 앱 열면 첫 번째 세션을 강탈합니다. 표준 해결책인 RDPWrap은 몇 년째 유지보수가 안 되고 불투명한 C++ 바이너리로만 배포되는 상태였습니다.
그래서 Rust에서 처음부터 다시 구현했습니다 (rdprrap, MIT). winpodx에 번들로 포함되어 자동 설치되며, 독립 RDP 세션 최대 10개를 지원합니다.
제한사항
- 컨테이너용 RAM 몇 GB 필요
- 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
베타 단계라 이슈 환영합니다.