X11中的Display, Screen, Depth和Visual
X窗口系统
X窗口系统诞生于1984年MIT的研究,后来成为Unix, 类UNIX等操作系统所一致适用的标准化软件工具包及显示架构的运作协议。目前使用最普遍最受欢迎的一个实现是X.Org,它所用的协议版本是X11, 所以Xorg也经常被叫做X11。
它们是什么
Display
Display datatype maintaining display specific data. The contents of this structure are implementation dependent. A Display should be treated as oqaque by application code.
Screen
Information about the screen. The contents of this structure are implementation dependent. A Screen should be treated as opaque by application code.
Depth
Depth structure; contains information for each possible depth.
Visual
Visual structure; contains information about colormapping possible.
以上4个结构体都被定义在Xlib.h,它们四者之间的关系是前者包含多个后者,依次类推。这里注意区分两组概念:
Display | DISPLAY | |
---|---|---|
Category | struct | env var |
Usage | Display *dpy as most Xlib API's first argument | e.g. export DISPLAY=:0 |
它们之间的层级关系
graph TD
D[Display]
D --> s0(Screen0)
D --> s1(Screen1)
D --> sN(ScreenN)
subgraph Screen0
s0 --> d0(Depth0)
s0 --> d1(Depth1)
s0 --> d2(Depth2)
s0 --> d3(Depth3)
s0 --> dN(DepthN)
end
subgraph Depth0
d0 --> v0(Visual0)
d0 --> v1(Visual1)
d0 --> v2(Visual2)
d0 --> v3(Visual3)
d0 --> v4(Visual4)
d0 --> v5(Visual5)
d0 --> vN(VisualN)
end
xdpyinfo
xdpyinfo
来自X11的工具包x11-utils
, 它可以打印当前DISPLAY
的Display, Screen, Depth, Visual信息,当然和其它的X的工具一样,使用前要确保环境变量DISPLAY
已经为有效值。下面是在Xorg作为X Server时查看到的系统X11 Window的相关信息。(只截取前面部分)
1 | name of display: :18.0 |