在之前的分享中,我们提到Linux下主流的窗口系统是X窗口系统X Window System(以下:简称X)。现有的国产操作系统基本基于Linux开发,因此对X接口的抽象和封装,是合迅智灵国产化C++基础开发套件的图形绘制子系统中最为重要的组成部分。
X窗口系统简介
X的初学者经常惊讶于一个事实,那就是X其实是一个基于服务器-客户端的网络架构。服务端(X Server)负责管理来自客户端(X Client)的连接,处理键盘和鼠标等输入设备的输入,并向客户端返回像素数据作为响应;而客户端则是由一个实际的应用程序组成,而应用程序通过发送请求到服务端,读取服务端的响应,才可以顺利更新自己的界面。这个过程就像是应用程序请求X Server 说“请告诉我现在的样子”,服务端收到这个请求后,通过内置的逻辑进行复杂的计算,最后得到一张图并返回到应用程序,以完成应用程序的界面绘制。
X Window System 架构图(图源:X.org 官网)
事实上,X 的确可以通过网络实现“远程绘制界面”这样的操作。X Server 和 X Client 完全可以运行在不同的机器上,并经由网络协议通信。当然如果它们运行在同一台机器的话,就是你“本机运行 Linux 系统”的情形了。
下面是一些额外的概念:
X11