你看我这个标题它像不像编程随想:-p

    为啥要用 Barrier

    圣诞节前的周五,我们系在线上办了一个聚会。和学姐闲聊的时候,听说他们高年级的几个朋友每周一起联机玩《文明6》,于是一番理(卑)直(躬)气(屈)壮(膝)的要(恳)求之后,成功加入了组织,等到了 steam 的圣诞特惠(没错我一直没买 new frontier pass,我是云玩家),准备以物理学工作者的严谨态度,研究《文明6》诱导的基于回合的反常时间平移对称现象。

    我现在公寓房间的结构如图所示,前任房客走的急,把她的几乎全部家具低价甩卖给我了,四舍五入相当于白捡了一台大电视。电视用 HDMI 线连接电脑,当作第二显示器使用。躺在沙发上,看着大屏幕,玩着文明6,运用自如的话说——“那岂不是非!常!爽!”

    所以说,我的要求是:

    • 在笔记本和台式机处于同一 Wifi 的情况下——
    • 笔记本电脑和台式机之间不需要任何数据线连接
    • 使用 Linux 笔记本上的触控板、鼠标和键盘
    • 控制 Windows 台式机
    • 正常运行和操作《文明6》,不会因为延迟卡顿被人喷(卡顿是不存在的,只可能掉线lol)

    一番搜索之后,锁定了 Barrier 这款软件。它可以设定一个 server 和多个 client,用 server 的输入设备控制各个 client。切换方法也很方便,只要提前约定好各个设备的“相对位置”,当 server 的鼠标光标跨过 server 屏幕的边角处,就开始控制对应方向上的设备。(具体可以查看下一节。)

    之所以选择它,主要原因如下:

    • 开源软件,堂堂正正地不用花钱。(我知道开源软件≠免费软件,但是……)
    • 目前依然有人维护,GutHub 上还有上百个 open issues,当然 closed issues 更多,有问题可以查,提问也有人回答。
    • 跨平台,Windows 和 Linux 都能用。主流 Linux 发行版都可以在仓库里找到,也可以通过 snap 安装。

    如何配置 Barrier

    下载和安装:

    因为我的发行版是 Fedora,在笔记本的 terminal 上任选一句运行:

    
    sudo dnf install barrier
    sudo snap install barrier

    台式机是 Windows 10,在GitHub 项目(链接在此)里找到最新一期的发布版本,找到 .exe 结尾的文件(可以用浏览器的页内搜索),下载,双击下载后的文件安装。

    配置 server (笔记本电脑):

    首先要确定 linux 的桌面环境是基于 xorg 的,当前版本的 GNOME 默认使用的是 Wayland,所以需要 log out 之后重新选择带有 xorg 字样的环境,如下图:

    安装完成之后,在 app 界面(Win+A)应该可以找到 barrier 的图标,单击即运行。一般来说之后会有相当长一段时间电脑没有反应,这个时候 千万不要重复点击图标,会导致无法连接。

    之后会看到软件的主界面,选中图中所示的选项:

    然后单击 configure server 按钮,进入下图的界面,拖动右上角的电脑屏幕图标,拖到中间屏幕周围的任意一格。我选了右边一格,因为这样在笔记本上向右滑鼠标会进入台式机的显示器,从显示器右边框向右会进入电视,一路反过来就回到了笔记本屏幕,操作比较自然。

    双击图标后会弹出一个新窗口,在最上面的 "screen name" 栏填入 client 上显示的本机名称,现在我们还没有配置 client,所以需要等到配置完之后回来填写。

    注意主窗口的左下角,如果不是 “barrier is running” 的话,需要点击右下方的 reload,还是不行的话就要准备 debug 了。

    配置 client (台式机):

    安装完成之后,应该能在开始菜单里找到 barrier 的图标,点击运行,应该会看到和笔记本上面差不多的界面。

    选择图中的选项,填入笔记本窗口中显示的本机 IP 地址,选中 auto config 选项,然后点击右下方的 start,然后窗口左下角同样应该有 "barrier is running" 字样。点击菜单栏里的 -> show log 打开日志,应该可以看到下图里的 "connected to server" 字样。

    几个雷点:

    • Fedora 的显示管理器默认并不使用 xorg,需要专门切换。
    • Linux 上启动较慢,如果不耐烦多点了几次,可能会重复打开多个实例,造成端口被占用,无法使用。
      • 诊断方法:打开 log 界面,会发现 "ERROR: cannot listen for clients: cannot bind address: Address already in use" 字样。
      • 解决方法:杀掉多余的进程,不会杀的话就重启电脑吧。
    • server 和各个 client 对是否使用 SSL 的选择必须是一致的。
    • 官方没有按步骤来的配置说明,这么多雷点,我居然看到好几篇博客都在夸 barrier 的界面多么通俗易懂,简直了。

    Barrier 之外的其他方案

    • synergy:成熟的商业软件,好像要花钱。
    • Microsoft Garage Mouse without Borders:要求所有设备都使用 Windows 系统,不适用于我的笔记本电脑
    • usbip:来自 farseerfc 大神的这篇博文,原文说“设置好的话,就像是一台 PC 多了几个位于树莓派上的 USB 端口,插上树莓派的 USB 设备统统作为 PC 的设备”。
      • Barrier 相比,配置的步骤更繁琐;
      • 好像一次只能控制一台设备(不太懂,如果转发给多个设备的话可能会一起执行相同的操作?);
      • 好像也不适用于非 USB 接口的设备,比如笔记本的原生键盘和触屏笔;
      • 一旦运行起来,server 的鼠标就不再能够控制自己,所以原文使用了几乎注定吃灰的树莓派,相当于给键盘加了个广播天线。

    本文收录于以下合集: