在屏幕上绘制图形 (所以又称为 Display Server),并且负责管理可用的字形与屏幕可用的颜色等系统资源,读取使用者的输入 (来自键盘或鼠标),传送键盘、鼠标事件与窗口状态信息给 X-Client (也就是应用程序)。
X-Server负责和设备打交道,负责具体的管理的显 卡,显示器的显示模式和参数设置(这也是整个X 系统中最复杂的部分)
X-Server还包括最低层的与设备相关的图形库,目 前主要是Xlib
目前的X-Server主要有XFree86和Xorg两个
X-Client
X的服务器端,任何一个X应用程序(文字处理、数 据库应用、网络软件等),包括WM(窗口管理器) 在内都是X-Client
X-Client不负责任何图形相关的具体操作,只和XServer交互,由X-server负责完成其图形显示任务, 这种交互一般来说是通过在底层调用Xlib实现的
X-Client的核心任务是计算和数据处理。更确切的 说是消息处理
X-Client可以运行在本地机器,也可以运行在网络 上的不同主机。
X-Protocol
X-Protocol是X-Server与X-Client之间的通信协议。 从本质上来说,它是一种远程显示协议。
在接触更多X Programming 的信息后,会慢慢体会到它的存在,目前不妨暂时将 X-Protocol 在 XWindow 中所扮演的角色,想象为 HTTP 协议在 Web Server 与 Web Client (Browser) 间所扮演的沟通角色一样。
在 X-Window System 中比较特殊的一点,就是 X-Protocol 允许 X-Server 与 X-Client 能跨网络来交换讯息,这意味着X-Server 与 X-Client 不限制都得在同一台机器上执行,可在不同的计算机上同时执行(网络透明性)。不同机器上的XClient只要显示在当前的X-Server上,他们就具有相似的行为,就服从当前X-Server的统一的风格和工作方式。
Request X-Client向X-Server发送窗口生成,窗口的操作,图形的表示等等要求时使用的消息。另外,各种各样的情报取得时,也会向X-Server发送Request消息。
Reply X-Server接收到X-Client发送的请求后,把必要情报返回给X-Client时发送的消息。发送请求的X-Client在Reply返回前会进入等待状态。(窗口生成和图形表示等要求时不会进入等待状态)
Event X-Server将用户的键盘输入,鼠标操作等事件通知给X-Client时所发送的消息。
Error X-Server发生故障时,把故障通知给X-Client时所发送的消息
X-Window的C/S架构和我们平常看到的很多C/S 架构正好相反,对于大多数的C/S架构,Server 一般都是在网络上提供某种服务的程序,如FTP,HTTP,BBS,Email等服务,而Client则是向这些Server要求服务的程序,比如Browser, Email-Client等。而在 X-Window System 中, X-Client 指的则是可在网络上任何计算机上执行的各种应用程序,它们的执行结果必须传到某个屏幕显示器上,而负责将执行结果显示到屏幕上 与管理各种系统资源的程序,便是 X-Server(一定是运行在使用者自己的计算机上)。我们可以在自己的计算机上激活 X-Server后,再Telnet 联机至其它计算机,将其它计算机上XClient的执行结果传回到自己的屏幕上。当然XServer 一定得在使用者自己的计算机上执行,这样我们才能看到应用程序 (X-Clients) 的执行结果为何。
什么是窗口管理器?很多人不知道窗口管理器是怎么回事。他们认为 Gnome 和 KDE 是窗口管理器,认为窗口管理器就是能够提供一个工具条,能够配置桌面背景,能够设置很多菜单的东西。而其实,窗口管理器只是 Gnome 和 KDE 的一部分,它的主要功能是你平时根本没有注意,但是却非常重要的操作。窗口管理器的主要功能是:移动窗口,改变窗口大小,图标化(最小化)窗口,改变窗口层叠顺序……