本周 Linux 刚刚迎来它的 28
岁生日。自
20 世纪 90 年代初期以来,Linux
桌面也已从简单的窗口管理器发展为成熟、完整的桌面。那么它究竟是如何一步步发展至今的呢?作为从
1993 年就开始使用 Linux 的资深用户,FreeDOS 创始人 Jim Hall
从初代窗口管理器开始,仔细梳理了一遍 Linux 桌面的进化史——

看到这个标题,很多人一定认为桌面环境和窗口管理器是一回事,但严格来说窗口管理器和桌面环境是有区别的。桌面环境Desktop
Environments)是最近发展起来的桌面图形环境,它的主要目标是为Linux/Unix操作系统提供一个更加完善的界面以及大量各类整合工具和应用程序,其简单易用性吸引着大量的新用户,Linux世界最常见的桌面环境就是GNOME和KDE。窗口管理器(WindowManager)是一个可以控制X窗口环境中窗口属性的软件。简单地说窗口管理器管理窗口的外观形式、桌面菜单、图标、虚拟桌面以及按钮样式等一切显示在屏幕上的样式。如果非要用一个词来包括它们,就用“图形环境”吧。
说到最出彩的桌面环境,肯定是 GNOME 和Kde两个了。
GNOME即GNU网络对象模型环境 (The GNU Network Object
ModelEnvironment),GNU计划的一部分,开放源码运动的一个重要组成部分。是一种让使用者容易操作和设定电脑环境的工具。目标是基于自由软件,为Unix或者类Unix操作系统构造一个功能完善、操作简单以及界面友好的桌面环境,他是GNU计划的正式桌面。

 前端时间Gentoo的桌面环境出了点问题,发现自己对Linux的桌面环境了解的很少,于是恶补了一下知识,以下名词解释基本上都是来自维基百科的条目和《Linux程序设计(第三版)》。一般而言,平时的说的桌面环境是指GNOME、KDE、XFCE,而它们都是基于X窗口系统的,X窗口系统是典型的C/S结构,目前最常见的X窗口系统就是Xorg,一般使用的startx,startkde,gnome-session都是启动桌面环境的脚本,它们做的事情包含了模块的检测与加载,以及运行窗口管理器等。

X 和窗口管理器

Linux 上的第一个“桌面”是在 X Window 系统上运行的窗口管理器。X
为图形用户界面提供了基本构建块,例如在屏幕上创建窗口并提供键盘和鼠标输入。要运行
X
图形环境,用户需要一种方法来管理会话中的所有窗口,这就是窗口管理器的用武之地。运行像
xterm 或 xclock 这样的 X 程序,它们就会在窗口中打开。

窗口管理器负责跟踪窗口并执行基本的任务管理,例如移动窗口并最小化。剩下的则取决于个人,你可以在通过将
X 列在 ~/.xinitrc 文件中来启动程序,不过通常,用户会从 xterm
运行新程序。

1993 年最常见的窗口管理器是 TWM,它可以追溯至 1988 年。TWM
非常简单,只提供基本的窗口管理功能。

澳门葡萄京官方网站 1

澳门葡萄京官方网站,▲SLM 1.05 上的 TWM,图中为 xterm、xclock 和 Emacs 编辑器

另一个早期的窗口管理器是 OpenLook 虚拟窗口管理器(OLVWM)。OpenLook 是
Sun Microsystems 在 20 世纪 80
年代开发的图形用户界面,后来也被移植到其他 Unix
平台。作为虚拟窗口管理器,OLVWM 支持多个工作区。

澳门葡萄京官方网站 2

▲SLS 1.05 上的 OLVWM,图为 xterm 和 Virtual Workspaces 选择器

当 Linux
开始普及时,创建一个具有流畅性能和改进界面的新窗口管理器并不需要花费很大力气。这些新窗口管理器中的首个便是
FVWM,一个虚拟窗口管理器。 FVWM 比 TWM 或 OLVWM
更具现代感。当然对于现代人来说,TWM 和 FVWM 可能看起来很平常。

澳门葡萄京官方网站 3

▲SLS 1.05 上的 FVWM,图为 xterm 和文件管理器

当时的 Windows 桌面看起来相当简单。 Windows 版本 1 到 3
使用称为“程序管理器”的普通启动程序。

澳门葡萄京官方网站 4

▲Windows 3.11 上的程序管理器和记事本编辑器

1995 年 8 月,微软发布了 Windows 95 并改变了现代 PC
桌面环境。在当时,Windows 3.x 看起来是笨拙而丑陋的,Windows 95
显然更为流畅好看。更重要的是,Windows 95 改变了人们对桌面的定义。

Windows 95
桌面意味着集成。程序管理器消失了,取而代之的是屏幕底部的任务栏,可以使用更简单的“开始”菜单启动新程序。与之前版本的
Windows 甚至其他 Linux 窗口管理器相比,Windows 95
界面更加灵活且易于使用。

澳门葡萄京官方网站 5

▲Windows 95 上的记事本编辑器

Linux 开发人员不甘示弱,创建了一个模仿 Windows 95 界面的新版
FVWM,并称为
FVWM95。新的窗口管理器仍然不是桌面,但它看起来比以前好得多。用户可以在任务栏中使用“开始”菜单启动新的
X 程序,任务栏还使用类似于 Windows 95 的按钮显示正在运行的程序。

澳门葡萄京官方网站 6

▲Red Hat Linux 5.2 上的 FVWM95

虽然 FVWM95 和其他窗口管理器在不断改进,但核心问题仍然存在:Linux
并没有真正拥有桌面。它只有一系列窗口管理器罢了。

澳门葡萄京官方网站 7

X Window System

首个 Linux 桌面

1996 年,Matthias
Ettrich 希望将所有内容集成在一起,就像一个真正的桌面一样。于是他开始研究
K 桌面环境(KDE),并于 1998 年 7 月完成。KDE 1.0 比 FVWM95
这样的普通窗口管理器有了明显的改进。

澳门葡萄京官方网站 8

▲KDE 1.0

KDE 代表着 Linux 的一大进步,从此 Linux
拥有了真正的桌面应用程序集成和更现代的桌面图标。

KDE 的设计与 Windows 95 相差无几。它在屏幕底部有一个任务栏,提供了相当于
Windows 95 的开始菜单以及几个应用程序的快捷方式。此外,KDE
还支持虚拟桌面。

但并非所有人都对 KDE 感到满意。为了从系统中抽象 GUI,KDE 使用了
Trolltech 的 Qt 工具包库。不幸的是,Qt
没有在免费软件许可下发布。Trolltech 允许 Qt
在免费软件应用程序中免费使用,但在商业或专有应用程序中使用它需要付费。这使
Linux 发行版陷入两难抉择:应该包含 KDE
吗?或者默认使用较旧但免费的软件图形用户界面,如 FVWM?

很快,事情有了新的变化。Miguel de Icaza 和 Federico Mena 于 1997
年开始为新的 Linux 桌面工作。这个新项目被称为 GNOME,用于 GNU
网络对象模型环境。GNOME 旨在成为完全免费的软件,并使用来自 GIMP
图像编辑器的不同工具包,即 GTK(GIMP Tool Kit)。

当 GNOME 1.0 最终在 1999 年发布时,Linux 又拥有了一个现代桌面环境。

澳门葡萄京官方网站 9

▲GNOME 1.0

此后,KDE 与 GNOME 的竞争持续了一段时间。转眼来到 1999 年,Trolltech
根据新的公共许可证——Q 公共许可证(QPL)重新发布了 Qt
库。但新许可证仍然有所限制,QPL 仅适用于 Qt
在开源软件项目中的使用,而非商业项目。因此,自由软件基金会认为 QPL 与
GNU 通用公共许可证(GNU GPL)不兼容。这个许可问题将一直持续到 Trolltech
在 2000 年 GNU GPL 第 2 版下重新发布 Qt 库。

KDE,K桌面环境(K Desktop
Environment)的缩写。一种著名的运行于Linux、Unix以及FreeBSD等操作系统上面自由图形工作环境,整个系统采用的都是TrollTech公司所开发的Qt程序库。KDE和Gnome都是Linux操作系统上最流行的桌面环境系统。

X 窗口系统(X Window
System)简称X或X11,当前最新版本是X11R7。X最早是20世纪80年代由MIT开发的,为当时高端的科学工作站提供统一的窗口系统。20世纪90年代,随着硬件价格的逐渐降低,一些爱好者把X改写后运行于廉价的PC机上,这个项目后来被称为XFree86.X
窗口系统分为硬件级(驱动级)和应用程序级组件,分别称为X Server和X
Client,使用X协议(XDMCP)进行通信,是典型的C/S结构。

随着时间的发展

Linux 桌面继续成熟。 KDE 和 GNOME 进入良性竞争状态,互相推动新的发展。到
2004 年,GNOME 和 KDE 都取得了重大进展,但只对用户界面进行了增量更改。

KDE 2 和 3
继续依赖于屏幕底部的任务栏概念,但包含了用于运行应用程序的按钮。KDE
最明显的变化之一是增加了 Konqueror 浏览器,它最初出现在 KDE 2 中。

澳门葡萄京官方网站 10

▲KDE 2.2.2 (2001)

澳门葡萄京官方网站 11

▲Fedora Core 2 上的 KDE 3.2.2(2004)

GNOME 2
也使用了任务栏概念,但它将栏分成两部分:屏幕顶部用于启动应用程序并响应桌面警报,页面底部显示正在运行的应用程序。除了简化的用户界面外,GNOME
还添加了一个名为 Nautilus 的文件管理器,由 Eazel 开发。

澳门葡萄京官方网站 12

▲Fedora Core 2 上的 GNOME 2.6.0(2004)

随着时间的推移,KDE 和 GNOME
采取了不同的发展路径。两者都提供功能丰富、强大且现代化的桌面环境,但它们具有不同的用户界面目标。2011
年可以说是 GNOME 和 KDE 的分水岭。KDE 4.6(2011 年 1 月)和 KDE
4.7(2011 年 7
月)提供了更为传统的桌面,同时继续依赖许多用户熟悉的任务栏概念。从外观上来看,KDE
并没有什么太大的变化。

澳门葡萄京官方网站 13

▲KDE 4.6

另一边的 GNOME 则在 2011 年通过新的桌面概念完全改变了方向。 GNOME 3
旨在创建更简化的桌面体验,使用户能够专注于他们正在进行的工作。任务栏消失,取而代之的是屏幕顶部的黑色状态栏,其中包括音量和网络控制,显示时间和电池状态,并允许用户通过重新设计的菜单启动新程序。

澳门葡萄京官方网站 14

▲GNOME 3.0

澳门葡萄京官方网站 15

澳门葡萄京官方网站 16

选择合适的桌面

有人喜欢 KDE,有人喜欢 GNOME,选择最适合自己的就好。可以肯定的是,KDE 和
GNOME 都有批评者和支持者。这其中最著名的批评者也许是 Linus
Torvalds,他在 2011 年大声谴责 GNOME 为 “unholy mess”
并放弃了它,两年后却又再度回归。

其他不少人对 GNOME 3 也提出了类似的批评,以至于一些开发人员将 GNOME 2
源代码分叉并创建 MATE 桌面。MATE 继承了 GNOME 2 的传统任务栏界面。

无论如何,毫无疑问,今天最流行的两个 Linux 桌面是 KDE 和
GNOME。它们目前的版本都非常成熟,并且功能丰富。KDE 5.16(2019)和 GNOME
3.32(2019)都试图简化 Linux 桌面体验,不过是以不同的方式。GNOME 3.32
继续瞄准最简洁的外观,删除所有令人分心的用户界面元素,以便用户可以专注于应用程序和工作。而
KDE 5.16
仍旧采用了较为熟悉的任务栏方法,但增加了其他视觉改进,特别是改进了图标和小部件处理。

澳门葡萄京官方网站 17

▲KDE 5.6

澳门葡萄京官方网站 18

▲GNOME 3.32

每个主要的 Linux 发行版都提供兼容性库,因此兼容性不会丢失,用户可以在
GNOME 上运行 KDE 应用程序,反之亦然。

KDE 和 GNOME
之间的良性竞争使两个阵营的开发人员都能够不断突破,这是一件好事。无论你使用的是
KDE 还是 GNOME,你都拥有一个集成度很高的现代化桌面。

最重要的是,这意味着 Linux 拥有自由软件中的最佳功能:选择。

本文译自:opensource.com

再说说其他图形环境,Xfce是一个运行在各类Unix下的轻量级桌面环境,暂且提它一提,它类似于商业图形环境CDE。它的作者是OlivierFourdan。两年以前,OlivierFourdan试图寻找一个快速、友好、高效的Linux桌面,于是XFce就这样诞生了。XFce最先是基于XForms三维图形库,随后又开发了一些后续版本。去年OlivierFourdan将其工作转移到GNOME的核心工具GTK+上。XFce最主要的特色是容易配置,整个过程都可以使用鼠标来完成,而不需要修改配置文件的代码。最新版本的XFce还支持鼠标拖放、系统任务管理、多字节在内的多国语言以及其它特征。
Fluxbox是一个基于GNU/Linux的轻量级图形操作界面,它虽然没有GNOME和KDE那样精美,但由于它的运行对系统资源和配置要求极低,所以它被安装到很多较旧的或是对性能要求较高的机器上,其菜单和相关配置被保存于用户根目录下的.fluxbox目录里,这样使得它的配置极为便利。

X Server

澳门葡萄京官方网站 19

X Server运行在用户的本地机器上,在屏幕上完成低层的绘图操作。因为X
Server直接向显卡发送信号,因此必须使用一个适合本机显卡的X
Server,并配置好合适的分辨率,刷新率,颜色深度等,现在一般在/etc/X11/xorg.conf的文件就是Xorg
Server的配置文件。

Openbox项目是一套完全遵循标准的快速、轻型、可扩展性强的窗口管理器。Openbox3系列是一套全新的窗口管理器,没有继承以前任何一款同类软件的代码,尽管外观上还是很像BlackboxOpenbox2系列的代码是基于Blackbox0.65.0)。Openbox可以作为一个独立的运行环境,同时也可以仅仅作为窗口管理器来替代像KDE、Gnome等桌面环境的默认窗口管理器。
IceWM是一个超小型的轻量级窗口管理器,其主要特点是小和高速,设计之初就考虑了速度、可用性和与系统结合的稳定性;并且也不失灵活配置的特点。优点:1、体积小安装文件仅仅1M多,占用空间6M左右)2、启动快,原始界面类似windowswin95)缺点:1、界面单一,对于喜欢华丽界面的使用者来说,没有必要使用但是最近发布的几个版本已经大为改观了,配合xloadimage、rox-filer等软件还可以美化到媲美Gnome桌面的水平)。2、大部分应用程序必须依赖于Gnome或者是KDE桌面的库文件。

X Server通过鼠标和键盘监听用户的输入,并将键盘按键和鼠标点击传输给X
Client,这些信息叫事件(event),它们构成了GUI编程的一个关键元素。它的逻辑扩展,MFC叫消息,GTK和Qt叫信号。

澳门葡萄京官方网站 20

X Client

再说说FVWM,并不是任何人都会喜欢 FVWM。使用 FVWM 显然不像用
KDE,Gnome的桌面那么简单,你需要自己对它进行配置。它是一个老牌的,长久不衰的窗口管理器,它永远以一个忠实的
Xwindow 窗口管理器的方式工作。使用FVWM,你可以学到很多有关 Xwindow
的东西,你会很快的明白 Xwindow 的工作原理,见识到
Xwindow的强大和灵活。如果你喜欢随意的控制自己窗口,让它们都乖乖听话,而不是老是跳出来挡在你面前。你喜欢随意定制自己窗口样式,喜欢快速高效的控制窗口,喜欢节省资源,……
总之,你是一个挑剔的人。那么 FVWM 就是你最终的选择。

X Client是以X
Window作为GUI的任何程序,如xterm,xcalc和类似Abiword之类的更高级的应用程序,通常情况下,X
Client等待X Server传送的用户事件,然后通过给X
Server发送重绘消息来响应,X Client不需要和X
Server运行在同一台机器上,这就是为什么xterm也能远程使用。

澳门葡萄京官方网站 21

X Protocol

Enlightenment是一个功能强大的窗口管理器,它的目标是使用户轻而易举地配置所见即所得的桌面图形界面。现在Enlightenment的界面已经相当豪华,它拥有像AfterStep一样的可视化时钟以及其它浮华的界面效果,用户不仅可以任意选择边框和动感的声音效果,最有吸引力的是由于它开放的设计思想,每一个用户可以根据自己的爱好,任意地配置窗口的边框、菜单以及屏幕上其它各个部分,而不需要接触源代码,也不需要编译任何程序。
Window
Maker是一个计划为GNUStep应用软件提供额外综合支持的X11窗口管理器。它尽力模拟一流的NeXTSTEP图形用户界面,相对NeXTSTEP图形用户界面,Window
Maker运行速度更快、拥有更多的功能以及易于配置和使用。
AfterStep是一个基于NEXT操作系统的NeXTSTEP而开发的窗口管理器,最初起源于由BoYang所创的BowMan窗口管理器,AfterStep开发者们由最初简单的模仿到力图改进、完善它的功能,决定改变BowMan的名称,于是AfterStep计划诞生了。AfterStep的界面和NEXTSTEP由很多相似之处,但是值得注意的是,AfterStep为了满足不同的用户的需要,而做了大量的改进,NEXTSTEP的界面没有给人一种非常舒适的感觉,所以AfterStep吸取了NEXTSTEP界面的优点,增加了很多有用的特征。

X Client与X Server使用X
Protocol进行通信,使得客户端和服务器能够在网络中分离,实际上是X
Server和X display manager之间使用XDMCP(X Display Manager Control
Protocol)协议进行通信,使用端口为UDP:177。

澳门葡萄京官方网站 22

XFree86

mwmMotifWindow Manager)遵循OSFOpen
SourceFoundation,开放源代码基金会)制定的Motif窗口管理标准,由于Motif采用OS/2操作系统的程序管理器作为其模板,所以所有的窗口特性及快捷键都和OS/2和Windows完全相同。OS/2本是由IBM和Microsoft共同研制开发的,但Microsoft中途退出了合作,自己搞出了Windows,但Windows里的很多东西仍沿用了OS/2的思想)。Motif需要付费才能使用的,在许多商业Unix操作系统中已经提供了mwm。
Blackbox是一个用C++开发的新颖窗口管理器,它没有共享其它窗口管理器的任何代码,设置是图片处理技术的实现都是重新开发的。和其它窗口管理器相比,Blackbox最主要的特色是代码少,运行速度快,Blackbox所有的代码都是由
Brad Hughes
([email protected])
和Jeff Raven
([email protected])两个人开发和维护。由于其紧凑的结构、精练的代码使得Blackbox占有很少的系统资源。

XFree86是X窗口系统的其中一个实现,它主要的运作平台是Unix类操作系统。自1992年,它一直以自由发放的开放源代码模式发展,但是从2004年开始,它再不是以GPL软件许可证的形式出现,而是使用
XFree86®Project 公司所拥有的 XFree86 License version 1.1
软件许可证模式发放。于是XFree86
的开发因软件许可证的变动而出现分岐(这种事情开源界中经常发生。。),而派生出另一个发展自
XFree86 4.4 RC2 版本源代码,名叫 X.Org 服务器的X Window系统。

澳门葡萄京官方网站 23

澳门葡萄京官方网站 24

Sawfish是一个基于Lisp脚本语言开发的可扩展窗口管理器,它并不是构架在twm之上,整个采用了全新的体系结构。用户可以通过修改个人配置文件.sawfishrc中的Lisp代码,或者通过整合的用户定制系统来修改用户配置信息、更改组件和控制用户界面。

Xorg

  1. Linux设备驱动开发详解
  2. 嵌入式系统Linux内核开发实战指南
  3. Linux系统最佳实践工具:命令行技术

X.Org
Server是X窗口系统的参考实现,当前版本是X11R7.5,发布于2009年10月26日。

Environmen…

Xorg实际上应该是X.org Server,X.Org基金会开发的X Server。X.Org是负责X
窗口系统开发的组织,2004年1 月22日在Open Group的X.org网站基础上建立。

X.Org基金会的建立标志着在X的管理上发生了根本性的转变。
从1988年其X的监护人(包括过去的X.Org)—-厂商组织,变成了基金会由软件开发者领导,用集市模式的社区开发,依赖外界参与的模式:成员身份向个人开放,而公司做为赞助者参与。

澳门葡萄京官方网站 25

Xlib

Xlib是X
Client间接用于产生X协议消息的库,它提供一个非常底层的API,允许客户端在X
Server上绘出非常基本的元素,并响应最简单的输入,必须强调,Xlib库是一个非常底层的库,这使得Xlib库创建菜单都是一个相当费力的工程。GUI程序员不能直接调用Xlib编程,而是需要一个API,使得菜单,按钮,下拉式列表等GUI元素能够简单方便的创建,这就是X工具包(X
toolkit)的作用。

X toolkit

X工具包(X
toolkit)是一个GUI库,X客户端用它极大的简化了窗口,菜单,按钮的创建。使用工具包,可以通过函数调用就能创建按钮,菜单,框架以及类的东西,诸如此类的GUI元素统称为窗口部件(widget),所有现在的GUI库都能找到这个术语。历史上流行的工具包主要有Motif,OpenLook和Xt,现在更先进的是GTK+和Qt。

Xdg

Xdg是X Desktop Group的缩写是,freedesktop.org的前身,而freedesktop.org
是一个致力于提高用于Linux和类UnixOS上的自由桌面环境之间的互操作性和共享其基础技术的一个组织。在freedesktop.org下托管的著名项目有:X.org
Server、D-bus、HAL、Direct Rendering
Infrastructure(DRI)、GStreamer、Mesa 3D、GTK-Qt engine

澳门葡萄京官方网站 26

Xdm

Xdm是X Display Manager的缩写,由它来启动X
Window服务器,并管理图形客户端程序的登录、会话(登录成功后开启新的session)、启动窗口管理器等。如果Xdm是在本地运行,它会启动X
Server,就像命令行登录的init,getty和login所做的事情一样;如果Xdm在网络上某台计算机上运行,它的行为就如同一个telnet
server,验证用户名与密码,然后开始一个远程会话(Remote
Session)。KDE和Gnome也提供了自己的xdm的实现,分别叫kdm和gdm。

澳门葡萄京官方网站 27

Window Manager

窗口管理器是在图形用户界面的视窗系统中,控制窗口位置与外观的软件。它是负责管理与定位窗口的移动、最大化、最小化、改变大小以及关闭等工作,简而言之,就是给一个窗口加上最大化,最小化,关闭按钮标题栏和框架。Twm(Tom
Window Manager)就是X.org提供的简单的窗口管理器。

GNOME

GNOME,是GNU网络对象模型环境 (The GNU Network Object Model
Environment)的缩写,这反映了GNOME早期的一个目标,即为Linux引入一个像MS
OLE一样的对象框架,这样就可以在文字处理文档中加入电子表格了(word/excel…)现在,GNOME的设计目标发生了变化,现在的GNOME指的是整个桌面环境,包括一个启动程序的面板,一套程序和实用工具,程序库以及开发者工具。

澳门葡萄京官方网站 28

GTK+

GTK+来自著名的图像处理软件GIMP,是the Gimp
toolkit的缩写,GTK+使用C语言开发,但是其设计者使用面向对象技术(通过使用GObject库)。
也提供了C++(gtkmm)、Perl、Ruby、Java和Python(PyGTK)绑定,其他的绑定有Ada、D、Haskell、PHP和所有的.NET编程语言。

GTK+的界面设计工具是Glade,它包含了一种描述GUI界面的XML语言,它和libglade一起工作就可以直接使用GTK和GNOME控件;新的Glade-3不再直接支持生成编程语言源代码。目前最新版本是GTK+2.

GLib

GLib是GTK+建立的一个可移植到C语言函数库,GLib定义这些类型来帮助跨平台开发,GLib提供了一组数据类型,函数和宏的标准替代集来进行内存管理和处理通用任务,以此帮助跨平台开发。使用GLib几乎是透明的,从本质上讲,Glib附加的数据类型是C语言标准数据类型的替代(为了一致性和可移植性),GLib广泛存在于GTK+中,安装GTK+的时候,GLib也默认安装了。

Gdm

Gome使用的X 显示管理器(X Display Manager)

Metacity

Gnome的默认窗口管理器,之前GNOME陆续使用了Enlightenment和Sawfish作为它的窗口管理器。其他有名的窗口管理器还有:FVWM、Fluxbox

KDE

KDE(K Desktop Environment)是基于Qt
GUI的开源桌面环境,KDE中包含了大量的应用程序和工具,其中包括一整套办公套件,Web浏览器,以及一个功能齐全的KDE/Qt的IDE。现在最新的是KDE4

澳门葡萄京官方网站 29

Kdm

KDE使用的X显示管理器(X Display Manager)

Kwin

KDE使用的窗口管理器