Synergy:主机间共享键盘鼠标

警告

Apple Atlas 的系统进化和设备融合能力越来越强,现在2021年,已经可以看到iPad作为sidecar模式,原生支持显示屏扩展。果然原厂开发充分利用了硬件加速能力,完全没有第三方软件的卡顿现象,已经成为非常成熟的生产力工具。并且,2021年推出的iPadOS 15以及macOS Monterey提供了和Synergy完全相同并且更为强劲的多屏幕共享键盘鼠标功能(多屏互动),可以在不同的macOS/iPadOS之间复制和拖放文件图片,共享一套键盘鼠标,所以如果你全系列使用Apple生态软硬件,已经没有必要单独购买Synergy了。

从现在2021年这个时间点来看,Synergy已经接近走到软件生命的尽头,Apple原生内置多屏互动,并且Linux桌面已经进化到Wayland(不兼容Synergy)。Synergy使用范围更为狭窄。

备注

Synergy已经停止开源发展(STL加密通讯功能需要付费),所以社区有人从synergy开源版本 1.9 codebase fork新的项目 Barrier 专注于修复原先 1.9 系列的bug,不过该项目功能有限。详细使用Barrier方法参考 Share your keyboard and mouse between Linux and Raspberry Pi

备注

Synergy是我购买的一款非常有价值的软件:对于类似我这样跨平台工作的人来说,能够无缝在多台电脑(不同操作系统)共享一套键盘鼠标,极大提高了工作效率:

  • 多屏幕显示内容

  • 支持跨系统剪贴板共享:这点非常重要,我需要能够在Linux,macOS,Windows之间剪贴板内容,方便使用不同平台的软件

  • 解决了一些特定商用软件没有Linux版本的缺陷:例如,我在macOS上运行的钉钉(没有Linux版本),我可以一边和同事沟通,一边用我的Linux笔记本ssh登陆服务器维护。而且可以在两个平台之间复制粘贴共享文本内容,基本解决了运维协作问题。

MacBook Pro上运行Ubuntu 之后,我的日常桌面工作在一台MacBook Pro上完成,桌面操作系统是macOS。使用macOS工作可以节约大量的折腾桌面的时间,可以集中精力做开发和运维工作。不过,既然我 MacBook Pro上运行Ubuntu 用来模拟大规模的集群部署,Linux的桌面也运行起来,相当于在办公桌上又多了一块屏幕,不充分利用实在太可惜了。

备注

我尝试过很多种共享屏幕的方法,希望能够提高工作效率,至少多一块屏幕可以同时查看文档、浏览网页,同时开发编程,不需要不断切换窗口,可以节约大量时间。

(这条论点现在废弃了,因为苹果macOS原生已经支持第二屏幕扩展)我试过使用iPad作为第二块屏幕,甚至购买过能耦将macOS的屏幕扩展到iPad上的商用软件,然而,这种通过Lighten线输出屏幕绘制图形窗口非常消耗系统资源,实用性很差。

Synergy工具 是一款通过网络共享键盘和鼠标的软件,跨操作系统平台,这样只需要一套键盘鼠标,可以非常容易在不同的图形界面上操作。这样,我就可以把运行Ubuntu桌面的MacBook Pro架设起来,运行浏览器和阅读PDF,而运行macOS的MacBook Pro作为日常开发和运维工作,不仅方便输入,而且还支持剪贴板操作。

备注

Synergy工具 最初是开源软件,并且现在也在GitHub上提供源代码。不过,作为商用软件销售的版本非常容易使用,作为支持开发者,非常建议购买。

警告

使用Synergy需要注意安全性,请在安全环境使用:你的笔记本是通过网络共享由远程键盘鼠标控制的,所以安全的方法是采用OpenSSH端口转发方式来实现加密通讯。在 Synergy官方 提供的最新版本增加了加密通讯功能,所以更为安全可靠。

推荐购买官方提供的Pro版本,内置了SSL加密通讯。

警告

注意,synergy有一个比较大的缺憾:目前不支持 wayland显示服务器协议 。由于很多发行版已经逐步开始将显示服务器从Xorg切换到wayland,这会导致synergy不能正常工作。

Synergy官方KM I can’t see the cursor on the Linux client computer 介绍了一个变通方法,就是 切换Wayland到Xorg 。不过,这种方法使得显示服务技术倒退,是比较遗憾的解决方法。Synergy官方issue说在下一个版本会支持wayland,但目前没有看到进一步信息。

安装Synergy

  • 在macOS上安装好Synergy,启动后作为Server端(共享出键盘鼠标)

Ubuntu安装Synergy

  • Ubuntu的系统作为Client(提供屏幕)

先安装依赖库:

sudo apt install libavahi-compat-libdnssd1 \
qt5-style-plugins

备注

安装 qt5-style-plugins 是为了在Xfce4桌面集成支持Qt5程序运行,将会安装相应的Qt5核心库程序包。

备注

在Ubuntu官方仓库中提供的Synergy基于Qt4运行 (参考 SynergyHowto );而Synergy官方提供的deb安装包是基于Qt5环境运行。所以上述安装依赖库首先安装Qt5运行库文件。

比较简单的安装Ubuntu环境Qt5软件库是使用:

sudo apt install qt5-default

不过,实际上Xfce4提供了 qt5-style-plugins 来集成Qt5的程序显示,所以单纯要在Xfce4环境运行Qt5程序,例如 Synergy ,只需要安装 qt5-style-plugins 就足够:

sudo apt install qt5-style-plugins

安装下载的deb包:

sudo dpkg -i synergy_1.10.1.stable_b81+8941241e_ubuntu_amd64.deb

Arch安装Synergy

  • Arch Linux也可以通过 Arch Linux AUR 安装 synergy:

    yay -S synergy
    

Raspberry Pi OS安装Synergy

我现在工作桌面使用 树莓派Raspberry Pi 400 ,安装的图形桌面系统是 xfce 。在Synergy官网也提供了针对树莓派ARM版本。

  • 安装下载的软件包:

    dpkg -i synergy_1.13.1-stable.063519a8_raspios_armhf.deb
    

Kali Linux ARM安装Synergy

我在 树莓派Raspberry Pi 400 运行 Kali Linux ,验证可以直接使用 Synergy官网 提供的树莓派64位ARM版本

使用Synergy

  • 在macOS上启动Synergy,此时会提示需要访问 Accessibility 设置,即打开 System Preferences => Security & Privacy 选择 Accessibility ,通过设置允许 Synergy 控制你的电脑。然后启动 Synergy 就可以配置其为 Server 角色,启动程序后,会监听在网卡接口IP上。

  • 在Ubuntu上启动Synergy,选择作为Client,填写 macOS 主机的IP,此时连接上Server会不断被Server拒绝。这是因为在Server上没有配置client的主机名。

  • 回到macOS上,点击状态栏上的Synergy图标的 show 菜单,在管理界面上点击 Configure Server... 按钮,然后点击拖放右上角的电脑图标(代表Client),拖放到部署界面的位置,然后将Client主机的名字设置成和实际相同(例如,我的Ubuntu主机的名字是 xcloud ),完成后点击 Ok 。再次重启 Server端,就可以看到两台服务器建立了连接。

现在可以顺畅使用两台主机,Ubuntu的图形界面就是一块扩展屏幕。

防火墙端口

如果将Linux作为Server共享键盘和鼠标,则需要在Linux上开启防火墙端口24800:

sudo firewall-cmd --zone=public --add-port=24800/tcp
sudo firewall-cmd --runtime-to-permanent