X11 指南/简介
本书,维基教科书 X11 指南,讲述的是X 窗口系统。本书的目标读者是 X11 用户。
X11 是大多数 Unix 或类 Unix 系统的图形环境,包括 *BSD 和 GNU/Linux;它提供对屏幕、键盘和鼠标的访问。X11 是 Unix 和 Linux 的图形驱动程序。你是否在这些系统上使用 Firefox、OpenOffice.org、GNOME、GIMP 或 KDE?那么你就是 X11 用户。
本书讲述的是X 窗口系统。一些用户将它描述为 Unix 和 Linux 的图形驱动程序。
本章将解释 X11 的基础知识,包括
- 为什么有这么多的窗口管理器和桌面环境?
- 什么是控制台,X 如何提供对它的访问?
- X 服务器和 X 客户端的目的是什么?
- 不同的 X 客户端可以进行交互操作吗?
大多数 Unix 和 Linux 发行版都提供命令行和 X 窗口系统。在 Mac OS X 中,“X”是版本号“十”;但是,Apple 和其他各方为 Mac OS X 提供 X11,这允许你同时使用 X11 和原生 Macintosh 窗口系统。
然而,仅仅因为许多系统提供 X 窗口系统,并不意味着它总是看起来一样。一些 X 用户使用 GNOME 桌面环境,一些使用 KDE 桌面环境。一些在使用 GNOME 和 KDE 程序的同时使用 Xfce 桌面环境。这并非所有 *BSD 用户都使用 GNOME,所有 Linux 用户都使用 KDE;相反,*BSD 和 Linux 用户都分为使用 GNOME、使用 KDE、使用其他环境和不运行 X 的用户。
还有一些维基教科书,使用 GNOME 和 使用 KDE,记录了这两个环境。
X 有很多不同的 窗口管理器。大多数窗口周围都有装饰,它们提供了移动、关闭、调整大小和其他组织窗口的功能。但是,这些装饰在每台运行 X 的计算机上都不相同。
窗口管理器是那些绘制这些装饰的程序。大多数窗口管理器会绘制标题栏,但有些不会。一些窗口管理器没有进行任何装饰,但会提供管理窗口的菜单或键盘快捷键。一些窗口管理器允许你叠加窗口、在窗口之间切换以及临时隐藏窗口。
一些窗口管理器比 GNOME 和 KDE 都要老,一些用户仍然更喜欢轻量级窗口管理器,而不是占用更多内存和计算资源的重量级桌面环境。许多 X11 用户运行的是Metacity,GNOME 窗口管理器,或者KWin,KDE 窗口管理器。
X 的非凡之处在于,有许多窗口管理器可供选择。(本书列出了至少 20 个窗口管理器。)作为用户,你可以选择要安装、配置和使用的窗口管理器。你可以拥有自己的自定义环境,除非你无法安装或配置你想要的窗口管理器。
然而,尽管 X 仅允许一个窗口管理器,但它允许多个窗口。与 Mac 或 Windows 不同,X11 不提供标准接口或配色方案,因此每个窗口可能以不同的方式绘制其菜单、滚动条和按钮。至少窗口装饰在每个窗口上都将相同。例如,可以同时在一个 X 服务器上运行 Firefox 和 OpenOffice.org,以及来自 GNOME 和 KDE 的程序,因为每个程序都有自己的窗口或多个窗口。但是,如果你运行的是 Metacity,那么你就不能同时运行 KWin,因为这两个是窗口管理器,而不是桌面环境。
在内部,X 窗口系统有一个特殊的协议——X 协议的第 11 版。此协议的作用是为像 Firefox、OpenOffice.org、Nautilus 和 Konqueror 这样的程序提供控制台访问权限。
每台家用电脑或工作站都有一台控制台,它包含屏幕、鼠标和键盘。事实上,有些控制台有多个屏幕和多个输入设备,例如两个鼠标或一个鼠标和触控板。通常,Unix 内核仅提供一个控制台终端。内核加载一个纯文本视频驱动程序和一个键盘驱动程序,并创建一个纯文本终端,适用于运行命令行(如 Bourne shell)和一些纯文本程序(如 vi 和 NetHack)。
如果我们想绘制图形或使用鼠标,我们必须运行一个知道如何执行此操作的程序。我们启动一个名为X 服务器的 X11 程序。它加载一个图形视频驱动程序、一个键盘驱动程序和一个鼠标驱动程序。然后,X 服务器允许程序创建一个窗口。窗口是一个矩形区域,程序会显示在其中;你可以在窗口中输入和点击。X11 允许程序共享控制台,因为它允许屏幕上有多个窗口。(例如,你可能打开了两个 Firefox 窗口和一个 OpenOffice.org 窗口。)这与 Mac 和 Windows 的功能相同。
当你启动 X 服务器时,它会将屏幕更改为灰色并创建一个鼠标光标。然后它等待。就像一个 Web 服务器等待 Web 浏览器连接,或者一个 SSH 服务器等待远程登录一样,X 服务器等待 X 客户端连接。一个X 客户端是一个程序,例如 Firefox 和 OpenOffice.org,它希望在屏幕上创建一个或多个窗口。
与 Mac 或 Windows 不同,X 服务器可以接受网络连接。当你在一台计算机上使用 X 服务器时,你可以 远程登录 到另一台计算机,然后要求它连接到你的 X 服务器。这让你能够看到并使用其他计算机上的程序,即使这些计算机在不同的操作系统上使用 X。
当一个 X 客户端连接到 X 服务器(在同一台或不同的计算机上)时,它会使用X 协议的第 11 版进行通信。这是客户端告诉服务器要绘制什么,而服务器告诉客户端键盘和鼠标输入是什么的方式。许多 X 客户端永远不需要了解 X 服务器的硬件或操作系统,因为 X 服务器控制着控制台。像 Firefox 和 OpenOffice.org 这样的客户端只需要知道 X 协议。
X11 程序共享剪贴板和字体,但有时它们之间没有太多共同点。这导致了不仅在外观上,而且在功能上的不兼容性:应用程序之间的拖放有时是不可能的,而剪贴板的使用是不一致的。
现在,在 freedesktop.org 和其他地方的努力下,一些不同桌面环境的程序可以协作。桌面环境,如 GNOME 和 KDE,以及一些使用较少的环境,如 Xfce,提供彼此良好协作的应用程序。这些努力的结果包括
- 使用剪贴板的标准规则
- 窗口管理器和应用程序之间的协作
- GNOME、KDE 和其他窗口之间的拖放
- 对 X 服务器的改进