在上研究生之前,自己配了一台电脑。最近马上就研二了,学校也配了一个电脑。于是乎,我就有了两台电脑和两个显示屏。本来可以只靠一个电脑主机和两个显示器就可以正常愉快的玩耍了。但是当我的电脑跑深度学习环境的时候,变得特别卡。于是乎,就有了下面各种神奇的骚操作。
首先,我们梳理下已有的设备:
- 一套鼠标键盘
- 两个显示器:以主显示器和副显示器命名区分两个显示器
- 两个主机:以学校主机(Windows系统)和我的主机(Ubuntu系统)命名区分两个主机
观察到我的主显示器有多个输入,例如DP口、HDMI口、VGA口等。我可以调整主显示器的菜单切换显示源。所以拿一条DP线连接我的主机和主显示器,另一条VGA线连接学校主机和主显示器,最后一根HDMI线连接我的主机和副显示器。当两个电脑都开机的时候,我可以调整主显示器菜单切换两台电脑。
现在,还有一个问题,我只有一套比较好的鼠标键盘,怎么办呢?如果经常切换两台电脑,两套鼠标键盘也不太方便啊。答案是使用Synergy神器。
这个软件在官网是付费的,经过一上午苦苦的搜索,在这里找到了安装包,虽然会提示输入产品密匙,但是你忽略就行了。
下载链接在这,下载对应的deb包,使用gdebi命令安装即可。若直接使用dpkg指令,则无法安装。
1 | sudo gdebi synergy-v1.8.8-stable-Linux-i686.deb |
接着下载windows的msi安装windows版本即可。
我这里,设置了ubuntu为服务端,而windows为客户端,Ubuntu端如下图所示:
而windows端如下图所示:
若此时直接开启服务端和客户端,则提示说WARNING: unrecognised client name "zdaiotLab", check server config
,此时需要在服务器端,点击设置服务端
。在弹出的界面,拖红框中的图标到下方的方格中,如下图所示。
在弹出的框中输入,windows端的屏幕名称(也就是上面无法识别的屏幕名称),如下图所示:
此时,这个问题就解决了。
最后还有一个问题要解决,就是若此时两个屏幕均显示我的主机。此时手动调整主显示器菜单切换显示源,会导致有三个屏幕,从左到右依次为副显示器显示我的主机、主显示器显示我的主机(隐藏)、主显示器显示学校主机。虽然有一个屏幕隐藏了。但是使用Synergy软件的时候,会导致鼠标从副显示器移动到主显示器的时候中间有一段迟疑感觉(因为鼠标要经过主显示器显示我的主机界面,虽然该界面隐藏了)。
这个时候,在Ubuntu下打开Settings->DisPlays
,点击主显示器,例如我这里的主显示器为Dell Inc. 24''
,然后点击下图的红框,将其状态设置为OFF
,点击Apply
即可。
但是,这样有一些不方便,怎么才能通过指令实现这个操作呢?毕竟我们可是在Linux下啊。一番查资料以后,发现可以这么操作:
在终端输入xrandr
指令,查看当前的显示信息。例如下图HDMI-0
为我的副显示器,DP-2
为主线器。
当我们需要关闭Ubuntu的主屏幕扩展时,只需要在终端执行:
1 | xrandr --output DP-2 --off |
此时,调整主屏幕的菜单即可愉快的使用Windows系统了。
当我们需要开启Ubuntu的主屏幕扩展,使用主屏幕显示学校主机,副屏幕显示我的主机。需要在终端执行:
1 | xrandr --output DP-2 --right-of HDMI-0 --auto |
若你的主屏幕在副屏幕的左边的时候,屏幕需要向左扩展,需要执行:
1 | xrandr --output DP-2 --left-of HDMI-0 --auto |
本来教程到这里就结束了,但是呢?这指令这么长又记不住,而且就算记住了,这么长,肯定不方便。这个时候,我们可以在Ubuntu系统下,使用gedit ~/.bashrc
指令打开.bashrc
配置文件,在最后添加下面语句
1 | alias son='xrandr --output DP-2 --right-of HDMI-0 --auto' |
使用source ~/.bashrc
重新激活环境,或者重启终端。这样,我们每次使用son
指令就能打开Ubuntu的主显示器扩展了,同理,使用soff
关闭Ubuntu的主显示器的扩展。
但是这里比较无语的是,因为我的wiznote是wine安装的,若按照上面的方法,打开的时候,软件都会在副显示器打开,让我感觉无语。通过查资料,可以使用下面指令设置我的主显示器为主屏幕。
1 | xrandr --output DP-2 --auto --primary |
通常可以这样更改.bashrc
配置文件:
1 | alias son='xrandr --output DP-2 --right-of HDMI-0 --auto && xrandr --output DP-2 --auto --primary' |