肯定有很多小伙伴日常是把 Linux 当主力系统的,写代码、搭环境都超爽。
但遇到要打开 .docx高级格式、用 Visio 画流程图、或者客户发来必须用 Adobe 打开的文件时……就尴尬了。
双系统?来回切换太麻烦。开虚拟机?资源吃掉一大半,体验还割裂。用 Wine?配置复杂不说,兼容性还得看运气。
最近在Github上发现一个叫WinApps的项目,不模拟、不兼容层,直接跑一份真实的 Windows,像原生应用一般。
项目简介
winapps是一个在 GitHub 上已收获 15.3k Star 的开源项目。
它可以让你在 Linux 上运行 Windows 应用,让它们看起来和用起来,跟原生 Linux 应用没什么两样。
它的原理并不神秘——在底层用 Docker、Podman 或 libvirt 跑一个 Windows 虚拟机,然后通过 FreeRDP 把 Windows 应用的窗口"投影"到 Linux 桌面上。
跟 Wine 不同,winapps 跑的是真正的 Windows,兼容性有保障。跟传统虚拟机不同,你不需要每次都打开 Windows 桌面,应用窗口直接融入你的 Linux 工作区,混在一起都看不出区别。
支持 GNOME、KDE Plasma、XFCE 等主流桌面环境,主流发行版(Ubuntu、Fedora、Arch、openSUSE、Gentoo)均有覆盖。
功能特色
- 真正的"原生感"集成
Windows 应用打开后就是一个普通窗口,跟你的 Linux 原生应用并排摆在任务栏里,可以正常切换、拖拽、最大化,完全没有虚拟机的割裂感,第一次看到的时候确实有点震惊。
- 支持全部 Windows 应用,不只是 Office

winapps 理论上支持所有 Windows 程序,包括注册表里能检测到的任意 .exe 文件。官方社区已预配置并测试了一大批常用应用,涵盖 Microsoft 365 全家桶、Adobe Creative Cloud、Affinity 系列,以及命令提示符、PowerShell 等。只要 Windows 上能跑的,基本都可以尝试。
- Linux 的 Home 目录自动挂载到 Windows
安装好之后,Linux 的 /home 目录会自动挂载到 Windows 虚拟机里(路径是 \\tsclient\home),两个系统之间的文件共享变得非常顺手,不需要搞什么共享文件夹。
- 系统托盘轻松管理 VM
官方配套提供了一个轻量小工具 WinApps Launcher,常驻系统托盘,可以一键启动、暂停、重启或休眠 Windows 虚拟机,也可以直接从托盘列表里点开某个 Windows 应用,整体体验相当顺畅。
- Office 链接自动跳转
Linux 浏览器里点击 ms-word:// 这类 Office 协议链接,会自动唤起 Windows 虚拟机里对应的 Office 应用,跟 Windows 系统上的体验基本一致。
快速安装、使用
整个安装分五步,按顺序来就行。
第一步:创建 Windows 虚拟机
推荐用 Docker 或 Podman,配置最简单,项目提供了现成的 compose.yaml,跑起来基本是自动化的。如果你已经有现成的 Windows VM 或 RDP 服务器,也可以直接复用。
第二步:安装依赖
以 Ubuntu/Debian 为例:
sudo apt install -y curl dialog freerdp3-x11 git iproute2 libnotify-bin netcat-openbsdFedora、Arch、openSUSE、Gentoo 各有对应命令,项目文档里都有,照着来就行。注意 winapps 需要 FreeRDP 3 或更高版本。
第三步:创建配置文件
在 ~/.config/winapps/winapps.conf 里填写 Windows 用户名、密码和 IP 地址,还可以配置分辨率缩放、RDP 端口、自动暂停等选项。配置文件都有详细注释,不难看懂。
第四步:测试 FreeRDP 连接
先手动测一下 RDP 能不能连上,确认连接正常再往下走:
xfreerdp3 /u:"用户名" /p:"密码" /v:127.0.0.1:3389 /cert:tofu如果 Windows 桌面出来了,说明配置没问题。
第五步:运行安装脚本
保持 Windows 虚拟机开着,执行这一行:
bash <(curl https://raw.githubusercontent.com/winapps-org/winapps/main/setup.sh)
安装程序会扫描 Windows 里已安装的应用,自动在 Linux 桌面上创建对应的快捷方式,之后就可以直接点图标打开 Windows 应用了。
如果有没被自动识别的应用,也可以手动运行:
winapps manual "C:\path\to\app.exe"需要特别提醒的是:配置文件里存着 Windows 的账号和密码,一定要设置好权限保护:
chown $(whoami):$(whoami) ~/.config/winapps/winapps.confchmod 600 ~/.config/winapps/winapps.conf另外,RDP 用户名和密码必须是完整的 Windows 账户,PIN 码登录是不支持 RDP 的。
开源君想说
对于长期使用 Linux 桌面又偶尔离不开 Windows 软件的用户来说,winapps是目前我见过的整合度较高的解决方案之一。不用装双系统,不用赌 Wine 的兼容性,直接用真实的 Windows 应用,体验稳定,社区也一直在维护。
更多细节功能,感兴趣的可以到项目地址查看:
https://github.com/winapps-org/winapps