admin 管理员组

文章数量: 1086019


2024年12月24日发(作者:base6解码)

Linux的窗口系统

原生的Linux只提供了字符命令操作界面。后来为了让Linux更容易使用便引入

了X Window系统,设计实现了Linux上的图形窗口系统,如 Gnome, KDE 等。

X Window系统是一种图形用户界面的实现框架,而不是一个具体的产品。X

Window的结构可以看作X Server+XProtocol+X Client,采用C/S结构工作方

式。X Server负责图形绘制驱动,用户输入接收等,X Server会将用户输入传

输给X Client,由X Client按照应用程序的逻辑进行运算,将需要绘制的图形数

据传回给X Server来绘制。

X Server和不同的X Client搭配,可以配置成不同风格的窗口系统。X server

的产品实现比较少,主要就是 /usr/bin/X11/X程序。而X client则有很多不同的

实现,比如GNOME, KDE,twm(就是一个单窗口管理器),xterm(X Window

的默认Client),rxvt。正是有了各种不同的X CLient才使得Linux上现在可以看

到风格各异的几种窗口界面。

在Linux启动时要启动X Window,一般有两种方法,一是用startx/xinit, 二是

使用xdm/gdm/kdm.

xinit是一个启动X的小工具,而startx只是一个调用xinit工具的sh文件,通过

在startx里会配置将要打开什么样的X Server和X Client,以及可选参数,然后

调用xinit去打开X Window。

startx通过四个步骤确定将要打开哪一个X Server或X Client。

(1)首先使用startx后面带的参数来确定用什么X Server和X Client;

(2)若没有参数,则在用户HOME目录下寻找配置文件,即 ~/.xserverrc 或

~/.xinitrc

(3)若没有用户配置文件,则在系统目录下寻找 /etc/X11/xinit/xserverrc或

/etc/X11/xinit/xinitrc

(4)若前面三步都没有找到,则启动系统默认最简单的X Server-usr/bin/X ,

X CLient - xterm

另外也可以通过xdm/gdm/kdm这三种登入管理器来启动X。登入管理器(Display

Manager, DM)是用来提供一个通过用户名密码登际系统的接口,并且用户可

以通过修改登入管理器的配置文件来定制载入哪一个X Client。

xdm -- X display manager,这是X系统的默认DM

gdm -- gnome display manager, 这是作为GNOME子项目的一个DM

kdm -- kde display manager,这是作为KDE子项目的一个DM,事实上不论gdm

和kdm, 都可以通过配置启动其它的X Client而不限于GNOME或KDE。

DM的启动方式有以下几个步骤(以xdm为例,gdm/kdm类似):

(1)执行/etc/X11/xdm/Xserver启动X Server(如果是gdm, 则是

/etc/X11/gdm/Xserver)

(2)执行/etc/X11/xdm/Xsessions来启动xdm。如果启动的是xdm,则装入此

目录下的配置文件.Xsession和.Xclients。这时候也会打开X Window的登录界

(3)xdm检查/etc/X11/xdm/Session目录查找X Client的配置。并打开指定的

X Client。

(4)用户如果选择或配置指定的是打开Gnome,则在在输入用户名和密码后,

gdm GNOME Session就会找gnomerc script, $HOME/.gnomerc,如果没有这

个文件,就会读会系统文件内定的GNOME resource file,

/etc/X11/gdm/gnomerc,并且启动/usr/bin/gnome-session

另外,X Window中还有一个重要的部分,X Window Manager, 窗口管理器。

按照前面所介绍的,X Client在自己的窗口内根据X Server传来的用户操作数

据运算出绘画数据,交给X Server去画,但是X Client自身如果窗口大小、位

置发生变化,就无法正确通知X Server了。举个例子,把X Client想象为一张

画布,一开始它在桌面上的初始位置,当它通知X Server在画布的(10, 10)画一

个点, X Server可以正确实现;但是如果画布大小变化后,或移动后,再告诉

X Server在(10, 10)画点,这时候X Server就傻眼了。窗口管理器就是在X CLient

和X Server间起协调作用,负责管理窗口的移动、最大化、最小化、改变大小

以及关闭等工作。可以理解窗口管理器是一种管理其它所有X Client的特殊的X

Client。常见的窗口管理器有:

(1)twm(提供的简单的窗口管理器,作为X Window System的default

配置)

(2)Metacity(gnome提供的窗口管理器)

(3)kwin(KDE使用的窗口管理器)

(4)FVWM(一款知名的窗口管理器)

窗口管理器通常也是在启动X Client的过程中,通过配置选择启动一个窗口管理

器。

参考资料:

X Window 运行原理与启动过程

/hopeworld/archive/2011/04/13/

xinit启动X Window System过程初探

/hopeworld/archive/2011/04/13/

X Window System介绍

/zhoudaxia/article/details/6666939


本文标签: 启动 管理器 用户