kernalix7/winpodx
GitHub: kernalix7/winpodx
WinPodX 在 Linux 上以容器方式运行 Windows,通过 FreeRDP RemoteApp 将 Windows 应用呈现为原生 Linux 窗口,实现无缝跨平台使用体验。
Stars: 1237 | Forks: 56
为每个 Windows 应用提供原生 Linux 窗口 —— 真实的图标,真实的 WM_CLASS,
支持固定到任务栏。基于 FreeRDP RemoteApp + dockur/windows。零配置。
# 最新稳定版(默认)
curl -fsSL https://raw.githubusercontent.com/kernalix7/winpodx/main/install.sh | bash
# 最新 main 分支版本(开发版;可能不稳定)
curl -fsSL https://raw.githubusercontent.com/kernalix7/winpodx/main/install.sh | bash -s -- --main
# 卸载(保留 Windows 虚拟机数据;传入 --purge 可彻底清除所有内容)
Windows 的“关于”/“任务管理器”/“PowerShell”各自运行在独立的 Linux 窗口中,旁边是 WinPodX 仪表板(实时显示 Pod / 内存 / CPU 仪表,以及工作区磁贴)。
[](#status-beta)
[](https://github.com/kernalix7/winpodx/releases)
[](LICENSE)
[](https://www.python.org/)
[](#testing)
[](https://github.com/kernalix7/winpodx/actions/workflows/ci.yml)
[](https://github.com/kernalix7/winpodx/stargazers)
[](https://github.com/kernalix7/winpodx/releases)
###### 支持平台
[](https://www.opensuse.org/)
[](https://fedoraproject.org/)
[](https://fedoraproject.org/atomic-desktops/)
[](https://www.debian.org/)
[](https://ubuntu.com/)
[](https://www.redhat.com/)
[](https://archlinux.org/)
[](docs/INSTALL.md#nix)
[](docs/INSTALL.md)
**English** · [한국어](docs/README.ko.md) · [安装](docs/INSTALL.md) · [使用](docs/USAGE.md) · [功能](docs/FEATURES.md) · [架构](docs/ARCHITECTURE.md) · [对比](docs/COMPARISON.md)
| **裸机伪装(规避虚拟机检测)** — 0.7.0 版本新增 · 默认关闭,可选择开启 - 使得对于拒绝在检测到的 hypervisor 下运行的软件而言,Windows 客户机看起来就像是一台**物理机** —— 解决 Nvidia GPU 直通出现的“代码 43”错误、安装启动时的虚拟机检查,以及对虚拟机环境存在敌意的安装程序 - `pod.disguise_level balanced | max`:**balanced**(平衡)会隐藏 CPUID 的 hypervisor 位和 KVM 特征签名,并镜像宿主机的真实 SMBIOS/DMI 信息;**max**(“强化”)则增加了一个本地构建的、经过补丁处理的 QEMU 镜像(`winpodx disguise build-image`),该镜像会重写 ACPI / 磁盘 / 传感器 / USB 指纹特征,并移除 virtio + Red-Hat 的 PCI 标记(保留对 USB3 的支持) - 从宿主机提取的特征字符串仅会保留在**本地镜像中**(绝对不会提交到 git);且永远不会读取序列号 / UUID / 资产标签 - **通过 al-khaser 0.82 验证** —— 可通过 `winpodx config set pod.disguise_level max` 或 GUI 设置中的“Bare-metal”选择器来启用 - [了解详情 →](docs/FEATURES.md#bare-metal-disguise-vm-detection-avoidance) | |
| **反向打开** - 默认情况下,Linux 应用会出现在 Windows 客户机右键点击的“打开方式...”菜单中 - 在简短菜单和长列表的“选择其他应用”对话框中,均能显示正确的各个应用图标 - 选择某个应用后,会将文件打开请求往返传递给宿主机的 `xdg-open` - 根据 freedesktop 标准,自动发现宿主机端的 Linux 应用及其 MIME 关联 - 通过 `winpodx host-open` CLI 或 GUI 设置面板进行管理 - [了解详情 →](docs/FEATURES.md#reverse-open-linux-apps-in-windows-open-with) |
**无缝应用窗口**
- RemoteApp (RAIL) 将每个 Windows 应用渲染为原生 Linux 窗口 —— 无需完整的桌面环境
- 通过 `WM_CLASS` 匹配实现各应用独立的任务栏图标(`/wm-class: |
| **零配置启动** - 首次点击应用时会自动配置好一切:配置文件、容器、桌面快捷方式 - 首次启动时的自动发现功能会扫描正在运行的 Windows 客户机,并使用其真实图标注册所有已安装的应用(支持注册表 App Paths、开始菜单、UWP/MSIX、Chocolatey、Scoop) - 随时可以通过 `winpodx app refresh` 或 GUI 的“刷新”按钮进行手动重新扫描 - 多后端支持:Podman(默认)、Docker、手动 RDP(libvirt 后端在 0.6.0 版本中已被弃用 —— 若要使用你自己的 libvirt 域,请保持在 ≤0.5.x 版本或使用手动后端) |
**外设与共享**
- **剪贴板**:双向复制粘贴(文本 + 图像)—— 默认开启
- **声音**:RDP 音频流传输(`/sound:sys:alsa`)—— 默认开启
- **打印机**:将 Linux 打印机共享给 Windows —— 默认开启
- **主目录**:共享为 `\\tsclient\home`
- **USB 驱动器**:通过 FileSystemWatcher 自动映射到驱动器号(E:、F:、...);对于会话开始后插入的驱动器,其子文件夹也能正常工作;USB 桌面快捷方式(`\\tsclient\media`)始终有效,在未挂载任何设备时会打开一个空文件夹,而不是报错
- **宿主机 USB / PCI 设备直通** (0.6.0):将真实的宿主机设备传入 Windows 客户机 —— 提供 `winpodx device list / attach |
| **自动化与安全性** - 自动挂起 / 恢复:容器在空闲时暂停,在下次启动时恢复 - 登录时自动启动 Pod (v0.5.9,可选择开启):`winpodx autostart on` 会安装一个系统托盘自启动项,使得 Pod 在登录时自动启动/恢复 —— 默认关闭(`autostart off|status`,或通过 GUI 设置中的复选框控制) - UNRESPONSIVE(无响应) → 恢复 (v0.5.5):在出现 `RUNNING → UNRESPONSIVE` 状态时会检测到 RDP 客户机卡顿,并通过客户机内部的 TermService 循环实现自愈,无需执行 `pod restart` - 宿主机自适应的 Windows-on-KVM 调优配置文件 (v0.5.5):包含 `+invtsc`、`platform_tick` 等,受宿主机功能限制 —— `tuning_profile = auto|safe|off` - 密码自动轮换:20 字符的加密密码,7 天轮换周期,支持原子化回滚 - 智能缩放:自动适配 GNOME、KDE、Sway、Hyprland、Cinnamon、xrdb 的 DPI 设置 - Windows 瘦身:默认禁用遥测、广告、Cortana 和搜索索引 - FreeRDP `extra_flags` 白名单(通过正则表达式验证),作为用户输入的安全边界 - 时间同步:在宿主机休眠/唤醒后强制重新同步 Windows 时钟 |
**运维与弹性**
- 多语言界面 (v0.5.9):系统托盘 / GUI / CLI 已完全翻译为 7 种语言(英语 / 韩语 / 中文 / 日语 / 德语 / 法语 / 意大利语),根据 `$LANG` 自动检测 —— 可通过 `winpodx language ` 或 GUI 设置 → “WinPodX UI language”进行覆盖
- Windows 磁盘自动扩容 (v0.5.9):C: 盘在空闲且超过容量阈值时会自动扩容,受限于宿主机可用空间 —— 也可以按需扩容(`winpodx install grow-disk [SIZE]`,`winpodx install disk-usage`,GUI 工具 → 扩容磁盘)
- 客户机同步 (v0.5.9):在宿主机升级后,将更新后的 agent / urlacl / rdprrap / 修复程序推送到正在运行的客户机中 —— 每次 Pod 启动时自动运行一次,或者使用 `winpodx guest sync [--force]`
- 离线 / 内网隔离环境安装(`--source` + `--image-tar`)
- 一键卸载(除非使用 `--purge`,否则保留 Windows 虚拟机数据)
- 通过 `winpodx doctor` 进行健康检查(检查依赖项 / pod / RDP / agent / 磁盘 / 往返连通性 / 密码时效;支持 `--json` 输出供机器读取,`--quick` 执行低开销的子集检查,`--fix` 实现针对常见发现结果的幂等自动修复)
- 重新设计的 Qt6 GUI (0.6.0):左侧采用“开始菜单”风格的导航侧边栏 + 新的**仪表板**主页(包含实时的 Pod / 内存 / CPU 环形仪表盘、磁盘使用情况、自动恢复状态卡片、已固定/最近使用的工作区磁贴,以及反向打开开关);应用启动器现在是“所有应用”页面,旁边是设备 / 设置 / 工具 / 终端 / 信息页面 —— 此外还有更轻量化的系统托盘。内置 SVG 图标集、响应式重排,以及兼具命令栏功能的强大搜索框
- 倾向于使用标准库的 Python(在 3.11+ 上无 pip 依赖;在 3.9 / 3.10 上仅有一个 `tomli` 后备支持)
|
标签:FreeRDP, 可视化界面, 容器, 系统工具, 虚拟化, 请求拦截, 远程桌面, 逆向工具