但是,我们将仔细研究底层系统。
7.3.2. X 窗口系统
X Window System 是一种网络透明的窗口系统,可在各种计算机和图形机器上运行。 X Window System 服务器在具有位图显示的计算机上运行。 X 服务器通过各种不同的进程间通信通道将用户输入分发到多个客户端程序并接受来自多个客户端程序的输出请求。 尽管最常见的情况是客户端程序与服务器在同一台机器上运行,但客户端也可以从其他机器(包括具有不同架构和操作系统的机器)透明地运行。 我们将在关于网络和远程应用程序的第 10 章中学习如何做到这一点。
X 支持在单色和彩色显示器上重叠分层子窗口以及文本和图形操作。 使用 X 服务器的 X 客户端程序的数量相当多。 核心 X Consortium 发行版中提供的一些程序包括:
• xterm的: 终端模拟器
• 水牛:一个简约的窗口管理器
• XDM: 显示管理器
• 控制台: 一个控制台重定向程序
• 位图: 位图编辑器
• xauth、xhost 和iceauth:访问控制程序
• xset、xmodmap 和许多其他:用户偏好设置程序
• 时钟: 一个钟
• 字体 和其他:字体显示器,用于列出有关字体、窗口和显示信息的实用程序
• XFS: 字体服务器
•...
我们再次参考这些命令的手册页以获取详细信息。 有关可用功能的更多说明,请参见 Xlib - C 语言 X 接口 X 发行版附带的手册, X 窗口系统协议 X 工具包的各种手册和文档。 这
/usr/share/doc 目录包含对这些文档和许多其他文档的引用。
许多其他实用程序、窗口管理器、游戏、工具包和小工具作为用户贡献的软件包含在 X Consortium 发行版中,或者可以使用 Internet 上的匿名 FTP 获得。 好的起点是 http://www.x.org 和 http://www.xfree.org。
此外,您所有的图形应用程序,例如您的浏览器、电子邮件程序、图像查看程序、声音播放工具等,都是 X 服务器的客户端。 请注意,在正常操作中,即在图形模式下,Linux 上的 X 客户端和 X 服务器运行在同一台机器上。
7.3.2.1. 显示名称
从用户的角度来看,每个 X 服务器都有一个 显示名称 形式如下:
主机:显示编号.屏幕编号
应用程序使用此信息来确定它应该如何连接到 X 服务器以及它应该默认使用哪个屏幕(在具有多个显示器的显示器上):
• 主机:主机名指定显示器物理连接的客户端机器的名称。 如果未给出主机名,则将使用与同一台机器上的服务器进行通信的最有效方式。
• displaynumber:短语“display”通常用于指代共享公共键盘和指针(鼠标、平板电脑等)的显示器的集合。 大多数工作站往往只有一个键盘,因此只有一个显示器。 然而,较大的多用户系统通常有多个显示器,因此可以有多个人同时进行图形工作。 为避免混淆,当启动该显示器的 X 服务器时,机器上的每个显示器都被分配一个显示器编号(从 0 开始)。 显示编号必须始终在显示名称中给出。
• 屏幕编号:某些显示器在两个或多个显示器之间共享一个键盘和指针。 由于每个监视器都有自己的一组窗口,因此每个屏幕都分配有一个屏幕编号(从
0) 当该显示器的 X 服务器启动时。 如果未给出屏幕编号,则将使用屏幕 0。
在 POSIX 系统上,默认显示名称存储在您的 显示屏玻璃制造 环境变量。 这个变量是由自动设置的 xterm的 终端模拟器。 但是,当您登录到网络上的另一台机器时,您可能需要设置 显示屏玻璃制造 用手指向您的显示器,请参阅第 10.4.3.2 节。
更多信息可以在 X 手册页中找到。
7.3.2.2. 窗口和桌面管理器
屏幕上窗口的布局由称为 窗口管理器. 尽管许多窗口管理器会尊重给定的几何规范,但其他人可能会选择忽略它们(例如,要求用户使用指针在屏幕上明确绘制窗口区域)。
由于窗口管理器是常规(尽管复杂)的客户端程序,因此可以构建各种不同的用户界面。 X Consortium 发行版带有一个名为的窗口管理器 水牛,但在系统资源允许的情况下,大多数用户更喜欢更花哨的东西。 Sawfish 和 Enlightenment 是流行的例子,它们允许每个用户根据心情和风格拥有一个桌面。
桌面管理器使用一个或另一个窗口管理器以方便的方式排列图形桌面,包括菜单栏、下拉菜单、信息性消息、时钟、程序管理器、文件管理器等等。 最流行的桌面管理器是 Gnome 和 KDE,它们几乎都可以在任何 Linux 发行版和许多其他 UNIX 系统上运行。
Gnome 中的 KDE 应用程序/KDE 中的 Gnome 应用程序
您无需在 KDE 中启动桌面即可运行 KDE 应用程序。 如果您安装了 KDE 库(kdelibs 包),您可以从 Gnome 菜单运行这些应用程序或从 Gnome 终端启动它们。