术语 GUI,window manager,desktop 和 interface 间的区别(如果有的话),它们和 X window 有什么关系?

  在 X 的世界里,事物是分成很多组件的,而不象其他的操作系统那样,任何东西都是 OS 的一个部分。这里是一些定义:

  Interface是一个普通术语,意思是指在计算机系统的两个互不依赖的组件间的连结,一个桥。它通常用来指“user interface”(用户界面)就是用户和计算机系统之间联系的部分。

  GUI是另一个普通术语。代表 graphical user interface,图形用户界面。它就想它听起来那么漂亮;它是一个主要是图形组成的用户界面。Mac OS 和 Windows 都是 GUI 的,实际上,现在相当多都用于桌上型电脑。

  在 Mac OS 和 Windows,构件图形界面的功能都做在了操作系统里面,你只能使用那些。这个方法很简单,但是却不灵活。Unix 和类 Unix 的操作系统没有内建这个功能,要使用 GUI 你就不得不使用“windowing system”(窗口系统)。 X就是其中之一 —— 现在看来是唯一的一个。

  X 提供的功能是在屏幕上构造方块(窗口),然后画出里面的元素,它并不支持这些功能:

  a) 移动窗口、改变它们的大小,关闭它们;
  b) 象按钮菜单这样的标准控件;
  c) 为设计用户界面、编程的标准,或程序间的交互操作(例如拖拽或标准帮助系统)。

  Window manager是个可以方你移动窗口和改变它们大小的程序。它通常也支持把一个窗口缩成一个图标或任务条。通常有某种程序执行机构。用户可以使用 window manager 来做他想做的 —— 任何X应用程序应该可以在任何窗口管理器上工作。但是你依次进能运行一个。这就是说,你可以切换于任何多个 window manager,但是同一时刻你进能运行一个。 屏幕上的所有程序都可以被正在运行的 window manager 管理。

  widget 集是一个常规的工具库,程序员使用它来构造象按钮和菜单这样的标准控件(X 程序员叫它们做 widget。一个应用程序使用的 wedget 集是由程序员来选择的,而不是用户。很多人都安装多种 widget 集,这样可以同时运行多个程序员使用不同 widget set 写的程序。

  最后,解释一下 desktop environment,桌面环境。这是一个最新的也最模糊的 X 术语。它基本的意思是指“Mac OS 和 Windows 的图形界面有,而 X 没有却应该有的东西”。通常是一组有着共同外观和操作感的应用程序,和程序库,以及创建新的应用程序的方法。例如,所有的 KDE 应用程序都所以用相同的 widget 集(Qt)和帮助程序,你可以在它们之间拖拽。你同时可以安装多个桌面环境,而且你可以在一个桌面环境中运行另一个不同的桌面环境的应用程序,而不用切换到过去(当然你要安装那个桌面才行)。就是说,如果你使用 GNOME,但是你喜欢 KDE 的字处理器 KLyX,那么你可以运行 KLyX,而不运行任何其他的 KDE 程序,但是它就不能和你那些 GNOME 的程序互相交互了。你甚至可以同时运行 GNOME 和 KDE 的核心程序,事实上这没有什么意义,你会同时有两个文件管理器,两个面板,等等。

  所有的窗口管理器(象 GNOME、KDE 或 FVWM95)都运行在 X Windows 之上吗?

  是的,虽然 GNOME 和 KDE 不是窗口管理器(它们是桌面环境)。KDE 是和一个叫 KWM 的窗口管理器一起的。 GNOME 则没和任何窗口管理器做在一起,你可以使用任何你想用的窗口管理器,虽然有一些是特地为 GNOME 写的(Enlightenment 就是一个)。但是它们都需要X来运行。

  说一个应用软件是基于 GNOME 或 KDE 的到底是什么意思呢?如果它不是,那会怎样?你仍然可以运行它吗?

  这仅意味这它是使用 GNOME 或 KDE 的库写的。意思是:

  1)、程序可能不是同时基于 GNOME 和 KDE 的;
  2)、你不得不安装 GNOME 的库来运行基于 KDE 的软件;
  3)、你可以并行的运行 GNOME 的应用程序和 KDE 的应用程序;
  4)、如果你使用任何一个环境,你总是可以运行非基于该环境的应用程序。

  GTK+(for GNOME) 或 Troll(for KDE) 到底是什么?

  GTK 和 Qt(Qt 是 KDE 使用的 Troll Tech 的产品)都是 widget 集。也就是说,它们提供了按钮,菜单,滚动条和各种各样的对象给程序开发人员使用。注意,非基于 GNOME 或 KDE 的应用程序能够使用 GTK+ 或 Qt,但是所有的 GNOME 程序都使用 GTK+,所有的 KDE 应用程序都使用 Qt。

  Linux(或 UNIX)窗口管理器的历史和 Windows98/95 的用户使用的桌面相比怎么样?特别是,如何评价微软通过给定用户仅仅一种桌面来限制他们的选择,这种桌面据信是一种为方便用户使用而设计的。

  这是一个很复杂的问题,从本质上来讲,Windows 提供了一个由窗口系统、窗口管理器、widget 集和桌面环境共同组成的构造集,因此每个人都只能使用它,而不能选择它们喜欢的。

  通用桌面环境(CDE)怎么样了?它是因为太消耗系统资源或是未开放源码而没有被 Linux 用户广泛采用吗?

  是的,它占用太多的内存。你可以从RedHat那里得到它。


--------------------------------------------------------------------------------

  今天我从 Linux Gazette 上看到了你的邮件,我决定试着回答你的问题。

  是这样的:

  X-Windows 被设计成为一种客户端--服务器(client-server)的系统。这样做的优点是你可以把服务器运行于和你的显示器所在的机器不同的另一台机器上。你需要一个 client。这可能是一个程序或一个窗口管理器。窗口管理器通过要求服务器创建窗口来和它通讯。当服务器接到要求,就会给出一个标题条,然后让应用程序创建它自己的界面。从根本上说,窗口管理器是介于服务器和应用程序之间的,但是它不是必须的。你可以没有窗口管理器而直接在服务器上运行一个应用程序,但是你唯一能做的事就是运行这个指定的应用程序、关闭它,和关闭X服务器(即,不能移动它、改变窗口大小等)。

  GUI 是指图形用户界面,意思是所有呈现在屏幕上的信息都使用窗口、菜单、按钮等来表示,就象是 Windows。所有的都是交互的,界面是建立在这些窗口和按钮之上的。GUI 主要的目的是提供一个统一的系统来表现窗口和收集信息。一个不错的例子是 MS Windows 中的 Alt+F4 这个快捷键,使用这个键,你可以关闭任何在屏幕上的窗口。一个窗口管理器可能是这个系统的一部分。在 KDE 和 CDE 中都是这样。它们共同的特点就是它们拥有自己的窗口管理器,你可以在桌面上得到统一的形式。从根本上说,在桌面上看到的是那些可以运行在某个系统上的应用程序的集合。一个统一的图形用户界面可以有象拖放(drag&Drop)和指点(point&shoot)及把应用程序和某个文件类型关联起来这样的特点。你问的关于基于 GNOME 或 KDE 的问题是这样:一个程序被设计成它是哪个环境下的,那么它就可以和这个环境下的其他应用程序互相通讯。拖放就是个例子。某些程序没有为它们设计的桌面环境确实不能运行,但是有些就可以。举个例子,我使用 KDE 程序,但是我不喜欢他们的窗口管理器,因此我使用 Window Maker,而 Window Maker 不是为 KDE 环境设计的,因此我就不得不损失一些功能不能使用。

  这两个库:GTK+ 和 Qt(你提到的 Troll)是工具包。它们基本的用途是画窗口、按钮和菜单。这些会帮你构造你的界面。如果你象运行一个为某个特殊环境设计的应用程序,比如说 GNOME,你至少需要 GNOME 的库,象 GTK+ 和其他什么。

  正象我前面提到的,X-Windows 系统的 client-server 的设计使用户可以更灵活的选择他们喜欢的窗口管理器。但是基本上,他们象 win95/98 系统做的一样。Win95/98 限制你于一个风格和一样的操作感(look and feel)(虽然你可以改变背景的颜色,但是那还是它),但它并没有给用户尝试其他风格和操作感的自由。很多流行的窗口管理器都允许你定义其他的按键组合。如果你不喜欢 GNOME,你可以使用 KDE,反之亦然。(还有其他几种)

  所有我知道的关于 CDE 的知识就是它是基于 Motif 工具包的(不同于GTK+ 和 Qt)这个工具包不象 GTK+ 那样是 free 的(更恰当的说不是 GPL 的)。我想这可能是它在 Linux 上用的不是很多的主要原因。但是它是否很耗系统资源我就不知道了。我个人不使用它的原因是因为它看上去很傻 :-)

  好了,就这些,我希望这些东西会对你有些用处。如果你有问题,别犹豫 ……


--------------------------------------------------------------------------------

  我想我可以花点时间来回答你在 Linux Gazette 上贴的问题。从你的问题看,我可以告诉你虽然你是个 Linux 新手,但你看到了在界面工作上的一些基本不同。目前我正在 Inter 工作,管理 Unix Cad 工具,我每天都要给那些管理员这解释这些不同,我想你会比他们懂的多了。

  1、术语 GUI,window manager,desktop 和 interface 间的区别(如果有的话),它们和 X window 有什么关系?

  X windows 是一种把东西画在你的屏幕上的办法。所有的 X windows 客户端(画在你面前的部分)都知道如何响应某些命令,例如“画一个绿框”,“画一个点”为客户图象分配内存 …… 这不象你想象的 Windows 那样。 所有的应用程序把这些命令发送到你的客户端。这是通过 tcp/ip,实现的,即使你的应用程序和客户端在同一台机器上也是这样。这点非常重要。在 MS Windows 里首要的设计缺陷就是在窗口系统里缺少网络层。每个 X 应用程序(任何窗口 …… xterm netscape xclock)查看“DISPLAY”这个环境变量来找出它应该让谁画出它自己。如果你的 DISPLAY 被设置成 computer1:0.0 而你在 computer2 上,当你键入“xterm”是它将会在 computer1 的屏幕上弹出来。(如果你的权限许可的话)。这就是为什么在我工作的计算机上,我可以从 HP 的,RS6000 的和 SUN 的 Linux 上开窗口过来。它们可以在一起工作的很好。

  2、所有的窗口管理器(象 GNOME 或 KDE 或 FVWM95)都运行在 X windows 之上吗?

  是的。根据上面说的,你现在应该知道,X 是绘制的那个东西。任何需要画出的东西都要运行在 X 上。

  但是,我们需要把窗口管理器弄的更清楚一些,因为我还没有告诉你这个。在 MS Windows 里, 当一个程序挂起的时候,它会占居你的屏幕,直到你关掉它。这时你通常没有办法移动它或最小化它。这是 windows 设计上的第二个缺陷。每个 MS Windows 的程序都有一些代码来处理标题条、关闭、最大化、最小化按钮。这些代码在一个共享库里,因此你不是必须自己写。但是总有一些在那里。而在 X windows 里程序根本就不知道 它的标题条,或标题条上的按钮。程序仅仅在它需要的时候告诉 X 画出它们。另一个程序,窗口管理器来做这件事。(它管理窗口)窗口管理器负责画出这些标题条和上面的按钮。当你最小化一个窗口或用图标代替它的时候,窗口管理器也负责把这个窗口隐藏起来。程序不能参与这些事。这就意味着即使程序这个挂起了,它仍然是可以移动的,可以被最小化,可以被关闭。(有时不能被关闭,除非你的窗口管理器被设置发送 kill -9)

  KDE 和 GNOME 不是窗口管理器。它们不画标题条、让你可以改变窗口大小或其他的什么。他们只是一个程序,提供按钮条(有些窗口管理器也做这个)和其他元素,告诉程序它们看上去是怎样的。

  3、说一个应用软件是基于 GNOME 或 KDE 的到底是什么意思呢?如果它不是,那会怎样?你仍然可以运行它吗?

  基于 GNOME 的应用程序做象我刚才提到的那些事请。当 GNOME 告诉他们看上去什么样子和他们的行为的时候,它们会注意 GNOME。如果 GNOME 说“你的背景应该是红的”,它们就做个红背景。另外也有一些高级的功能。比如当一个程序问 GNOME 是不是可以有一个拼写检查器时,GNOME 可以提供它一个(看CORBA)。

  4、GTK+ (for GNOME) 或 Troll (for KDE) 到底是什么?

  这是一个叫做 widget 的隐藏的层。它允许你说"画一个按钮“而不是说”画一个方框,再给方框的四边画上看起来3维突起的边,把这段文字放在框里,切顶这个框能够察觉鼠标点击,如果发生了点击,要赶紧去掉三维突起的框,然后再迅速把它画上"。不使用 widget 集而直接写程序做这个复杂的东西可不是什么好主意。

  5.Linux(或UNIX)窗口管理器的历史和 Windows98/95 的用户使用的桌面相比怎么样?特别是,如何评价微软通过给定用户仅仅一种桌面来限制他们的选择,这种桌面据信是一种为方便用户使用而设计的。

  我想你可以从其他的回答中得到这个的答案。真正的限制时:

  1、你不得不在你想看到这个程序的同一台机器上运行它。
  2、如果你不喜欢 windows 的工作方式,你不能选择另外一个窗口管理器。
  3、不论怎样设置 windows,如果仅有一个你需要的东西没有被做进去,那也是没有办法。而使用 X,你可以使用不同的窗口管理器,桌面,widget 集,无论什么。

  6. 通用桌面环境(CDE)怎么样了?它是因为太消耗系统资源或是未开放源码而没有被 Linux 用户广泛采用吗?

  CDE 是为大的 Unix 厂商自己使用的而设计的。它需要重新设计而满足每个人的需要,因此就有 GNOME 和 KDE。

  希望这些回答能帮助你。
本站文章仅代表作者观点,本站仅传递信息,并不表示赞同或反对.转载本站点内容时请注明来自-Linux伊甸园。如不注明,将根据《互联网著作权行政保护办法》追究其相应法律责任。

--------------------next---------------------