linux X window system
为啥图形窗口接口要称为 X 呢?因为就英文字母来看 X 是在
W(indow) 后面,因此,人们就戏称这一版的窗口接口为 X
,有下一版新窗口之意
X系统由3个相关的部分组合起来的。
服务端(Server)
Server是控制显示器和输入设备(键盘和鼠标)等硬件的软件。
它负责检测具体那个设备有什么动作,如键盘按下、鼠标滑动,但它不能将这些动作转化为绘图数据。
它还负责 设备发出动作以后,到底该如何显示。
客户端(Client)
Client的主要工作是接受服务器传来的动作,将其转化为绘图数据,再将这写数据送去服务端。
Server和Client之间的通信
Server和Client通信的方式大致有两类,对应于X系统的两种基本操作模式。
第一类,Server和Client在同一台机器上执行,它们可以共同使用机器上任何可用的通信方式做互动式信息处理。在这种模式下,X可以同其他传统的视窗系统一样高效工作。
第二类,Client在一台机器上运行,而显示器和Server则在另一台机器上运行。因此两者的信息交换就必须通过彼此都遵守的网络协议进行,最常用的协议为TCP/IP。这种通信方式一般被称为网络透明性,这也几乎是X独一无二的特性。
用windows 远程访问 linux时
windows作为通常的c端,需要装x系统中的 x server。
我们在 Windows
中将鼠标向右移动时,首先,X server 会侦测到鼠标移动,但是他不知道应该怎么绘图!他将鼠标这个动作告知 linux 下的X Client, X
Client 就会去运算,得到其实要将鼠标向右移动几个位素的,然后将这个结果告知 X server , 接下来,您就会看到 X Server
将鼠标向右移动了。
X Window Manager:特殊的 X Client ,负责管理所有的 X client 软件
刚刚前面提到,X
Client 的主要工作是将来自 X Server 的数据处理成为绘图数据,再回传给 X server
而已, 所以 X client 本身是不知道他在
X Server 当中的位置、大小以及其他相关信息的。这也是上面
我们谈到的, X client
彼此不知道对方在屏幕的哪个位置啊!为了克服这个问题,因此就有 Window
Manager (WM, 窗口管理器) 的产生了。 窗口管理器也是 X
client ,只是他主要在负责全部 X client
的控管,还包括提供某些特殊的功能,例如:
提供许多的控制元素,包括任务栏、背景桌面的设定等等;
管理虚拟桌面 (virtual desktop);
提供窗口控制参数,这包括窗口的大小、窗口的重迭显示、窗口的移动、窗口的最小化等等。
我们常常吩到的 KDE, GNOME, XFCE
,都是一些窗口管理器的项目。