有没有类似 RDP 的比较好的映射 Win 虚拟机中窗口的解决方案?

如题所示,我正在使用 openSUSE Tumbleweed + KDE wayland,由于 wine 默认的功能较为欠缺(如,输入法残缺,窗口一直抖,中文字体缺失,剪贴板垃圾,各种黑屏等),我只好选择使用 kvm + qemu + libvirt + virt-manager + virtio driver 运行 Windows 虚拟机来跑微信这样的应用。

最近了解到通过 RDP 协议使用 xfreerdp 可以将 Windows 中的单个窗口映射到 KDE 桌面中,于是我通过如下命令进行连接:

xfreerdp /rfx /d:"VM 主机名" /u:"VM 用户名" /p:"VM 密码" /v:"VM 的 IP" +auto-reconnect +home-drive +clipboard /scale:100 /dynamic-resolution /audio-mode:0 /microphone /app:"explorer.exe"

第一眼看起来效果还可以,** 支持音频与麦克风重定向,支持文本与图片的各种复制粘贴,也支持从 Host 直接 ctrl c 文件进入 Guest**(从 Guest 拷贝文件到 Host 需要走共享文件夹):

但是 xfreerdp 似乎存在一些严重的 bug,例如:

  • 经常会出现严重的画面撕裂问题。
  • 每一次打开新窗口都需要重新把所有窗口打开一次(类似 session 重新连接?但原有 session 中的工作不会被重置,只是所有的窗口都会消失再重新出现)。
  • 后台应用(如酷狗音乐等)无法保持 RDP 连接的存续,必须要有一个前台窗口的留存。

wlfreerdp 似乎是 freerdp on wayland 的版本,但是不支持 /app 选项(似乎是因为 wayland 不支持某些机制),因此也就无法达成仅映射单个窗口的效果(而需要映射整个虚拟机桌面)。

那么是否有类似的比较完美的能够映射单个窗口的方案?

1赞

sdl-freerdp?

sdl-freerdp 似乎不支持 /app 选项,只能直接转发整个桌面:

看了一下 FreeRDP 项目的 Github,这个功能所需的 特性 似乎尚未完工

这些问题都是 bug,你有能力就自己解决,顺便给 freerdp 贡献代码
remote app 目前用的人少,所以很多问题没人解决,而且目前只有 xfreerdp 的实现是完成度最高的

没怎么用 rdp,kvm 虚机的话可以尝试 spice 协议,功能强,就是对网络要求稍高,如果本机是宿主机的话就无所谓了。
宿主机带独显的还可以考虑透传 +looking-glass 的方法