认识XWindow 窗口管理器 桌面系统

来源:互联网 发布:2016年网络剧大全 编辑:程序博客网 时间:2024/05/24 00:02
描述 X window, Window Manager(窗口管理器), Desktop(桌面系统)之间的关系, 这类文档是几位熟悉这些概念的人回复一位新手的邮件时的内容. 他们都试图向大家阐述这几个元素之间的系统.
1.   
GUI,window manager,desktop,和interface间的联系 术语 GUI,window manager,desktop,和interface间的区别(如果有的话),它们和Xwindow有什么关系?

在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那里得到它。

2

对 X, GUI 更详细的解释 对 X, GUI 更详细的解释

今天我从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上用的不是很多的主要原因。但是它是否很耗系统资源我就不知道了。我个人不使用它的原因是因为它看上去很傻 :-) 

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

3

对 X, GUI 更详细的解释-2 对 X, GUI 更详细的解释-2

我想我可以花点时间来回答你在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维突起的边,把这段文字放在框里,切顶这个框能够察觉鼠标点击,如果发生了点击,要赶紧去掉3维突起的框,然后再迅速把它画上"。不使用widget集而直接写程序做这个复杂的东西可不是什么好主意。

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

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

    1. 你不得不在你想看到这个程序的同一台机器上运行它。
    2. 如果你不喜欢windows的工作方式,你不能选择另外一个窗口管理器。
    3. 不论怎样设置windows,如果仅有一个你需要的东西没有被做进去,那也是没有办 法。而使用X,你可以使用不同的窗口管理器,桌面,widget集,无论什么。
    4. 通用桌面环境(CDE)怎么样了?它是因为太消耗系统资源或是未开放源码而没有被Linux用户广泛采用吗?

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

希望这些回答能帮助你。

原创粉丝点击