由于工作的原因,经常会需要带着自己的笔记本到处跑。然后,作为程序员,总是渴望着更多的屏幕。比如一块屏幕用来看视频,一块用来看文档,一块用来写代码,一块用来做测试。这也是我比较喜欢Emacs
和Awesome
这种编辑器和wm的原因。不过,在实际生活中,随时带着一块屏幕出门也不太现实,所以探索一下使用ipad
或android
手机作为副屏的方式。
在这篇文章中,就大致介绍一下VirtScreen
和Deskreen
的使用和特点。
环境
本文使用的环境为,一台ArchLinux + Awesome
,一个ipad
作为移动端,网络使用手机热点。
VirtScreen
VirtScreen
虚拟了一块virtual screen
,可以使用xrandr
直接管理,就和直接外接了一块屏幕一样。
使用方式如下:
以GUI模式运行
virtscreen
在我的环境下,直接运行virtscreen
无法正常打开窗口界面。使用optirun virtscreen
解决。在
Graphics
下设置显示参数
我的ipad
应该是2224*1668
分辨率,virtscreen
最大支持1920×1080
分辨率。不过移动设备一般ppi比较高,将分辨率设置为一半显示效果则刚好。设置完成后
Enable VIRTUAL SCREEN
即可。在
VNC
下设置显示参数
根据需要配置VNC
端口和密码。完成后START VNC SERVER
或勾选Auto
项。如果不勾选Auto
项,VNC连接终止后,VNC Server也自动关闭。移动设备连接VNC
VNC开启后,移动设备使用任意VNC客户端连接即可。这里我使用了VNC Viewer
.配置副屏
这时候应该就可以使用任意配置工具配置屏幕了。我一般通过xrandr
进行配置。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32[spes@Gensoukyo ~]$ xrandr
Screen 0: minimum 8 x 8, current 3032 x 1080, maximum 32767 x 32767
eDP1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 350mm x 190mm
1920x1080 59.93*+ 59.93
1680x1050 59.88
1400x1050 59.98
1600x900 60.00 59.95 59.82
1280x1024 60.02
1400x900 59.96 59.88
1280x960 60.00
1368x768 60.00 59.88 59.85
1280x800 59.81 59.91
1280x720 59.86 60.00 59.74
1024x768 60.00
1024x576 60.00 59.90 59.82
960x540 60.00 59.63 59.82
800x600 60.32 56.25
864x486 60.00 59.92 59.57
640x480 59.94
720x405 59.51 60.00 58.99
640x360 59.84 59.32 60.00
DP1 disconnected (normal left inverted right x axis y axis)
DP2 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
HDMI2 disconnected (normal left inverted right x axis y axis)
VIRTUAL1 connected 1112x834+1920+0 (normal left inverted right x axis y axis) 0mm x 0mm
1112x834_virt 59.95*
VIRTUAL2 disconnected (normal left inverted right x axis y axis)
1112x1080_virt (0x306) 99.250MHz -HSync +VSync
h: width 1112 start 1184 end 1296 total 1480 skew 0 clock 67.06KHz
v: height 1080 start 1083 end 1093 total 1120 clock 59.88Hz
[spes@Gensoukyo ~]$ xrandr --output VIRTUAL1 --right-of eDP1在进行过一次GUI配置以后,
virtscreen
也可以以CLI模式启动,并且指定屏幕位置:virtscreen --right
.
值得一提的是,virtscreen
似乎默认副屏位于主屏左边,如果这时我用xrandr
指定right-of
参数时,显示就会变得很奇怪。
另外要注意的就是,VNC客户端最好开启View Only
模式。最终效果如下:
Deskreen
与VirtScreen
不同,Deskreen使用类似直播的方式进行屏幕分享.
使用方式也非常简单。运行deskreen
,然后使用任意浏览器访问它提供的地址即可。
ipad上查看分享的屏幕和窗口如下:
由于我使用的是AwesomeWM
,在一个tag
下打开了窗口并使用Deskreen
进行共享后,完全可以再切换到另一个tag
下做别的事。所以用这种方式将移动设备作为监控,查看系统或状态、日志等倒是很不错。不过共享的窗口不能最小化,否则就什么都看不到了。
但是这种使用方式不能算真正的‘副屏’。所以可以参考Using xrandr to create a virtual display (Linux)的方式拓展虚拟屏幕并共享。但是在此过程中我还是遇到了一些问题。
首先,我使用的Deskreen
版本是1.0.11-1
。如同上面链接中一样,对于我的机器已经存在的输出方式,如DP
、HDMI
等,就算addmode
或是设置显示方式,这块屏幕仍然会处于disconnected
状态,需要修改xorg.conf
.但是由于之前折腾Nvidia
显卡的经历,目前我还是十分抗拒再去修改这个文件的。然后,对于添加的虚拟输出,如VIRTUAL1
等,Deskreen
却无法识别。
对比和总结
首先由于工作原因,大部分时间我是使用手机热点,所以带宽不是很高,使用这两种方式的时候都出现了不同程度的卡顿和延迟。VirtScreen
的卡顿略微小一点。一方面,感觉Deskreen
的桢率是要高于VirtScreen
的,纵使有延迟,移动设备上的显示也十分顺滑;另一方面,Deskreen
使用WebRTC
的话,带宽要求应该本身就高于VNC
。所以在热点下使用的话,Deskreen
还是不太令人满意。想象一下,自己如丝般顺滑的进行了一系列操作,屏幕上先是静止不动,然后突然象打鸡血一样疯狂操,画面太美不忍直视啊。不过如果是在正常的网络环境,使用普通的路由器,这两种方式都是没有问题的。
然后,Deskreen
的主要问题我认为还是无法识别虚拟输出,导致我无法把它当作一个正常的副屏来使用,顶多算一个监视器。希望以后能修复吧。
VirtScreen
使用VNC
会导致屏幕上出现很多鼠标指针,虽然不影响使用,但是也算略有瑕疵。不过,从另一种角度来看的话,这也是一种特性了 :D