Mac与Windows混合开发体验优化

本文约 1300 字,阅读需 3 分钟。

后面的工作中,可能要经常使用Windows开发,而过去一段时间,主要使用iMac开发,个人还是更习惯用iMac作为主力开发设备:

  • 屏幕大且清晰
  • 键盘组合更科学,Windows的Win键比较影响,Mac的Command+Control更习惯
  • Mac的Terminal更好用

一些想法:

  • Mac通过VSCode远程开发在Windows开发,Windows只是编译+调试
  • Windows和Mac最好共用键鼠

对于第一个问题,一开始想着Windows和Mac都在内网,但发现ssh 内网ip是无效的。 如果用网络直连,肯定是可以的,但Mac为了网速,已经占用了网线连接。可能要买个1分2的转换器?觉得太麻烦…… 今天又研究了下,发现Mac有个Thunderblot Brige功能,而自己的HP Z8 Studio也是支持的,而且发电脑时就带了根10Gbps的线,于是用这根线连接了iMac和Windows。

  1. 关于ip:iMac是DHCP分配IP,看起来OK,Windows要手动开启,入口还有点隐晦(也可能是我好久不用),但这个其实不关键,手动/自动都可能,只要IP在合法区段
  2. 结果发现Mac无法ping通Windows,但Windows可能Ping通Mac,容易猜到是防火墙的原因,如下图Part2,开启后就可能Ping通了
  3. 但按照网上的教程,无论怎么配置ssh都会超时,于是直接让防火墙不保护这个连接了(反正是私有网络,而且后面还有其他功能要用,干脆不折腾了)
  4. 另外就是在Windows开启sshd服务,网上教程比较多,就不赘述了
  5. ssh能登录成功,VSCode远程开发就比较好解决了,至此,第一个想法算是落地了

20240807110237

对于第2个想法,简单做法是买一个KVM切换器,研究后发现有些软件也能实现类似的能力,满足我的基本诉求。

最终选用了debauchee/barrier: Open-source KVM software ,GUI比较简单,找到Settings页面和日志显示对于排查问题非常重要。

主要有两个问题,一是从日志看,有如下错误:

[2024-08-06T16:21:20] INFO: starting server
[2024-08-06T16:21:20] INFO: config file: /private/var/folders/05/ysg80n5d4w1c1ht33yzktt480000gn/T/Barrier.ffXjlB
[2024-08-06T16:21:20] INFO: log level: INFO
[2024-08-06T16:21:20] INFO: drag and drop enabled
started server (IPv4/IPv6), waiting for clients
[2024-08-06T16:21:20] INFO: OpenSSL 3.0.0 7 sep 2021
[2024-08-06T16:21:20] ERROR: ssl certificate doesn't exist: /Users/vimerzhao/Library/Application Support/barrier/SSL/Barrier.pem
[2024-08-06T16:21:35] INFO: OpenSSL 3.0.0 7 sep 2021
[2024-08-06T16:21:35] ERROR: ssl certificate doesn't exist: /Users/vimerzhao/Library/Application Support/barrier/SSL/Barrier.pem

可以参考这个Barrier.pem not generated on MacOS install for v2.4.0 · Issue #1609 · debauchee/barrier解决:

cd "/Users/USERNAME/Library/Application Support/barrier/SSL"
openssl req -new -x509 -sha256 -days 999 -nodes -out Barrier.pem -keyout Barrier.pem

我更倾向于直接关闭SSL,第2个问题是Windows作用Client,Mac是不会主动发现并发起连接的,关键是手动添加:在Server(iMac)的配置(不是Setting)中以屏幕名称为唯一ID添加Windows(Client)。

如此之后,iMac的键鼠便可以丝滑地共享给Windows了,但滚动和快捷键好像差点,我理解和物理KVM的差距:

  1. 功能完备性(复杂组合键)、不支持屏幕

但也有优势:

  1. 不用按物理按键切换(之前看别人的需要),能直接用屏幕边缘衔接(这样丝滑很多,其实非常重要)
  2. 不需要额外花钱,更有技术成就感
总阅读量次。