我有一台很老的上网本Acer AOA150,虽说是上网本,但是基本上已经不能用来上网了,实在是太慢了,但爱折腾的我,还是给它安装了Windwos 10和Arch Linux,但是平常基本上只用Arch Linux,Windows 10用起来实在太慢了。但是一个好好的8.9寸屏幕,不用白不用,可以用来做第二个屏幕也挺好的。其实用synergy来共享鼠标键盘,已经能实现我的基本需求了。但是知道有xdmx这样的方案,能将两个显示器,变成一个桌面,心里痒痒的,总是想能够自己亲手体验一把。 试了很长一段时间,终于知道怎么用xdmx来扩展桌面到另外一台电脑上。可以提前告诉大家结果,这个方案有很多不完善的地方,如果不是非常必要,可以不必尝试了。对于我来说,主要的问题就是gui控件的文字都无法显示。如果你是一个terminal的重度用户,urxvt是可以正常显示的,没有发现能够完美支持xdmx的gui程序。使用xdmx的体验确实很一般,而且对网络要求比较高,需要用网线连接两台电脑,你才能有流畅的体验,还不如用synergy共享鼠标键盘,用wifi就能流畅使用。想用xdmx这样的解决方案,无非就是想无痛地使用主机的各种资源。其实不需要xdmx,X window的设计也是足以让你可以在远程机器上主机上的程序。

1 利用Xserver和synergy无障碍访问主机的资源

synergy是很简单的gui程序,这里就不做说明了。主要是怎么利用Xserver访问主机的资源。 步骤很简单,在主机上的终端运行如下命令,远程主机就有权限访问主机的Xserver。

xhost + $remote_host_ip_address

在远程机器的终端上运行如下命令:

export DISPLAY=$remote_host_ip_address:0.0

emacs就出现在远程机器上,但是你访问的是主机的资源,是不是很爽啊! 说那么多,都快要跑题了。回到文章的主题吧,那是该如何配置xdmx呢?配置方法可以参考Arch Linux的wiki文章Extreme Multihead xdmx是X的代理服务器,它可以把多个系统的显示器当成一个显示器或者一面显示器墙。 建立一个xdmx桌面,包含以下步骤:

  1. 初始化一个空白的,只有默认设置的X Session,支持xdmx窗口管理器之有fvwm和twm。
sudo pacman -S fvwm+
cd ~
git clone https://github.com/wing-ho/fvwm-tiling.git
  1. 在主机上运行xhost + <远程主机IP地址>,添加远程主机访问X resources的权限
  2. 在主机上安装xorg-server-xdmx
  3. 配置登陆管理器,让xserver监听端口6000

如果你没有使用登录管理器,修改配置文件/etc/X11/xinit/xserverrc删除-nolisten tcp选项。 我用slim登陆管理器的,修改它的配置文件/etc/slim.conf

#注释掉这一行
#xserver_arguments -nolisten tcp vt07
xserver_arguments -listen tcp vt07
  1. 修改主机的.xinitrc文件,让主机初始化一个最小的话的X Session
#!/bin/sh
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"
export BROWSER="firefox"
export EDITOR="emacs"
exec fvwm -f /home/wing/.fvwm/blank
  1. 启动一个xdmx Session
cd ~
touch xdmx.sh
chmod +x xdmx.sh

假如远程主机的ip地址为192.168.1.101,xdmx.sh如下:

startx -- /usr/bin/Xdmx :1   -display 127.0.0.1:0 -display 192.168.1.101:0 +xinerama -noglxproxy 
Last Updated 2018-10-14 日 23:38.
Created by Emacs 25.1.1 (Org mode 9.1.14)