X 的工作方式与任何网络程序的工作方式相同。您有一个运行在特定机器上的某种描述的服务器(在本例中为 X 显示服务器),并且您有 X 客户端(如 firefox)尝试连接到该服务器以显示其信息。
通常(在“家庭”机器上),客户端和服务器在同一个机器上运行,并且只有一台服务器,但 X 足够强大,不需要发生这种情况。它从一开始就内置了服务器/客户端分离。
这使您可以做一些奇妙的事情,例如在地球的中途登录您的盒子(以文本模式),告诉它显示服务器是您当前所在的盒子,瞧,窗户突然启动出现在本地。
为了让客户端与用户交互,它需要知道如何找到服务器。有很多方法可以做到这一点。许多客户端允许使用-display 或--display选项来指定它:
xeyes -display paxbox1.paxco.com:0.0
如果没有明确给出显示,许多人将使用DISPLAY 环境变量。您可以像设置任何其他变量一样设置此变量:
DISPLAY=paxbox1.paxco.com:0.0; export DISPLAY # in .profile
export DISPLAY=paxbox1.paxco.com:0.0 # in your shell
DISPLAY=paxbox1.paxco.com:0.0 firefox & # for that command (shell permitting)
DISPLAY 变量的第一部分只是显示服务器机器的地址。它遵循与任何其他 IP 地址相同的规则;它可以是可解析的 DNS 名称(包括localhost)或特定的 IP 地址(例如 192.168.10.55)。
第二部分是 X 特定的。它给出了要使用的 X“显示”(X 服务器)编号和屏幕编号。第一个(显示编号)通常是指一组包含一个或多个屏幕但只有一个键盘和鼠标的设备(即一个输入流)。屏幕编号通常给出该组中的特定屏幕。
一个例子是:
+----------------------------------------+
|paxbox1.paxco.com| |
+-----------------+ |
| |
| +----------+----+ +----------+----+ |
| |Display :0| | |Display :1| | |
| +----------+ | +----------+ | |
| | | | | |
| | +-----------+ | | | |
| | |Screen :0.0| | | | |
| | +-----------+ | | | |
| | +-----------+ | | | |
| | |Screen :0.1| | | | |
| | +-----------+ | | | |
| | +-----------+ | | +-----------+ | |
| | |Screen :0.2| | | |Screen :1.0| | |
| | +-----------+ | | +-----------+ | |
| | +-----------+ | | +-----------+ | |
| | |Screen :0.3| | | |Screen :1.1| | |
| | +-----------+ | | +-----------+ | |
| | +-----------+ | | +-----------+ | |
| | | Keyboard | | | | Keyboard | | |
| | +-----------+ | | +-----------+ | |
| | +-----------+ | | +-----------+ | |
| | | Mouse | | | | Mouse | | |
| | +-----------+ | | +-----------+ | |
| +---------------+ +---------------+ |
| |
+----------------------------------------+
这里有一台机器 (paxbox1.paxco.com) 和两台显示服务器。第一个有四个屏幕,第二个有两个。那么可能性是:
DISPLAY=paxbox1.paxco.com:0.0
DISPLAY=paxbox1.paxco.com:0.1
DISPLAY=paxbox1.paxco.com:0.2
DISPLAY=paxbox1.paxco.com:0.3
DISPLAY=paxbox1.paxco.com:1.0
DISPLAY=paxbox1.paxco.com:1.1
取决于您希望实际窗口出现的位置以及您要使用的输入设备。