11. X 系统的一天

这是一个关于典型的 GNOME 会话如何在 Linux 系统中的现代桌面环境下运行的示例。 这与其他环境下的工作方式非常相似,假设它们在 X 之上工作。

当 Linux 系统启动 X 时,X 服务器启动并初始化图形设备,等待来自客户端的请求。 首先,一个名为 gnome-session 的程序启动,并设置工作会话。 会话包括我总是打开的应用程序、它们在屏幕上的位置等等。 接下来,面板启动。 面板通常出现在底部,它有点像窗口环境的仪表板。 它允许我们启动程序、查看哪些程序正在运行,以及控制工作环境。 接下来,窗口管理器启动。 由于我们正在使用 GNOME,它可能是几种不同的窗口管理器中的任何一种,但在这种情况下,我们假设我们正在运行 Sawfish。 最后,文件管理器启动(gmc 或 Nautilus)。 文件管理器处理桌面图标(直接出现在桌面上的图标)的呈现。 此时,我的 GNOME 环境已准备好工作。

到目前为止,所有已启动的程序都是客户端,连接到 X 服务器。 在这种情况下,X 服务器恰好在同一台计算机中,但正如我们之前看到的,它不必如此。

我们现在打开一个 xterm 来输入一些命令。 当我们点击 xterm 图标时,面板生成或启动 xterm 应用程序。 它是另一个 X 客户端应用程序,因此它启动,连接到 X 服务器并开始显示其内容。 当 X 服务器为我的 xterm 分配屏幕空间时,它让窗口管理器 (Sawfish) 用漂亮的标题栏装饰窗口,并决定它在屏幕上的位置。

让我们进行一些浏览。 我们点击面板上的 Netscape 图标,然后出现一个浏览器。 请记住,此浏览器不使用 GNOME 的工具,也不使用 Gtk 工具包。 它在这里看起来有点格格不入......而且,它与环境的其余部分交互也不是很好。 我将打开“文件”菜单。 Motif 正在提供屏幕上的控件,因此 Motif 库的工作是调用底层的 Xlib,绘制必要的屏幕元素以显示菜单,并让我选择“退出”选项,关闭应用程序。

现在我打开一个 Gnumeric 电子表格并开始做一些事情。 在某个时候,我需要在我打开的 xterm 上做一些工作,所以我点击它。 Sawfish 看到这一点,并且作为负责管理窗口的窗口管理器,将 xterm 带到顶部并使其获得焦点,以便我可以在那里工作。

之后,我回到我的电子表格,现在我完成了,我想打印我的文档。 Gnumeric 是一个 GNOME 应用程序,因此它可以使用 GNOME 环境提供的工具。 当我打印时,Gnumeric 调用 gnome-print 库,该库实际上与打印机通信并生成我需要的硬拷贝。