XFree86学习笔记

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,重置鼠标图案。

通过

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值