8. 桌面环境的出现来解决问题

桌面环境的概念由此应运而生。其理念是,桌面环境提供一套设施和指南,旨在标准化我们提到的所有内容,从而最大限度地减少我们之前提到的问题。

对于初次接触 Linux 的人来说,桌面环境的概念可能比较新鲜,因为其他操作系统(如 Windows 和 Mac OS)本身就内置了桌面环境。例如,MacOS 是最早的图形用户界面之一,在整个计算会话期间提供了非常一致的观感。例如,操作系统提供了许多我们提到的便利功能:它提供了一个默认的文件管理器(Finder),一个系统范围的控制面板,以及一个所有应用程序都必须使用的单一工具包(因此它们看起来都一样)。应用程序窗口由系统管理(严格来说,这里有一个窗口管理器在工作)。最后,还有一套指南,告诉开发人员他们的应用程序应该如何表现,建议控件的外观和位置,并根据系统上其他应用程序的行为提出行为建议。所有这些都是为了保持一致性和易用性。

这就引出了一个问题:“为什么 X 开发者一开始不这样做呢?” 这是有道理的;毕竟,这将避免我们之前提到的所有问题。答案是,在设计 X 时,其创建者选择使其尽可能灵活。回到策略/机制的范式,MacOS 主要提供策略。机制是存在的,但它们不鼓励人们去摆弄这些机制。结果,我失去了通用性;如果我不喜欢 MacOS 管理窗口的方式,或者工具包没有提供我需要的功能,我就几乎无能为力了。这种情况不会在 X 下发生,尽管如前所述,灵活性的代价是更高的复杂性。

在 Linux/Unix 和 X 系统下,一切都归结为就某些东西达成一致并坚持下去。以 KDE 为例。KDE 包含一个单一的窗口管理器(kwm),它管理和控制我们窗口的行为。它建议使用特定的图形工具包(Qt),以便所有 KDE 应用程序看起来都一样,至少在屏幕控件方面是这样。KDE 通过提供一组特定于环境的库(kdelibs)进一步扩展了 Qt,用于执行常见任务,例如创建菜单、“关于”框、程序工具栏、程序间通信、打印、选择文件以及其他操作。这些库使程序员的工作更轻松,并标准化了这些特殊功能的行为方式。KDE 还为程序员提供了一套设计和行为指南,其理念是,如果每个人都遵循这些指南,那么在 KDE 下运行的程序在外观和行为上都会非常相似。最后,KDE 作为环境的一部分,还提供了一个启动器面板(kpanel)、一个标准文件管理器(目前是 Konqueror)和一个配置实用程序(控制面板),我们可以从中控制计算环境的许多方面,从桌面背景和窗口标题栏颜色等设置到硬件配置。

KDE 面板相当于 MS Windows 任务栏。它提供了一个中心点来启动应用程序,并且还允许在其中显示称为“applets”的小型应用程序。这提供了诸如大多数用户离不开的小型实时时钟之类的功能。