news 2026/9/19 0:23:50

WinApps 实战指南:让 Excel、Photoshop 以独立窗口跑在 Linux 桌面

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
WinApps 实战指南:让 Excel、Photoshop 以独立窗口跑在 Linux 桌面

WinApps 实战指南:让 Excel、Photoshop 以独立窗口跑在 Linux 桌面

【免费下载链接】winappsRun Windows apps such as Microsoft Office/Adobe in Linux (Ubuntu/Fedora) and GNOME/KDE as if they were a part of the native OS, including Nautilus integration. Hard fork of https://github.com/Fmstrat/winapps/项目地址: https://gitcode.com/GitHub_Trending/wina/winapps

需要在 Linux 上用 Excel 打开 .xlsx、用 Photoshop 处理图片,又不想装双系统?WinApps 在本地跑一台 Windows 虚拟机,通过 FreeRDP 把其中应用拉进 Linux 桌面:程序以独立窗口出现在应用菜单,文件可双向访问。

项目速览

WinApps 是一个开源项目(hard fork 自 Fmstrat 的 winapps),让 Microsoft 365、Adobe Creative Cloud 这类 Windows 软件在 KDE Plasma、GNOME、XFCE 桌面上以系统自带程序的方式被调用。原理分两层:底层借 KVM 虚拟化,在 Docker、Podman 或 libvirt 中托管一台 Windows 10/11 虚拟机;上层用 FreeRDP 的 RemoteApp 模式只回传指定程序的窗口,而不是整块远程桌面。

  • 三种后端任选:Docker/Podman 容器自动完成 Windows 安装,libvirt 保留 GPU 直通等自定义空间
  • Linux 主目录对 Windows 呈现为 \tsclient\home,两侧文件互相可写
  • 文件管理器支持右键选 Windows 程序打开文件,按 MIME 类型匹配
  • 枚举注册表中的全部 .exe,理论上限是"装过就能用"
  • 不支持内核级反作弊(如 Riot Vanguard)

最小体验:在 Ubuntu 上用 Docker 跑通第一个 Excel

环境要求:CPU 开启虚拟化(lsmod | grep kvm应能列出 KVM 模块)、Ubuntu 20.04 或 Fedora 34 以上、内存 8GB 起(虚拟机默认 4GB)、约 60GB 空闲磁盘。

  1. 安装依赖,其中 FreeRDP 须为 3 以上版本:
sudo apt install -y curl dialog freerdp3-x11 git iproute2 libnotify-bin netcat-openbsd

装完后执行xfreerdp3 --version,输出 3.x 即满足要求。

  1. 获取项目:
git clone https://gitcode.com/GitHub_Trending/wina/winapps cd winapps

目录内应能看到 compose.yaml 和 setup.sh 两个关键文件。

  1. 修改 compose.yaml 里的 RAM_SIZE、CPU_CORES 与 USERNAME/PASSWORD(默认 4G 内存、4 核、64G 磁盘),然后启动:
docker compose --file ./compose.yaml up

首次启动后,浏览器打开 http://127.0.0.1:8006 进入内置 VNC 页面完成 Windows 设置;版本务必选专业版或企业版,家庭版不提供 RDP 服务。

  1. 创建配置文件并收紧权限:
mkdir -p ~/.config/winapps && nano ~/.config/winapps/winapps.conf chmod 600 ~/.config/winapps/winapps.conf

文件里只需填 RDP_USER、RDP_PASS(与上一步账户一致)和 WAFLAVOR="docker" 三行;chmod 无输出即成功,该文件此后仅本人可读写。

  1. 手动测一次 RDP,确认链路通:
xfreerdp3 /u:"MyWindowsUser" /p:"MyWindowsPassword" /v:127.0.0.1:3389 /cert:tofu

窗口中出现 Windows 桌面即成功,先退出该会话。

  1. 运行安装器:
bash setup.sh

终端向导里先选安装范围(--user 或 --system),再逐个勾选要装的应用;完成后打开应用启动器,搜索 "Excel" 即可找到新入口。

它如何工作:KVM 虚拟机 + FreeRDP RemoteApp 的组合

WinApps 本质是一台带 RDP 服务的 Windows 虚拟机,外加一套生成 Linux 桌面项的脚本。安装时它把 ExtractPrograms.ps1 送进虚拟机执行,枚举注册表登记的全部 .exe 及图标,结果回传后为每个选中的应用生成 .desktop 文件,写入可执行路径与 MIME 类型。点击菜单项时,实际动作是 FreeRDP 以 RemoteApp 模式连上 3389 端口拉起指定程序,只有该程序的窗口被绘制回你的桌面会话,Windows 桌面本身留在虚拟机里。RDP_FLAGS 中的 +home-drive 再把 Linux 用户主目录重定向进会话,Windows 程序读写 \tsclient\home 等价于读写本地文件。

功能深入

窗口集成:从应用菜单与文件管理器拉起 Windows 程序

效果:选中的应用进入启动器的 "WinApps" 分类(分类来自 apps/word/info 等配置的 CATEGORIES 字段),启动后是与原生程序无异的独立窗口,可最小化、可跨工作区拖动。典型场景:在 Nautilus 里右键一份 .docx,选"打开方式"中的 Word,候选列表按文件扩展名匹配 MIME_TYPES 生成。值得注意的细节:浏览器中 ms-word:// 等链接由 ms-office-protocol-handler.desktop 拦截并转给 winapps manual 处理;Office 网页版对 Linux 浏览器会隐藏"在桌面应用中打开"入口,配合 UA 伪装扩展使用更顺。

文件互通:\tsclient\home 双向直达

Linux 主目录整体映射进 Windows 会话,场景很直接:用 Photoshop 打开 ~/Downloads 里的一份 .psd,另存为后文件就落在 Linux 侧原目录。映射由 RDP_FLAGS 默认的 +home-drive 驱动;安装时选 --user 则挂载当前用户主目录。细节:REMOVABLE_MEDIA 默认指向 /run/media,uDisks 挂载的 U 盘、移动硬盘也能以 \tsclient 路径被 Windows 程序直接读写,无需拷贝。

显示与性能:缩放、多显示器与自动暂停

可调参数集中在 winapps.conf:RDP_SCALE 只接受 100/140/180,写了其他值会自动取最近的合法值,4K 屏建议 140 或 180;AUTOPAUSE="on" 配 AUTOPAUSE_TIME(秒,下限 20)可空闲 5 分钟后自动挂起虚拟机省资源;RDP_FLAGS 追加 /network:lan 提升流畅度,异常时再试 /nsc /gfx;多屏加 /multimon,但已知 FreeRDP 缺陷可能黑屏,遇到就回退。细节:最大化窗口位置错乱时,把 HIDEF 设为 off 通常能解决;虚拟机侧资源在 compose.yaml 的 RAM_SIZE/CPU_CORES 调整。

扩展方式:接入未收录的 Windows 应用

任何在虚拟机里装过的 .exe 都能被枚举,不在社区名单里的应用可先用手动模式拉起:

winapps manual "C:\Program Files\SomeApp\app.exe"

程序窗口应在数秒内出现;PATH 内的程序可省略完整路径。要让它常驻应用菜单,复制 apps/ 下任一配置目录,改 info 里的 NAME、WIN_EXECUTABLE、MIME_TYPES、ICON 并放入图标,再执行winapps-setup --user --add-apps走一遍向导。任务栏组件 WinApps-Launcher(packages/winapps-launcher)可单独安装,提供虚拟机开关机与应用清单。

踩坑与解决

  • 现象:RDP 连接报 "CERTIFICATE NAME MISMATCH" 或 "HOST IDENTIFICATION HAS CHANGED"。原因:主机缓存的旧 RDP 密钥与新证书不符,常见于虚拟机重建后。解法:删除 ~/.config/freerdp/server/ 下对应文件(命名如 127.0.0.1_3389.pem),重连并信任新证书。
  • 现象:winapps-setup 提示虚拟机未运行。原因:安装器只负责检测,不会替你开机。解法:libvirt 后端执行virsh start RDPWindows,容器后端执行 docker compose 的 start 子命令。
  • 现象:Debian 12 装不到 freerdp3-x11。原因:FreeRDP 3 未进该版本主仓库。解法:启用 bookworm-backports 源后重装。
  • 现象:rootless podman 报 /dev/kvm 权限不足。原因:用户不在 kvm 组,或运行时用了 runc。解法:sudo usermod -aG kvm $USER后重启,运行时切换为 crun。

排查入口:DEBUG="true" 时每次启动会追加日志到 ~/.local/share/winapps/winapps.log,退出码 13/14/15 分别对应端口、RDP 连接、应用扫描三类失败。

生态与扩展

支持范围不限于内置清单:任何在虚拟机里装过的程序重新扫描后都能接入,社区验证过的 Office 全家桶、Adobe 系列、Visual Studio 2022、SSMS、Visio 等配置集中在 apps/。后端上,Docker/Podman 路线自动化最高,详见 docs/docker.md;libvirt 路线步骤更多,但换来磁盘、网络、GPU 直通级别的自定义,例如在 virt-manager 中给虚拟机分配 CPU 并复制宿主机 CPU 特性:

完整图文步骤见 docs/libvirt.md。Nix 用户可跳过手动安装,仓库自带 flake,安装后直接获得 winapps、winapps-setup、winapps-launcher 三个命令。

WinApps 适合的场景很明确:主力留在 Linux,但有几个绕不开的 Windows 软件要补齐。它解决不了 GPU 敏感的游戏和带内核反作弊的联网应用,也改变不了虚拟机常驻数 GB 内存的事实。把预期放在"按需补齐 Windows 应用"上,它提供了工程上相当完整的落地方案。

【免费下载链接】winappsRun Windows apps such as Microsoft Office/Adobe in Linux (Ubuntu/Fedora) and GNOME/KDE as if they were a part of the native OS, including Nautilus integration. Hard fork of https://github.com/Fmstrat/winapps/项目地址: https://gitcode.com/GitHub_Trending/wina/winapps

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/17 23:31:42

树、森林与二叉树互转全攻略:孩子兄弟表示法核心解析

数据结构里“树、森林、二叉树”这三块内容,我被问得最多的不是遍历,而是“转换”。不少人上课听定义都能听懂,一到手写代码就懵:怎么把一棵普通的多叉树变成二叉树?怎么把一个森林还原成多棵树?这篇不是教…

作者头像 李华
网站建设 2026/9/17 23:31:19

SpringBoot 3.x整合Knife4j实现API文档管理

1. 项目概述作为一名长期使用SpringBoot进行后端开发的工程师,我深知API文档的重要性。在前后端分离的架构中,清晰、准确的接口文档是团队协作的基石。今天要分享的是如何在SpringBoot 3.x项目中整合Knife4j这个强大的API文档工具。Knife4j是基于OpenAPI…

作者头像 李华
网站建设 2026/9/17 23:30:40

Oracle 26ai 在 Linux10 上的静默安装与 AI 功能配置实战

装数据库这事,说难不难,说简单也真容易翻车。这套环境到我手里的时候,机器上已经放好了 Linux10 的系统镜像和 Oracle 26ai 的安装包,版本号看起来挺新,我第一反应是去查一下兼容性文档,确认一下这套组合的…

作者头像 李华
网站建设 2026/9/17 23:29:56

2026年探店类视频生成行业观察与核心要素

探店类视频生成行业是AI内容创作在本地生活场景的垂直分支,2026年已形成覆盖脚本、素材、剪辑全链路的自动化产能。该行业正朝着场景化适配、低门槛操作、多平台分发的方向演进,技术迭代持续拉低内容生产的人力与时间成本。探店类视频生成行业的核心定义…

作者头像 李华