Winpodx - เครื่องมือสำหรับรันแอป Windows เป็นหน้าต่างเนทีฟบน Linux
(github.com/kernalix7)ผมใช้ Linux เป็นหลักมานานเกิน 5 ปีแล้ว และสิ่งที่ทำให้ไม่พอใจมาตลอดคือบางครั้งโปรแกรมที่พึ่งพา Windows เช่น Office (Outlook ที่ผูกกับ Exchange, MS Project) หรือเว็บไซต์ภาครัฐ/การเงิน ก็ยังดึงผมกลับไปใช้ Windows อยู่เสมอ
Wine จัดการได้หลายอย่าง แต่พอเป็นส่วนที่ผสานลึกกับ Microsoft ก็มักจะพัง
เลยทำสิ่งนี้ขึ้นมา เมื่อคลิกไอคอนแอป Windows จากเมนูแอปของ Linux มันจะเปิดขึ้นมาเหมือนเป็นหน้าต่าง Linux แบบเนทีฟ ไม่ใช่ RDP แบบเต็มหน้าจอ แต่เป็นการให้แต่ละแอปเปิดเป็นหน้าต่าง Linux อิสระของตัวเอง
วิธีการทำงาน
รันคอนเทนเนอร์ Windows (dockur/windows) บน Podman ไว้เบื้องหลัง แล้วใช้ FreeRDP RemoteApp เพื่อแสดงแต่ละแอป Windows ให้เป็นหน้าต่าง Linux แบบเนทีฟ ภายใน guest จะรัน HTTP agent ที่ยืนยันตัวตนด้วย bearer เพื่อจัดการช่องทางคำสั่ง host→guest (จึงไม่มีหน้าต่าง PowerShell โผล่ขึ้นมา)
- คลิกไอคอนแอปแล้วรันได้ทันที (ตั้งค่าเริ่มต้นอัตโนมัติในการรันครั้งแรก)
- การจัดกลุ่มบนแถบงาน, การเชื่อมโยงไฟล์, alt-tab ทำงานได้ตามปกติ
- ตรวจพบแอปที่ติดตั้งใน guest โดยอัตโนมัติ (Registry App Paths, Start Menu, UWP/MSIX, Chocolatey, Scoop)
- เมื่อ idle จะพักคอนเทนเนอร์อัตโนมัติ และหมุนรหัสผ่าน RDP อัตโนมัติทุก 7 วัน
- ปรับสเกล HiDPI อัตโนมัติสำหรับหลาย DE (GNOME, KDE, Sway, Hyprland, Cinnamon)
- Python + Qt6 (ไม่ใช้ Electron, อิง stdlib เป็นหลัก)
ความต่างจากเครื่องมือกลุ่มเดียวกัน
winapps, winboat, LinOffice ต่างก็ใช้ชุดผสม dockur + FreeRDP เหมือนกัน จุดแตกต่างของ winpodx คือ:
- รันครั้งแรกได้แบบ zero-config (เครื่องมืออื่นต้องตั้งค่าเองหรือใช้ GUI installer)
- รองรับเส้นทางติดตั้งแบบ air-gapped อย่างชัดเจน (
--source,--image-tar,--skip-deps) - auto-config ที่ลึกกว่าเดิม (พักอัตโนมัติ, หมุนรหัสผ่าน, HiDPI หลาย DE)
นำ RDPWrap มาเขียนใหม่ด้วย Rust (rdprrap)
ระหว่างทำ มี side quest ที่กินเวลาช่วงสุดสัปดาห์ไปมากกว่าที่คาดไว้มาก
Windows Desktop จำกัด RDP session ไว้เพียงหนึ่ง session ต่อผู้ใช้ ดังนั้นถ้าเปิดแอปที่สอง มันจะแย่ง session แรกไป วิธีแก้มาตรฐานอย่าง RDPWrap นั้นไม่มีการดูแลมาหลายปีแล้ว และยังแจกจ่ายเป็นเพียงไบนารี C++ ที่ไม่โปร่งใส
จึงได้เขียนใหม่ตั้งแต่ต้นใน Rust (rdprrap, MIT) มันถูกรวมมากับ winpodx และติดตั้งอัตโนมัติ โดยรองรับ RDP session แบบอิสระได้สูงสุด 10 session
ข้อจำกัด
- ต้องการ RAM หลาย GB สำหรับคอนเทนเนอร์
- ยังไม่มี GPU passthrough (ถ้าเป็นงานที่ไวต่อประสิทธิภาพหรือเกม แนะนำ 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
ยังอยู่ในช่วงเบตา ยินดีรับรายงานปัญหา
ยังไม่มีความคิดเห็น