Copyright ? 2004 本文遵从GPL协议,欢迎转载、修改、散布。
第一次发布时间:2004年8月14日
--------------------------------------------------------------------------------
Table of Contents
1. X window 介绍
1.1. X 简介
1.2. 版本
1.3. XFree86项目介绍
2. XFree86系统介绍
2.1. XFree86安装
2.2. XFree86配置
2.3. XFree86的文件系统
2.4. XFree86字体
2.5. 启动X11
2.5.1. 启动方法
2.5.2. 启用多用户会话
2.5.3. 终止X会话
3. X11客户程序常用选项
3.1. X程序常用选项
3.2. 使用客户程序资源
4. X window的网络应用
4.1. 远程会话
4.2. 远程桌面
4.3. 安全问题
5. X系统客户程序介绍
5.1. 环境设置命令
5.2. 小工具
6. X11多媒体客户程序介绍
7. 显示管理器
7.1. xdm的配置
8. 窗口管理器
8.1. WindowMaker
8.2. fvwm/fvwm2/fvwm95
8.3. enlightenment
8.4. mwm
8.5. twm
8.6. icewm
8.7. Sawfish
8.8. blackbox
9. 桌面环境
9.1. GNOMN
9.2. KDE
9.3. CDE
10. X web
List of Tables
2.1. XFree86文件系统目录清单
3.1. X程序常用选项
Chapter 1. X window 介绍
Table of Contents
1.1. X 简介
1.2. 版本
1.3. XFree86项目介绍
1.1. X 简介
X window系统是一个很复杂的网络图形界面系统,它的开发始于1984年,它被应用已有近20年。X也是一个协议,它定义程序(客户程序)如何与另一个在远程机器上运行的程序(服务器程序)交换信息。它最早是由数字设备公司(DEC)的Jim Gettys与麻省理工大学(MIT)的Ron Newman和Bob Scheifler共同开发的。当时DEC和MIT想共同开发一种分布式的计算环境,X系统就是他们研究成果的一部分,这项工作叫作雅典娜工程。现在X的管理机构是X 联盟(www.x.org)。X系统由三部份组成,它们分别是X Server、Xclient和X协议。
X Server是控制输入输出的程序,它是和底层硬件直接通信的。它接收X client程序的请求做建立窗口、绘制图形等工作。
X client是基于X Server的客户程序,它请求X Server在指定的窗口进行各种操作。它不负责显示,只是给X Server发送一个请求,由服务器完成动作。
X 协议是X Server和X Client之间沟通的语言。Xlib库能完成这种通信功能,所以可以基于它进行X client程序的开发。
以下是X系统的几点优势:
可移植性。X系统可移植到几乎所有的计算机图形系统下。
标准化。X window系统提供一个标准的函数库和功能调用集合,抽象了硬件层功能,使程序开发更标准更快捷。
网络化。它是基于网络的图形界面系统。
模块化结构。能方便进行功能扩展。
不嵌入操作系统中,适用于几乎所有的操作系统,如linux、solairs、windows等。
1.2. 版本
1986年发布X10.4版
1987年9月15日发布X11R1版(X11第一次修订版)。源程序有19MB,可在4种主要的操作系统下运行。
1988年发行第二修订版X11R2。该版提供了很多压缩的矢量字体,以及第三方软件商提供的软件工具。
1991年8月29日发布了X11R5版。为X window系统增加了国际化功能。
1994年4月21日,X11R6发布。这一版改进窗口管理、资源共享、会话管理等功能。
1996年3月5日发布了X11R6.1版,支持16种操作系统,包括linux内核1.2.11。
1996年12月23日发布了X11R6.3版,它是X联盟转换到TOG(开放工作组,一个非盈利机构)前最后的一个X版本。TOG由200个新成员和很多X联盟的原创成员组成。
1998年1月4日,TOG发布了X11R6.4版。TOG工作组改变X 系统免费的许可证政策,如果从销售X系统中盈利,就须交纳年度注册费,价格是每5万个用户7500美元,随后又增加到至65000美元。由于新许可政策的实施,导致开源社区组成一个XFree86工程公司(一个非盈利的机构)开发了一个基于Intel PC平台的免费X系统XFree86。1998年9月TOG也放弃新许可政策,把X11R6.4版的许可恢复到旧的麻省理工的版本。
2000年8月15日,X11R6.5.1发布。源文件容量扩充以144Mb,包含8100多个文件、600多种字体、345个手册页、20个程序库、70个图象和60个客户程序。现在最新的版本是X11R6.7.0,可以到http://www.x.org下载。
1.3. XFree86项目介绍
XFree86项目成立于1994年3月19日。最早的开发工作始于1992年,由一个开发小组完成,实现了基于Intel PC平台的X系统。1994年5月18日发布的XFree86 2.1版是第一个支持linxu的XFree86版本。2000年5月7日XFree86 4.0版发布,它是XFree86最重要的一个发布版,增加了很多功能。XFree86的意思是“提供X服务,它是自由的(free),它是基于Intel的PC平台”。现在最新的XFree86版是4.4.0。可以到http://www.xfree86.org下载。基于windows平台也有X window系统,如:X-Win32、Extra!X、Exceed等。
Chapter 2. XFree86系统介绍
Table of Contents
2.1. XFree86安装
2.2. XFree86配置
2.3. XFree86的文件系统
2.4. XFree86字体
2.5. 启动X11
2.5.1. 启动方法
2.5.2. 启用多用户会话
2.5.3. 终止X会话
2.1. XFree86安装
安装软件与其它软件大同小异,这里就不详细介绍了。
2.2. XFree86配置
在XFree86中的配置文件是XF86Config-4,下面介绍几种配置的工具:
xf86config是一个基于文本的配置工具。在控制台运行该命令后按提示配置就可以了。
reconfig用以把旧版的配置文件转换成4.0.1版的配置文件格式。
可以用$ XFree86 -configure命令由系统自动生成一个叫XF86Config.new的配置文件,可基于这个文件再修改。最后用$ XFree86 -xf86config XF86Config.new进行测试。如果成功将出现一个带“X”的窗口。最后把正确的配置文件拷贝成/etc/X11/XF86Config-4。
在XFree86 4.0.1后,还可通过xf86cfg这个图形化程序来进行配置。
在各linux的发行版中,还包含有各自开发的配置工具,redhat有Xconfigurator;Mandrake 有DrakConf;SuSE 有SaX。
下面是一个完整的配置文件例子:
Section "ServerLayout" ==============配置标识区
Identifier "XFree86 Configured"
Screen 0 "Screen0" 0 0
InputDevice "Keyboard0" "CoreKeyboard"
# PS/2 Mouse not detected
InputDevice "Serial Mouse" "CorePointer"
# USB Mouse not detected
EndSection
Section "ServerFlags" =================X 选项配置区
Option "AllowMouseOpenFail" "true" ====允许在鼠标配置失败的情况下启动X
Option "DontZap" "true" ====不能使用Ctrl+Alt+Backspace组合键退出X
Option "DontZoom" "true" ====不能使用Ctrl+Alt+小键盘+-来切换显示模式
EndSection
Section "Files" =========================字体配置区
RgbPath "/usr/X11R6/lib/X11/rgb"
ModulePath "/usr/X11R6/lib/modules"
# Additional fonts: Locale, Gimp, TTF...
# FontPath "/usr/X11R6/lib/X11/fonts/latin2/75dpi"
# FontPath "/usr/X11R6/lib/X11/fonts/latin2/100dpi"
# True type and type1 fonts are also handled via xftlib, see /etc/X11/XftConfig!
FontPath "/usr/X11R6/lib/X11/fonts/misc:unscaled"
FontPath "/usr/X11R6/lib/X11/fonts/75dpi:unscaled"
FontPath "/usr/X11R6/lib/X11/fonts/100dpi:unscaled"
FontPath "/usr/X11R6/lib/X11/fonts/PEX"
FontPath "/usr/X11R6/lib/X11/fonts/cyrillic"
FontPath "/usr/X11R6/lib/X11/fonts/TrueType"
EndSection
Section "Module"
Load "ddc" # ddc probing of monitor
Load "dbe"
Load "dri"
Load "extmod"
Load "glx"
Load "record"
Load "xtt"
EndSection
Section "InputDevice" ================键盘配置区
Identifier "Keyboard0"
Driver "keyboard"
Option "CoreKeyboard"
Option "XkbRules" "xfree86"
Option "XkbModel" "pc105"
Option "XkbLayout" "us"
EndSection
Section "InputDevice" =================串口鼠标配置区
Identifier "Serial Mouse"
Driver "mouse"
Option "Protocol" "Microsoft"
Option "Device" "/dev/ttyS0"
Option "Emulate3Buttons" "true"
Option "Emulate3Timeout" "70"
Option "SendCoreEvents" "true"
EndSection
Section "InputDevice" =================ps/2鼠标配置区
Identifier "PS/2 Mouse"
Driver "mouse"
Option "Protocol" "auto"
Option "ZAxisMapping" "4 5"
Option "Device" "/dev/psaux"
Option "Emulate3Buttons" "true"
Option "Emulate3Timeout" "70"
Option "SendCoreEvents" "true"
EndSection
Section "InputDevice" =================usb鼠标配置区
Identifier "USB Mouse"
Driver "mouse"
Option "Device" "/dev/input/mice"
Option "SendCoreEvents" "true"
Option "Protocol" "IMPS/2"
Option "ZAxisMapping" "4 5"
Option "Buttons" "5"
EndSection
Section "Monitor" ==================显示器配置区
Identifier "Monitor0"
Option "DPMS" "true"
VendorName "MAG"
ModelName "MAG9705"
HorizSync 30-86# DDC-probed
VertRefresh 50-160# DDC-probed
# These are the DDC-probed settings reported by your monitor.
# 1600x1200, 65.0Hz; hfreq=81.25, vfreq=65.00
ModeLine "1600x1200" 175.50 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync
# 1280x1024, 75.0Hz; hfreq=79.98, vfreq=75.03
ModeLine "1280x1024" 135.00 1280 1296 1440 1688 1024 1025 1028 1066 +hsync +vsync
# 1280x960, 85.0Hz; hfreq=85.40, vfreq=85.00
ModeLine "1280x960" 148.50 1280 1344 1504 1728 960 961 964 1011 +hsync +vsync
# 1024x768, 85.0Hz; hfreq=68.68, vfreq=85.00
ModeLine "1024x768" 94.50 1024 1072 1168 1376 768 769 772 808 +hsync +vsync
EndSection
Section "Device" ===================显卡配置区
### Available Driver options are:-
# sw_cursor is needed for some ati and radeon cards
Option "sw_cursor"
#Option "hw_cursor"
#Option "NoAccel"
#Option "ShowCache"
#Option "ShadowFB"
#Option "UseFBDev"
#Option "Rotate"
Identifier "Card0"
Driver "nv" =======如果不清楚可选svga或vga
VendorName "NVidia"
BoardName "GeForce2 MX DDR"
# BusID "PCI:1:0:0"
EndSection
Section "Screen" =====================屏幕配置区
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
DefaultColorDepth 24 ============用24位色深
SubSection "Display"
Depth 1
Modes "1024x768" "640x480"
Virtual 0 0
EndSubSection
SubSection "Display"
Depth 4
Modes "1024x768" "640x480"
Virtual 0 0
EndSubSection
SubSection "Display"
Depth 8
Modes "1024x768" "640x480"
Virtual 0 0
EndSubSection
SubSection "Display"
Depth 15
Modes "1024x768" "640x480"
Virtual 0 0
EndSubSection
SubSection "Display"
Depth 16
Modes "1024x768"
Virtual 0 0
EndSubSection
SubSection "Display"
SubSection "Display"
Depth 24
Modes "1024x768" "640x480"
Virtual 0 0
EndSubSection
SubSection "Display"
Depth 32
Modes "1024x768" "640x480"
Virtual 0 0
EndSubSection
EndSection
2.3. XFree86的文件系统
大多数程序,字体和文件都放在/usr/X11R6目录下,而其它组件和配置文件则放在/etc/X11目录下,一些始化程序如xfs字体服务器就放到系统初始化目录/etc/init.d目录下。下面是一个XFree86系统目录列表:
Table 2.1. XFree86文件系统目录清单
目录 描述
/etc/X11 X配置文件
/usr/X11R6/bin X程序
/usr/X11R6/include X11程序开发所需的#include文件和图形
/usr/X11R6/lib X程序共享库
/usr/X11R6/lib/X11 配置文件,应用程序资源文件文档、字体及国际化文件
/usr/X11R6/lib/modules XFree86模块(驱动程序、扩展文件、字体文件等)
/usr/X11R6/man X手册页
/usr/X11R6/share 各种X客户程序共享的资源文件
2.4. XFree86字体
可以在本地或远程安装字体。单机上运行的linux的字体目录主要是在/usr/X11R6/lib/X11/fonts目录下。有几个工具用以管理字体,分别是:
mkfontdir用来在字体目录下创建字体名数据库。
xlsfonts用来列出已安装字体。
xfontsel用来显示从字体集中选中的各种字体。
xfd用来显示在X字体中的字符。
xset -q可查看字体的路径
在fonts目录下列有已安装的各种字体目录,如100dpi/、75dpi/、misc/等,每个目录下都有一个fonts.dir和一个fonts.alias文件。fonts.dir文件是字体列表数据库,X 和xfs字体服务器用这个文件查找字体;fonts.alias文件包含两栏信息:名字和别名。可以利用这个文件给已有的字体创建新名字。Encodings目录中的是Type1 (也称TrueType)的字体编码。这些信息用来在显示器上绘制可缩放字体。
XFree86还可使用远程XFree86 服务器上的字体,从而减少本地的字体存储空间,主要通过配置字体服务器xfs完成。为利用远程服务器上提供的字体,可用xset +fp unix/remote.org:7100命令可把远程X 服务器提供的字体增加到当前显示字体路径中。在单机上运行xfs时,可以用一个单一的设置代替XF86Config文件中列出的字体列表:
Fontpath "nuix/:7100"
不过,具体操作还没测试过。
Xresources文件位于/etc/X11目录下,该文件包含所有客户程序的默认资源管理信息。如emacs,vim。emacs*Background:DarkSlateGray表示把emacs程序的背景设置为灰色。这样任何用户在你计算机上启动emacs编辑器,将使用灰色的背景。除非用本地设置来使之失效。
2.5. 启动X11
X window的启动过程是由xinit客户端程序控制的,先启动X Server,接着启动窗口管理器,最后启动用户应用程序。用户主目录下的.xinitrc文件就是控制xinit程序启动什么窗口管理器、显示管理器和程序的文件。一般启动X window的方法有如下几种:
2.5.1. 启动方法
各种linux的发行版都把运行级别5定为x window模式,所以最简单的方式是修改/etc/inittab文件,把系统的默认运行级别定为5,重启系统就可以了。有关系统运行级别的设置方法和原理可参考有关资料或man手册页。
我们也可以用startx脚本从shell中手动启动x window。启动startx后,它会进行一些环境变量的测试,它会搜查xclient的位置:$HOME/.xinitrc和/etc/X11/xinit/xinitrc,还有xserver的位置:$HOME/.xserverrc和/etc/X11/xinit/xserverrc。如果主目录有配置文件就会优先使用,首先,xinit先执行.xserverrc的内容,如果找不到该文件,则用/etc/X11/xinit/xinit/xserverrc,如果都没有,就执行 X :0,启动X Server。接着xinit就会执行用户主目录下.xinitrc配置文件的内容。如果没有则到/etc/X11/xinit/下找xinitrc文件,如果都找不到,则执行xterm -geometry +1+1 -n login -display :0。一个简单的.xinitrc配置文件如下:
export LANG=zh_CN.GB2312 ======这两行是设置中文环境变量
export LC_ALL=zh_CN.GB2312
export XMODIFIERS="@im=Chinput" ======设置Chinput为中文输入法
chinput& ======启动chinput输入法服务器
wmaker& ======启动window maker窗口管理器
用startx启动X的过程就是这样的。
还有一个程序叫X,它只是启动X Server进入X环境,所以可用它来测试X Server服务是否成功启动。启动X后,可按Ctrl+Alt+F7切换到X界面。
2.5.2. 启用多用户会话
如果有足够多的内存,可以用startx命令启动多个X会话。首先我们要启动到非X多用户模式下,如运行级别3。运行以下命令:$ startx -display :0 -vt7启动第一个会话,运行$ startx -display :1 -vt8启动第二个会话,可用Ctrl+Alt+F7/F8进行会话切换。
2.5.3. 终止X会话
一种方法是通过窗口管理器的注销功能或在终端中打入logout,一种是通过Ctrl+Alt+Fn切换到其它控制台,再用kill终止。
Chapter 3. X11客户程序常用选项
Table of Contents
3.1. X程序常用选项
3.2. 使用客户程序资源
3.1. X程序常用选项
Table 3.1. X程序常用选项
命令行选项 描述
-bg color or -background color 设置背景色
-bd color or -bordercolor color 设置窗口边框色
-bw n or -borderwidth n 设置窗口边框的宽度,n的单位是象素
-fg color 设置前景色
-fn font 设置字体
-geometry 宽X高+/-X偏移量+/-Y偏移量 指定客户程序窗口的宽度,高度和在桌面上的位置
-iconic 以最小化的状态启动客户端程序
-title string 设置窗口标题
以上参数只是一些程序常用的,有些程序可能不支持,要详细了解可使用命令的-h或--help参数查询,如rxvt --help。
3.2. 使用客户程序资源
可使用资源设置文件为客户程序设置各种默认的属性,如字体、颜色等。这些客户程序资源文件一般保存在/usr/X11R6/lib/app-defaults目录下。可用$ appres xclock的形式来显示xclock程序的资源文件内容。我们可以用editres程序来更改客户程序的资源。还可以用xrdb来配置系统级别的资源。
Chapter 4. X window的网络应用
Table of Contents
4.1. 远程会话
4.2. 远程桌面
4.3. 安全问题
X 系统的网络模型是基于客户机/服务器的体系结构。客户机能远程登录进来,进行各种图形显示应用。
4.1. 远程会话
有两台X系统,一台A,一台B。通过X系统的远程会话可以把A的xclock应用程序显示在B的显示器上。具体的操作步骤如下:
首先要在两台电脑上安装X系统。在A电脑上以不带-nolisten tcp选项启动X(在Xsession里设置)。并在B上执行$ xhost + A,允许A电脑访问。
在A电脑上执行$ xclock -display B:0.0&,B的显示器上就会显示xclock时钟。
连接完成后在B上要用$ xhost -A,取消A的远程访问权限。
利用该功能,我们也可以利用telnet或ssh登录到远程服务器,在远程服务器上运行应用程序,再把显示传回本地显示。
上面介绍的是基于主机的认证会话方式,还有一种更安全的基于cookis的认证方式,它要用到xauth这个程序,用它可生成一个本机的cookis保存在.Xauthority文件中,要进行认证需把它拷贝到另一台机的.Xauthority文件中。这样两台机就有了相同的cookis,连接时就可用于认证。在xauth里有两个有用的程序,一个是extract用于把cookis导出成一个文件,merge用于把导出的文件导入.Xauthority文件中。
4.2. 远程桌面
可以利用Xvnc软件,实现远程桌面应用。该软件包括服务器和客户端,能让你在一台linux客户机上登录远程系统的桌面。包括windows、Machintosh、Solaris等。Xvnc是由英国剑桥的AT&T研究室研制。使用方法如下:
在A电脑上运行$ vncserver -geometry 800x600,启动服务器。
在B电脑上运行$ vncviewer A:1,连接A系统桌面,桌面大小是800x600。
4.3. 安全问题
可利用xterm的安全键盘功能。操作方法如下:
在本地X会话过程中启动用户系统,$ xterm&。
然后把光标移到终端窗口内空白地方,按下Ctrl+单击鼠标左键,在弹出的快捷菜单中选中“Secue Keyboard”。这时,终端窗口使用相反的前后景色。这样,只有这个窗口可以输入信息,其它任何程序和窗口都不能输入信息。
为了加强安全,还可以使用xfwp设置一个X防火墙。
Chapter 5. X系统客户程序介绍
Table of Contents
5.1. 环境设置命令
5.2. 小工具
5.1. 环境设置命令
用xset进行个性化设置,可以设置屏保、鼠标,显示器的能源之星特性(DPMS)等
$ xset -q 可以显示当前设置。
$ xset s on 打开屏幕保护。
$ xset s 60 设置屏保激活的时间为1分钟。
$ xset s off 关闭屏幕保护。
$ xset m "1 6",放慢鼠标移动速度,$ xset m "30 10",加快鼠标移动速度,$ xset m "default",重置鼠标移动速度。
用xsetroot设置根窗口显示背景,鼠标图案等。
$ xsetroot -solid black,把窗口背景设置为黑色。
$ xsetroot -bitmap /usr/X11R6/include/X11/bitmaps/test.bmp,用test.bmp作为桌面背景
$ xsetroot -cursor_name xxx。设置鼠标图案。$ xsetroot -cursor_name X_cursor,重置鼠标图案。
通过