技术扫盲区:X 窗口系统
一:背景介绍 图形界面一直是Linux用户头疼的问题,出了问题往往一片茫然,大多重装了事。本文试图从宏观的角度剖析一下X系统的简要原理,只有理解了原理才能在解 决问题时有的放矢。 首先,要搞清楚X系统的构成。平时称呼的X图形界面,实际上是由几个重要部分构成的。它们分别是: 1、X Server (Xorg) 2、Display Manager (gdm, k
·
一:背景介绍
图形界面一直是Linux用户头疼的问题,出了问题往往一片茫然,大多重装了事。本文试图从宏观的角度剖析一下X系统的简要原理,只有理解了原理才能在解 决问题时有的放矢。
首先,要搞清楚X系统的构成。平时称呼的X图形界面,实际上是由几个重要部分构成的。它们分别是:
1、X Server (Xorg)
2、Display Manager (gdm, kdm, xdm)
3、Window Manager (metacity, fluxbox, E17, fvwm etc.)
4、X Client (其他各种图形应用程序,如natulis文件管理器)
以及几个重要概念:
1、X session:
X server启动到X server关闭之间的时间段
2、X库:
GUI程序使用的库函数,如GTK+和QT
下 面我们就这几个重要构成的作用、相互关系进行展开,向你展示X的运行原理。
二:原理介绍
1、X Server
X Server,译作X服务器,是X的核心。X Server是用来驱动硬件,提供基本的图形显示能力的。合理但并不十分科学的你可以把它看作视频卡的驱动程序。只有运行了X Server的Linux系统,X Client才能利用X Server绘出相应的图像。
X Server早期使用的是XFree86,自4.4版本后,XFree86改用GPL发布,此后开始称为Xorg。X Server部分,主要关注两点:
1.1 xorg.conf
xorg.conf是X Server的主要配置文件,它包含一个当前系统的硬件资源列表。X Server就是根据这些硬件资源“组织”出基本的图形能力。xorg.conf文件在/etc/X11/xorg.conf,主要包含几个字段:
************************************************************
Files: X系统使用的字体存放目录(字体的具体使用由FontConfig工具主持)
InputDevice: 输入设备,如键盘鼠标的信息
Monitor: 显示器的设置,如分辨率,刷新率等
Device: 显示卡信息
Screen: 由Monitor和Device组装成一个Screen,表示由它们向这个Screen提供输出能力
ServerLayout: 将一个Screen和InputDevice组装成一个ServerLayout
************************************************************
在具有多个显示设备的系统中,可能有多个Screen和多个ServerLayout,用以实现不同的硬件搭配。
在最近的xorg版本中,X Server已经开始自动侦测硬件,现在的xorg.conf已经都成了默认名称。具体细节还待查,但基本原理还是不变的。
1.2 X session(X会话)
前面已经说过,X session是指X server启动后直到X server关闭之间的这段时间。这期间一切跟X相关的动作都属于X session的内容。
管理X session的程序称为Display Manager,常听说的 gdm 或 kdm 就是 gnome/kde 所分别对应的 Display Manager。
开启一个X session,也就是开始了图形界面的使用。在开启的过程中,Display Manager会对用户进行认证(也就是用户名密码的输入),运行事先设置好的程序(比如scim输入法就是这个时候启动的)等等。
这个开启过程要执行的一系列操作都可以在 /etc/X11/Xseesion 以及 /etc/X11/Xsession.d/ 目录下看到,其他还有一些配置文件如Xsession.options, Xresource等,都是执行的X session的初始化过程。仔细阅读这些脚本或配置文件,可以帮助你更好地理解X。
2、Display Manager
上面说过,Display Manager(后简称DM)是管理X session的程序,常见的有gdm, kdm, xdm等。对于默认进入X界面的Linux系统,必须将DM程序在开机时执行,即:/etc/rc2.d/S13gdm。下面我们从手工启动X的过程,看 一下DM为我们做了哪些工作。
如果没有设置DM在开机时运行的话,手动启动X使用startx命令。
man startx
可以知道,startx的作用可以看作是Display Manager的一种隐性实现。它使用xinit命令,分别根据 /etc/X11/xinit/xinitrc 和 /etc/X11/xinit/xserverrc 中所指定的设置唤起X。
其中,xserverrc执行X server的运行任务;xinitrc则运行Xsession命令。从 /etc/X11/Xsession 脚本的内容可以看出,它也就是进入 /etc /X11/Xsession.d/ 目录轮询地执行所有脚本。很明显,这些也就是前面所说的Xsession初始化工作。
综合起来说,Display Manager完成三个任务:
2.1 X Server的启动;
2.2 X session的初始化;
2.3 X session的管理。
3、Window Manager
X Server提供了基本的图形显示能力。然而具体怎么绘制应用程序的界面,却是要由应用程序自己解决的。而Window Manager(桌面管理器,后简称WM)就是用来提供统一的GUI组件的(窗口、外框、菜单、按钮等)。否则,应用程序们各自为政,既增加了程序开发的 负担,不统一的桌面风格对视觉也是不小的挑战。
WM的启动由DM控制,在gdm的登录窗口,我们可以进行选择。常见的WM有:Metacity(Gnome默认的WM), fluxbox, fvwm, E17等。
4、X Clients
最后,就是X Client了。
X客户端程序,顾名思义,就是使用X服务的程序。firefox,gedit等等都属于X Client程序。
X Client部分值得考虑一下的就是DISPLAY环境变量。它主要用于远程X Client的使用。该变量表示输出目的地的位置,由三个要素组成:
[host]:display[.screen]
host指网络上远程主机的名称,可以是主机名、IP地址等。默认的host是本地系统,你可以在自己系统上echo $DISPLAY看一下。
display和screen分别代表输出画面的编号和屏幕的编号。具体细节由于硬件的缺乏,还有待进一步研究。
5、GNOME 与KDE
光讲X却不提GNOME和KDE,对一些新手来说可能会更糊涂。所以简单解释一下,GNOME/KDE都是集成的工作环境,是完整X系统的一个组成部分。 换句话说, 它们提供的是一整套从DM到WM到一揽子X Client的程序集合。以GNOME为例:DM是gdm,WM是 metacity,X Client有gnome-terminal, gedit, rhythmbox等等。
不过要注意到,即使没有这些组件,我们像前辈们一样用startx登录X,用fvwm做窗口管理器,用那些最最原始的应用程序,仍然可以实现一个高效的X 工作环境。GNOME/KDE的出现只是让这一切变得整合性更好而已。
zz:http://kongjian.baidu.com /wienerlee/blog/item/f49f570208d2e80a4bfb5196.html
图形界面一直是Linux用户头疼的问题,出了问题往往一片茫然,大多重装了事。本文试图从宏观的角度剖析一下X系统的简要原理,只有理解了原理才能在解 决问题时有的放矢。
首先,要搞清楚X系统的构成。平时称呼的X图形界面,实际上是由几个重要部分构成的。它们分别是:
1、X Server (Xorg)
2、Display Manager (gdm, kdm, xdm)
3、Window Manager (metacity, fluxbox, E17, fvwm etc.)
4、X Client (其他各种图形应用程序,如natulis文件管理器)
以及几个重要概念:
1、X session:
X server启动到X server关闭之间的时间段
2、X库:
GUI程序使用的库函数,如GTK+和QT
下 面我们就这几个重要构成的作用、相互关系进行展开,向你展示X的运行原理。
二:原理介绍
1、X Server
X Server,译作X服务器,是X的核心。X Server是用来驱动硬件,提供基本的图形显示能力的。合理但并不十分科学的你可以把它看作视频卡的驱动程序。只有运行了X Server的Linux系统,X Client才能利用X Server绘出相应的图像。
X Server早期使用的是XFree86,自4.4版本后,XFree86改用GPL发布,此后开始称为Xorg。X Server部分,主要关注两点:
1.1 xorg.conf
xorg.conf是X Server的主要配置文件,它包含一个当前系统的硬件资源列表。X Server就是根据这些硬件资源“组织”出基本的图形能力。xorg.conf文件在/etc/X11/xorg.conf,主要包含几个字段:
************************************************************
Files: X系统使用的字体存放目录(字体的具体使用由FontConfig工具主持)
InputDevice: 输入设备,如键盘鼠标的信息
Monitor: 显示器的设置,如分辨率,刷新率等
Device: 显示卡信息
Screen: 由Monitor和Device组装成一个Screen,表示由它们向这个Screen提供输出能力
ServerLayout: 将一个Screen和InputDevice组装成一个ServerLayout
************************************************************
在具有多个显示设备的系统中,可能有多个Screen和多个ServerLayout,用以实现不同的硬件搭配。
在最近的xorg版本中,X Server已经开始自动侦测硬件,现在的xorg.conf已经都成了默认名称。具体细节还待查,但基本原理还是不变的。
1.2 X session(X会话)
前面已经说过,X session是指X server启动后直到X server关闭之间的这段时间。这期间一切跟X相关的动作都属于X session的内容。
管理X session的程序称为Display Manager,常听说的 gdm 或 kdm 就是 gnome/kde 所分别对应的 Display Manager。
开启一个X session,也就是开始了图形界面的使用。在开启的过程中,Display Manager会对用户进行认证(也就是用户名密码的输入),运行事先设置好的程序(比如scim输入法就是这个时候启动的)等等。
这个开启过程要执行的一系列操作都可以在 /etc/X11/Xseesion 以及 /etc/X11/Xsession.d/ 目录下看到,其他还有一些配置文件如Xsession.options, Xresource等,都是执行的X session的初始化过程。仔细阅读这些脚本或配置文件,可以帮助你更好地理解X。
2、Display Manager
上面说过,Display Manager(后简称DM)是管理X session的程序,常见的有gdm, kdm, xdm等。对于默认进入X界面的Linux系统,必须将DM程序在开机时执行,即:/etc/rc2.d/S13gdm。下面我们从手工启动X的过程,看 一下DM为我们做了哪些工作。
如果没有设置DM在开机时运行的话,手动启动X使用startx命令。
man startx
可以知道,startx的作用可以看作是Display Manager的一种隐性实现。它使用xinit命令,分别根据 /etc/X11/xinit/xinitrc 和 /etc/X11/xinit/xserverrc 中所指定的设置唤起X。
其中,xserverrc执行X server的运行任务;xinitrc则运行Xsession命令。从 /etc/X11/Xsession 脚本的内容可以看出,它也就是进入 /etc /X11/Xsession.d/ 目录轮询地执行所有脚本。很明显,这些也就是前面所说的Xsession初始化工作。
综合起来说,Display Manager完成三个任务:
2.1 X Server的启动;
2.2 X session的初始化;
2.3 X session的管理。
3、Window Manager
X Server提供了基本的图形显示能力。然而具体怎么绘制应用程序的界面,却是要由应用程序自己解决的。而Window Manager(桌面管理器,后简称WM)就是用来提供统一的GUI组件的(窗口、外框、菜单、按钮等)。否则,应用程序们各自为政,既增加了程序开发的 负担,不统一的桌面风格对视觉也是不小的挑战。
WM的启动由DM控制,在gdm的登录窗口,我们可以进行选择。常见的WM有:Metacity(Gnome默认的WM), fluxbox, fvwm, E17等。
4、X Clients
最后,就是X Client了。
X客户端程序,顾名思义,就是使用X服务的程序。firefox,gedit等等都属于X Client程序。
X Client部分值得考虑一下的就是DISPLAY环境变量。它主要用于远程X Client的使用。该变量表示输出目的地的位置,由三个要素组成:
[host]:display[.screen]
host指网络上远程主机的名称,可以是主机名、IP地址等。默认的host是本地系统,你可以在自己系统上echo $DISPLAY看一下。
display和screen分别代表输出画面的编号和屏幕的编号。具体细节由于硬件的缺乏,还有待进一步研究。
5、GNOME 与KDE
光讲X却不提GNOME和KDE,对一些新手来说可能会更糊涂。所以简单解释一下,GNOME/KDE都是集成的工作环境,是完整X系统的一个组成部分。 换句话说, 它们提供的是一整套从DM到WM到一揽子X Client的程序集合。以GNOME为例:DM是gdm,WM是 metacity,X Client有gnome-terminal, gedit, rhythmbox等等。
不过要注意到,即使没有这些组件,我们像前辈们一样用startx登录X,用fvwm做窗口管理器,用那些最最原始的应用程序,仍然可以实现一个高效的X 工作环境。GNOME/KDE的出现只是让这一切变得整合性更好而已。
zz:http://kongjian.baidu.com /wienerlee/blog/item/f49f570208d2e80a4bfb5196.html
技 术扫盲区:窗口管理器(WM)
一:什么是 X 视窗管理器
X视窗管理器是 X Window系统中,用来控管视窗外观和放置方式的电脑软体视窗系统,主要用於类Unix系统。
X视窗管理器和苹果公司的Macintosh和微软公司的Windows的操作环境不同。后两者都有长期固定的用户界面和操作模式,而这些都是由开发商决 定的,一旦选定无法更换或者只能作微小调整。X视窗管理器是一个完全开放的,和图像显示软体无关的用户界面。用户可以自由决定采用自己喜爱的第三方提供的 窗口管理器。这些管理器可以拥有完全不同的
1、外观和功能的可配置性
o 用於启动程序或者改变选项的文本化的菜单
o 停靠栏或者是其他图形化的启动程序的样式。
o 多桌面、虚拟桌面(比显示器尺寸要大的桌面)和用於切换桌面的桌面切换器(pager)。
2、内存和系统资源的消耗
3、和桌面环境的整合程度。提供更加完整的用户界面、系统软体和应用程序。
和微软Windows系统不同的shell也大量涌现。例如,LiteStep可以将Windows 95,98或者NT的界面换成Afterstep样式的。OS/2自带Presentation Manager作为默认shell,但第三方公司资源提供了很多替代品。
窗口管理器和桌面环境的区别:
窗口管理器和桌面环境是用户在 X Window 系统里的主要界面. 窗口管理器只是个程序, 它控制窗口的外表,位置和提供用户去操作这些窗口程序的方法. 桌面环境为操作系统提供了一个较完整的图形操作界面, 和提供了一定范围和用途的实用工具和应用程序.
二:X 视窗管理器的运作原理
当视窗管理器开始运作时,X 伺服器和客户端之间的互动,会重新导向到视窗管理器。每当要显示一个新视窗时,这个请求便会被重新导向到视窗管理器,它会决定视窗的初始位置。此外,大部 分较新的视窗管理器会改变视窗的亲属关系,通常会在视窗顶部加上标题列,并在视窗周围加上装饰性的框架。这两个部分皆由视窗管理器来控制,而不是其它程 式。因此,当使用者点击或拖曳那些元件时,视窗管理器会进行适当的动作(如移动或改变视窗的大小)。
视窗管理器也负责处理图示,图示并不存在於X Window核心协议的层次中。当使用者将视窗图示化时,视窗管理器会取消视窗的映射(使其不可见),并完成适当的动作,将视窗改显示成图示。某些视窗管 理器并不支援图示功能。
视窗管理器主要的目标,就如同其名,是用来管理视窗的。许多视窗管理器提供附加的功能,如处理滑鼠在根视窗上的点击,呈现出窗格以及其它的视觉化元件,处 理按键(例如 Alt-F4 可关闭视窗),判定哪一个应用程式在启动时执行等等。
三:特殊的视窗管理器
几种特殊的视窗管理器如下。
1、虚拟视窗管理器
虚拟视窗管理器使用了虚拟的萤幕画面,其解析度可大於显示器的解析度。当希望有较多的视窗时,这个功能也很有用。虚拟视窗管理器包括有 FVWM、Tvtwm、HaZe 等等。
2、铺砖式视窗管理器
铺砖式视窗管理器是以不重叠画面的方式组织萤幕画面(故称为铺砖式),相对於传统的方式,它更近似於以坐标为基础的叠置物件(视窗),其尝试模仿办公桌的 式样。
第一个砖式视窗管理器是 larswm,随后是 Ion。以下是铺砖式视窗管理器的列表:
* Awesome
* Larswm
* Ion
* TrsWM
* Stumpwm
* wmii
* dwm
* ratpoison
* XWEM
* Xmonad
四:主流X视窗管理器
* AfterStep
* Blackbox (minimalist)
* evilwm
* Enlightenment (window manager)|Enlightenment
* Fluxbox (lightweight, based on Blackbox)
* FVWM(a virtual window manager,derived from twm)
* IceWM
* Ion (window manager)|Ion tiling tabbed window manager designed with keyboard users in mind
* Openbox( LXDE默认的窗口管理器)
* KWin(最初叫 KWM, 是 KDE默认的窗口管理器)
* Metacity( GNOME 2.2后成为默认的窗口管理器)
* MWM (Motif (widget toolkit)|Motif Window Manager), Motif Window Manager
* Sawfish (window manager)|Sawfish (a past default for GNOME, originally called Sawmill)
* twm (default for the X Window System since version X11R4)
* Window Maker
* Xfwm, Xfce默认的窗口管理器
五: 其它X视窗管理器
* 4dwm
* 5Dwm (derived from mwm, true SGI look&feel)
* 9wm [1](clone of the original windowing system of Plan 9)
* aewm [2]
* amiwm [3] Amiga workbench unix clone.
* Compiz (a compositing window manager) and Beryl (window manager) an under development fork of it
* CTWM
* dwm
* EvilPoison [4] (a fork of evilwm with Ratpoison-like keybindings)
* FVWM95
* HaZe
* JWM (Joe's Window Manager)
* Kahakai
* larswm
* Luminocity (experimentation in compositing)
* LWM [5]
* Matchbox [6]
* OLWM(and OLVWM [7] with virtual desktops, OPEN LOOK window managers)
* hackedbox [8]
* Oroborus
* PekWM
* PLWM
* PWM
* Qvwm (Windows 95/98 look-alike) [9] (list of forks)
* Ratpoison
* Scwm (the Scheme constraints window manager)
* Orion A nested (tiled or floating) window manager written in Scheme and scsh
* swm (the original virtual desktop implementation)
* Toy'd(HomePage GoogleProject a portable window manager for MS-Windows & UNIX / Linux platforms)
* TrsWM
* uwm
* Waimea [10]
* WindowLab
* wm2
* WMI
* wmii
* XPwm(for XPde,Windows XP Look alike)
zz:http://zh.wikipedia.org /wiki/X%E7%AA%97%E5%8F%A3%E7%AE%A1%E7%90%86%E5%99%A8
X视窗管理器是 X Window系统中,用来控管视窗外观和放置方式的电脑软体视窗系统,主要用於类Unix系统。
X视窗管理器和苹果公司的Macintosh和微软公司的Windows的操作环境不同。后两者都有长期固定的用户界面和操作模式,而这些都是由开发商决 定的,一旦选定无法更换或者只能作微小调整。X视窗管理器是一个完全开放的,和图像显示软体无关的用户界面。用户可以自由决定采用自己喜爱的第三方提供的 窗口管理器。这些管理器可以拥有完全不同的
1、外观和功能的可配置性
o 用於启动程序或者改变选项的文本化的菜单
o 停靠栏或者是其他图形化的启动程序的样式。
o 多桌面、虚拟桌面(比显示器尺寸要大的桌面)和用於切换桌面的桌面切换器(pager)。
2、内存和系统资源的消耗
3、和桌面环境的整合程度。提供更加完整的用户界面、系统软体和应用程序。
和微软Windows系统不同的shell也大量涌现。例如,LiteStep可以将Windows 95,98或者NT的界面换成Afterstep样式的。OS/2自带Presentation Manager作为默认shell,但第三方公司资源提供了很多替代品。
窗口管理器和桌面环境的区别:
窗口管理器和桌面环境是用户在 X Window 系统里的主要界面. 窗口管理器只是个程序, 它控制窗口的外表,位置和提供用户去操作这些窗口程序的方法. 桌面环境为操作系统提供了一个较完整的图形操作界面, 和提供了一定范围和用途的实用工具和应用程序.
二:X 视窗管理器的运作原理
当视窗管理器开始运作时,X 伺服器和客户端之间的互动,会重新导向到视窗管理器。每当要显示一个新视窗时,这个请求便会被重新导向到视窗管理器,它会决定视窗的初始位置。此外,大部 分较新的视窗管理器会改变视窗的亲属关系,通常会在视窗顶部加上标题列,并在视窗周围加上装饰性的框架。这两个部分皆由视窗管理器来控制,而不是其它程 式。因此,当使用者点击或拖曳那些元件时,视窗管理器会进行适当的动作(如移动或改变视窗的大小)。
视窗管理器也负责处理图示,图示并不存在於X Window核心协议的层次中。当使用者将视窗图示化时,视窗管理器会取消视窗的映射(使其不可见),并完成适当的动作,将视窗改显示成图示。某些视窗管 理器并不支援图示功能。
视窗管理器主要的目标,就如同其名,是用来管理视窗的。许多视窗管理器提供附加的功能,如处理滑鼠在根视窗上的点击,呈现出窗格以及其它的视觉化元件,处 理按键(例如 Alt-F4 可关闭视窗),判定哪一个应用程式在启动时执行等等。
三:特殊的视窗管理器
几种特殊的视窗管理器如下。
1、虚拟视窗管理器
虚拟视窗管理器使用了虚拟的萤幕画面,其解析度可大於显示器的解析度。当希望有较多的视窗时,这个功能也很有用。虚拟视窗管理器包括有 FVWM、Tvtwm、HaZe 等等。
2、铺砖式视窗管理器
铺砖式视窗管理器是以不重叠画面的方式组织萤幕画面(故称为铺砖式),相对於传统的方式,它更近似於以坐标为基础的叠置物件(视窗),其尝试模仿办公桌的 式样。
第一个砖式视窗管理器是 larswm,随后是 Ion。以下是铺砖式视窗管理器的列表:
* Awesome
* Larswm
* Ion
* TrsWM
* Stumpwm
* wmii
* dwm
* ratpoison
* XWEM
* Xmonad
四:主流X视窗管理器
* AfterStep
* Blackbox (minimalist)
* evilwm
* Enlightenment (window manager)|Enlightenment
* Fluxbox (lightweight, based on Blackbox)
* FVWM(a virtual window manager,derived from twm)
* IceWM
* Ion (window manager)|Ion tiling tabbed window manager designed with keyboard users in mind
* Openbox( LXDE默认的窗口管理器)
* KWin(最初叫 KWM, 是 KDE默认的窗口管理器)
* Metacity( GNOME 2.2后成为默认的窗口管理器)
* MWM (Motif (widget toolkit)|Motif Window Manager), Motif Window Manager
* Sawfish (window manager)|Sawfish (a past default for GNOME, originally called Sawmill)
* twm (default for the X Window System since version X11R4)
* Window Maker
* Xfwm, Xfce默认的窗口管理器
五: 其它X视窗管理器
* 4dwm
* 5Dwm (derived from mwm, true SGI look&feel)
* 9wm [1](clone of the original windowing system of Plan 9)
* aewm [2]
* amiwm [3] Amiga workbench unix clone.
* Compiz (a compositing window manager) and Beryl (window manager) an under development fork of it
* CTWM
* dwm
* EvilPoison [4] (a fork of evilwm with Ratpoison-like keybindings)
* FVWM95
* HaZe
* JWM (Joe's Window Manager)
* Kahakai
* larswm
* Luminocity (experimentation in compositing)
* LWM [5]
* Matchbox [6]
* OLWM(and OLVWM [7] with virtual desktops, OPEN LOOK window managers)
* hackedbox [8]
* Oroborus
* PekWM
* PLWM
* PWM
* Qvwm (Windows 95/98 look-alike) [9] (list of forks)
* Ratpoison
* Scwm (the Scheme constraints window manager)
* Orion A nested (tiled or floating) window manager written in Scheme and scsh
* swm (the original virtual desktop implementation)
* Toy'd(HomePage GoogleProject a portable window manager for MS-Windows & UNIX / Linux platforms)
* TrsWM
* uwm
* Waimea [10]
* WindowLab
* wm2
* WMI
* wmii
* XPwm(for XPde,Windows XP Look alike)
zz:http://zh.wikipedia.org /wiki/X%E7%AA%97%E5%8F%A3%E7%AE%A1%E7%90%86%E5%99%A8
3月15日
更多推荐
已为社区贡献8条内容
所有评论(0)