前言
X Window System 是一套 Client-Server 体系结构的窗口系统,它是现代Unix 系统 (包括 Linux、FreeBSD etc.) 所必备的图形界面。本文以 programmer 的观点,对 X Window System 的几个重要特征做介绍,让读者在开始撰写 X 应用程序前,先有个清晰的 X 概念: (笔者将假设你已熟悉于 X Window 环境中工作)
What is X Window System
在 1984 年前,有许多商业公司开始为 UNIX 系统开发图形用户接口 (GUI),由于每个公司所发展的图形接口规格不一致,而且所开发的系统大都依赖于各公司所用的计算机系统 (Mainframe、Mini Computer、WorkStation 等),结果各个图形接口不仅无法彼此沟通,要让应用程序能在多个系统上执行,更是一件困难的事;同时由于接口规格不一,程序撰写的方法也会随平台而有所不同,programmer 也因此增加了不少困扰。
一个使用者很容易就能熟悉如 Microsoft Windows 或 Apple Macintosh 等图形接口系统,但对程序员 来说,写 Windows 的程序和写 Machintosh 的程序,其方法与风格是完全不同的两回事 (因为程设接口不一致);再者,这些窗口系统都局限于硬件环境与操作系统制造厂商,可在 Mcrosoft Windows 平台上跑的程序,既无法拿到 Macintosh 上执行,也只限在 PC 环境中使用 (这边所指的是包含了图形接口程序代码的程序)。
有鉴于此,麻省理工学院 (MIT,Massachusetts Institute of Technology) 便在 1984 年开始了 Client-Server 架构的 X Window System 发展计划。X Window 发展的目标,就是『要提供一个与硬件无关、统一的、网络透明的 (Network Transparent) 图形接口环境』,让各种操作系统与计算机硬件都能执行 X Window (与硬件无关),程序设计的方法一致 (统一的),并且能透过网络来分享其它计算机上的 X 资源。
Client-Server 体系结构
图一
X Server 与 X Client
X Window System 是一个 【Client-Server 结构】的图形接口系统。X Client 指的便是各式各样的应用程序 (文书处理、数据库应用、网络软件等),而 X Server 主要在处理来自 X Client applications 的 请求,在屏幕上绘制图形 (所以又称为 Display Server);并且负责管理可用的字形与屏幕可用的颜色等系统资源,读取使用者的输入 (来自键盘或鼠标),传送键盘、鼠标事件与窗口状态信息给 X Client (也就是应用程序)。
X Protocol
在 X Window System 中,X Server 与 X Client 都是透过 X Protocol 来交换讯息,X Protocol 定义了 X Server 与 X Client 间的讯息交换格式。关于 X Protocol,读者在接触更多 X Programming 的信息后,会慢慢体会到它的存在;目前不妨暂时将