windows+macOS workflow
mac 和 windows 两种系统各有千秋,我全都要!但二者之间的协同工作和开发利用成了难题,搞了很久,留个备忘录方便读者,包括 串流 副屏 文件同步 等操作实现;看完全文,不必完全按照我的设计,你应该很容易发现自己也能够设计各式各样的方案出来。
I 串流 ¶
比较 | sun+moon | parsec | uu remote |
---|---|---|---|
跨 LAN | ❌ | ✔️ | ✔️ |
稳定安全 | ✔️ | ❌ | ❌ |
键盘映射 | ✔️✔️ | ✔️✔️✔️ | ✔️ |
配置复杂度 | ✔️✔️✔️ | ✔️✔️ | ✔️ |
额外功能 | 串流时黑屏 + 结束后锁屏 + 文件传输功能 |
Extra
- 跨 LAN: 可以直接在公网串流,当然通过一些手段使得原本仅 LAN 中使用的方法看起来 可以跨局域网使用,这里不予考虑;
- 稳定安全:取决于是否需要外部服务器,服务器跑路了就用不了,同时屏幕录像都经过了他人服务器,可能泄露隐私(和上一条应当是始终相反的,除非自己部署服务器
) ; - 键盘映射:sun+moon 将
ctrl
与control
相映射,但是实际 mac 中功能上command
更加贴近;parsec 比较好地做到了这一点,与 uu remote 的比较见下文; - 配置复杂度:看后文实际操作便知道了;
- 来源于我的主观感受,仅供参考。
综合上述考虑,我在局域网内(如校园网、企业网)远程控制时主要使用 sun+moon,公网使用 parsec;uu remote 传输文件以及以备不时之需。
I.1 Parsec & UU remote¶
二者原理、功能类似,配置简单,分别可以在 parsec 和网页 UU 远程 中下载,创建账户后,多设备登入同一账户即可,借助其服务器实现公网串流,具体使用不多介绍了,自行探索成本很低,可以参考下面的文章:
串流最重要的是希望沉浸式体验,但是 uu remote 的快捷键映射并不太好,很多时候会优先使用本机(例如我这里是 mac 控制 windows,mac 如果有全局快捷键和 windows 快捷键冲突,使用的是 mac 自己的,我觉得这是不合理的
I.2 Sunshine+Moonlight¶
Quote
Sunshine 和 Moonlight 是一对用于游戏流式传输的开源软件,旨在为用户提供高质量、低延迟的游戏体验。它们的工作原理是将游戏从一台主机传输到另一台设备上,能在局域网或互联网中进行游戏流式播放。
简而言之,sunshine 作为服务端应用,moonlight 作为客户端应用,能够实现在 局域网 内高质量串流 1 。
I.2.1 安装 ¶
分别下载 3 sunshine + moonlight,各自安装打开(sunshine 的打开需要在开始菜单栏,不过有时使用管理员身份打开也是可以的
接下来我们主要需要操作 sunshine 即服务端(打开文档的那个不用管,相信你也没心思看open sunshine
,看到下面的界面:

设置用户密码,一般就本地回环链接,简单点就好,之后改起来也麻烦。
I.2.2 配对 ¶
在 moonlight 中按照介绍是自动寻找局域网内的设备,但至少我是没有成功找到过,所以点击“手动添加计算机”,输入主机 ip 即可发起配对(注意需要在局域网内

Extra
如果自己有域名的话用个三级域名给自己的 windows 地址其实也是不错的,方便记忆;就是不知道有没有安全隐患……
II 副屏 ¶
我的副屏实现原理与串流相似,只不过将针对性串流屏幕从 windows 实际屏幕转变为创建的虚拟屏;对于虚拟屏,我使用了一款开源软件 parsec-vdd(其驱动由 parsec 提供
安装、启动 parsec-vdd,按照你的需求 ADD DISPLAY
,右键对应屏幕可以调整一些参数,建议在分辨率上与主屏幕契合(就是长对长或者宽对宽
抉择串流方式:基于副屏大多在局域网内使用,且使用频率更高,已经为了前面提到的稳定安全,我最终使用 sun+moon (也完全可以自己选择,parse/uu remote 的操作方式非常简单,就是上面各个设备修改多屏幕控制相关设置即可,操作简单
II.1 单副屏 ¶

回到 sunshine 的 "configuration > Audio/Video" 部分,找到 Display Device ID,部分,这里展示的是当前 sunshine 对应的 display device id:

Extra
在我刚开始用 sunshine 时标识(虚拟)显示屏还是使用 display_name
部分,这在 parsec-vdd 上是非常好获取的,这也是起初我使用 parsec-vdd 的原因之一。
如果为空则默认使用主屏幕,也就是我们前面的串流形式;这里也就是需要修改这里的 ID;但是这个 ID 获取确实是一个头痛的方法 4,因为实际上打开 sunshine.exe 后终端很快就没了(如果还有的话就能看到开头有类似这样的输出,前提是已经创建了虚拟屏比较考验手速 ,配对方式同串流。
II.2 多副屏 ¶
后来发现一个神奇的 issue 回复,也就是把软件文件拷贝一份(重命名,例如 sunshine2
需要注意的是需要修改 "Configuration" 中的 "Network" 的端口部分,否则不方便修改 device id (从源文件修改当然也行

喜忧参半的是,打开 sunshine2 中的 sunshine.exe 时,终端不会消失,而是一直运行在后台:好处是能够完整看到 Device ID 了;坏处是终端关闭了进程也被关闭了,有点碍事。
又一次喜忧参半的是:可以用 RBtray 这个软件缩小终端至托盘;坏处是吞了我一个快捷键ctrl + alt + down
5 ,自己选择吧。
串流时需注意,moonlight 添加设备时需要 ip:port
,即需要指定端口了,其余操作相同。
III 同步 ¶
我的笔记有时在 windows 编辑,有时在 macOS 编辑,咋办呢?使用 语雀、飞书 等在线笔记自然是一个不错的解决方法,但是我对 obsidian 这类本地笔记依赖性比较强,所以还是找到了 syncthing 这一同步工具,具体使用同样无需多言,可参考:
IV ssh 连接 ¶
ssh 连接主要是为了写代码;这一点感觉需求很小,虽然捣鼓了不少时间,但是涉及到的东西对没基础读者属实不太友好,工作量略大,先不写了,有需要的话可以留评论催更。
V 其他参考资料 ¶
- https://blog.csdn.net/weixin_46065314/article/details/136428076
- https://github.com/moonlight-stream/moonlight-docs/wiki/Setup-Guide