最近因为配了一台台式机,但我有只有一副键鼠,因此就希望能够找到一个让键鼠共享的软件,经过一番比较之后我选择了Synergy作为键鼠共享的软件。
Synergy
Synergy(单词”协同作用“)是一款跨平台的键鼠共享软件,可以在多种操作系统上使用,配置非常简单,基本上可以算是开箱即用,没有太多的配置。而且Synergy还支持跨平台复制粘贴,可以直接把在Windows电脑上查找的指令复制到Linux操作系统上,对于我日常的使用来说非常方便。
Synergy-Core是Synergy软件开源的核心组件:Github地址
这里我将接上键鼠的机器成为host机,而通过synergy进行控制的键鼠从机称为client机。
在我将近一个星期的高强度使用下,Synergy在日常办公中是完全可以胜任点击滚动键入等操作,不足的地方有两点:
- 在进行切换屏幕的时候会出现一点小卡顿,但可以接受
- 无法在从机上玩儿需要锁定鼠标的游戏,例如Minecraft(挪动鼠标就原地转圈)
但总体来说还是不错的,而且如果需要玩儿游戏就把键鼠接到运行游戏的电脑上对第二台电脑进行控制就可以解决这个问题。
需求
我的电脑桌上有两台显示器,原来我两台显示器都接到了我的笔记本上,但现在在电脑桌左侧新增了一个主机,而左侧电脑屏幕我就接到了台式机上,屏幕的问题比较好解决,但是键鼠问题就不怎么好解决了。
我虽然有两个键盘,但我只有一个鼠标,同时如果在一个桌面上同时放两套键鼠非常占地方。通常我会在桌面上放surfacego打草稿,如果放两套键鼠就没有足够的空间使用surface。
同时由于我平时查资料更加喜欢使用Windows操作系统,而写代码又更加偏向于使用Fedora系统,因此实际上我是在同时使用两台电脑,而此时如果需要不断在两套键鼠之间反复横跳,对于我的使用体验来说非常不好,因此两套键鼠的方案在我尝试了一天之后就直接放弃了。
在放弃两套键鼠的方案后,我开始寻找跨终端键鼠共用软件,由于我的使用场景下不止需要Windows操作系统间跨电脑,同时也需要Linux和Windows之间能够共享键鼠,因此经过谷歌和筛选后我选择Synergy作为我的跨终端键鼠公用方案。
Synergy使用
Step1.安装Synergy
首先需要买Synergy的LicenseKey,国内可以找荔枝软件,购买后登录账户到Synergy官网在Account界面就可以看到LicenseKey了。然后就可以开始下载软件安装了:
Windows上的安装比较简单,这里就跳过,安装后打开Synergy软件:
首先在Perferences页面把本机的名称改一下,然后按照自己的需求选择权限提升(Elevate privilege):
然后再去另一台电脑上安装Synergy:
这里我使用操作系统是Fedora,因此我下载了Synergy的rpm文件然后直接进行了安装(Fedora可以直接在ApplicationStore里面搜索到Synergy进行安装),打开后和Windows上的界面大同小异:
这里由于我在写博客的时候正在使用Synergy,可能和默认的配置有一点区别,但功能是一样的。
Step2.确定主从机
在选择主从机时我总结出了以下两点:
- 最常用哪个电脑就将键鼠插到哪台电脑上
- 需要在哪台电脑上玩儿游戏就将键鼠插到哪台电脑上
其实也比较简单,因为这样才能避免在Synergy崩溃时主力机上的操作不中断(例如打游戏)。
这里由于我主要是在Fedora操作系统上写代码和调试,因此将Fedora操作系统作为主力机,这里首先将Fedora上面的Synergy打开,并将模式选择为Server模式:
然后在Preferences菜单中对计算机名进行设置:
这里我将我的Fedora台式机计算机名设置为MainComputer-Fedora,而后就可以对从机进行设置了。
在Windows从机上设置Client模式,并将IP设置为Synergy的IP。
同样在Preferences菜单中修改从机的计算机名:
Step3.连接主从机
在从机上点击connect按钮,若机上对主机的IP配置正确,主机上应该会出现下图所示提示,此时选择Accept and Configure就可以连接成功。
Step4.设置屏幕位置
连接成功后还需要在Server端设置一下屏幕所处的位置,打开ConfigureServer菜单:
这里可以看到处于中间的是MainComputer-Fedora,这里的一个显示器就代表一台计算机。而居中的则是主机,其余围在四周的是从机,由于我的屏幕布局是Fedora操作系统所连接屏幕在Windows笔记本屏幕左侧,因此选择将MainLaptop拖拽到右侧。然后点击OK按钮。
此时就可以从对应屏幕边缘切换不同电脑,达到不同电脑共用键鼠的目的。(对于主从机都是Windows的读者来说,到这里就算配置成功了,由于Synergy windows版默认开启的开机启动因此不需要配置)
Step5. Linux 开机启动(未成功)
Synergy Linux 上开机启动需要进行一些配置,官方配置教程中以FedoraCore11为例,这里我们就来尝试一下对Fedora主机进行开机自启的配置。
首先我们需要知道在Linux下,synergy软件启动和执行的实际上是作为客户端的synergyc
和作为服务端的synergys
,下面是我们此次的目标软件synergys
的帮助程序,可以看到其详细配置:
然后我们来看一下synergy软件所启动的synergys进程:
可以看到synergy使用synergys启动了一个服务端,同时我们参考Github上的Synergy文档对于AutoStarting的方法进行以下配置:
这里我根据官方配置中的shell脚本文件进行了部分修改,我将输出重定向到了/var/log/synergy/
文件夹下,但好像可以直接用指令参数确定日志输出。
下方SERIAL_KEY填写激活码。
#!/bin/sh OP=${1} # and synergys will fail and exit, using the IP prevents the problem) SYNERGYS=/usr/bin/synergys PS=/bin/ps GREP=/bin/grep WC=/usr/bin/wc PIDOF=/sbin/pidof SLEEP=/bin/sleep SERIAL_KEY=XXXXXXXXX # check synergys is running function server_check { N=`${PS} -ef | ${GREP} "${SYNERGYS}" | ${GREP} -v "${GREP}" | ${WC} -l` return $N } # kill synergys if running function server_kill { SIG="" while true do server_check if [ $? -eq 1 ] then PIDS=`${PIDOF} "${SYNERGYS}"` if [ ${PIDS} != "" ] then kill ${SIG} ${PIDS} fi else break fi ${SLEEP} 1 SIG="-9" done } # start synergys function server_start { DATE=$(date +%y-%m-%d) touch /var/log/synergy/synergy.latest cat /var/log/synergy/synergy.latest >> /var/log/synergy/synergy.$DATE while true do ${SYNERGYS} -f --debug INFO --name MainComputer-Fedora -c /home/exfluex/.local/share/Synergy/Synergy/LastConfig.cfg --address :24800 --serial-key ${SERIAL_KEY} &>/var/log/synergy/synergy.latest & ${SLEEP} 2 server_check if [ $? -eq 1 ] then break fi done } case "${OP}" in start) server_kill server_start ;; stop) server_kill ;; *) echo "usage: synergys-ctl [start|stop]" exit 1 ;; esac exit 0
我在etc/gdm/Init/Default
添加该脚本的启动代码后,去journalctl查日志并没有发现该文件执行,而后经过资料查询后才发现该文件GDM很早就没有支持了,但每次安装的时候都会留在这里,比较奇怪。我手动执行的时候这个脚本时可以正常运行,也达到我想要的目的。
而后我又尝试在etc/gdm/PreSession/Default
中添加该脚本,但也无法达到效果,但启动后在日志内查询发现显示以下问题,由于我对Gnome桌面GDM不怎么了解,这里就不花费太大精力去查资料了。
这里我只从Synergy-Core仓库的代码中找到了这个Warning所在的位置:
看起来时openServerScreen();
语句出现了问题,但由于我没有写过X11软件,因此这里就不过多深入了。
这里是etc/gdm/PreSession/Default
文件内容,如果需要对这个文件修改一定要记得返回值为0,不然会导致无法登录。
但在配置之后仍然无法在登录界面或登入后自动启动SynergyServer,这里暂时无法实现自动启动,等以后对于XServer及相关知识更加深入理解后再来尝试。
v1.0 wep 完成文章基本内容编写