Part I: X
RHEL5 X:
目前RHEL5使用的是X11R7.1 Release,所有的libraries,headers,binaries都被存放于/usr/目录下,而不是以前版本的/usr/X11R6目录。
X文件体系:
=======================================================
[sense@ssn etc]$ tree X11/
X11/
|-- X -> ../../usr/bin/Xorg
|-- Xmodmap
|-- Xresources
|-- applnk
|-- fs
| `-- config
|-- prefdm
|-- serverconfig
|-- sysconfig
|-- twm
| `-- system.twmrc
|-- xinit
| |-- Xclients
| |-- Xclients.d
| |-- Xsession
| |-- xinitrc
| |-- xinitrc-common
| |-- xinitrc.d
| | |-- localuser.sh
| | |-- sabayon-xinitrc.sh
| | `-- xinput.sh
| |-- xinput.d
| | |-- aux
| | | `-- scim-bridge-gtk
| | |-- none.conf
| | |-- scim.conf
| | `-- xim.conf
| `-- xinputrc -> /etc/alternatives/xinputrc
|-- xorg.conf
`-- xorg.conf.backup
=======================================================
/etc/X11:
包含X server,xfs font server,X display manager及其它配置文件。
/usr/bin/Xorg:
X server的主程序文件,在同目录下有一个名为‘X‘的软链接。
/etc/X11/Xmodmap与/etc/X11/Xkbmap
被xmodmap命令调用实现键盘映射的配置。
/etc/X11/Xresources
用于给应用程序分配特定的优先级。
/etc/X11/applnk
定义X对象。
/etc/fs/config
xfs(core font subsystem)配置文件。
/etc/X11/prefdm
prefered display manager。
图形显示管理器(登陆管理器)选择脚本。
常用的显示管理器有:xdm(X显示管理器管理器),gdm(GNOME显示管理器),kdm(KDE显示管理器)。
此文件参考/etc/sysconfig/desktop文件中的DISPLAYMANAGER=GNOME|KDE|XDM值来选择相应的登陆管理器。
/etc/X11/sysconfig/
/etc/X11/twm/system.twmrc
twm窗口管理器的默认配置文件。
/etc/X11/xinit/Xclients,~/.Xclients与~/.Xclients-default
用于启动桌面环境或仅启动一个窗口管理器。
.Xclients检测并运行用户指定于.Xclients-default的桌面环境。
如果.Xclients不存在,则由系统的/etc/X11/xinit/Xclients脚本来启动桌面环境,启动顺序默认为:GNOME-> KDE->twm。
/etc/X11/xinit/Xclients.d
/etc/X11/xinit/Xsession
在run-level5运行时,显示管理器验证完身份后执行此X初始化脚本。
完成与运行在run-level3的xinitrc程序相应的功能,包括设置系统及用户资源和运行/etc/X11/xinit/xinitrc.d目录下的一系列脚本文件。
/etc/X11/xinit/xinitrc
X 初始化文件,从run-level3运行startx时运行。
执行过程:
(1)检测.Xresources,.Xmodmap及.Xkbmap文件的检测,并将其与系统的Xresources,Xmodmap及Xkbmap文件结合使用配置。
(2)执行/etc/X11/xinit/xinitrc.d/目录下的脚本。
(3)执行~/.Xclients文件加载运行桌面环境,如果.Xclients不存在则加载系统的/etc/X11/xinit/Xclients。
/etc/X11/xinit/xinitrc-common
为基于run-level3的xinitrc和基于run-level5的Xsession提供公共的代码部分。
/etc/X11/xinit/xinitrc.d/
被xinitrc脚本在X初始化时调用,实现X的功能设定。
/etc/X11/xinit/xinitrc.d/xinput.sh
X输入方式安装脚本。如默认的语言选择。
/etc/X11/xinit/xinput.d/
用于实现X输入的应用配置脚本目录。
/etc/X11/xinputrc
X输入设备初始化脚本。
/etc/X11/xorg.conf
主配置文件,关于显示的硬件配置及X模块信息。
/etc/X11/xorg.conf.backup
xorg.conf的备份文件。
/usr/lib/xorg/modules
X server运行时可动态加载的模块目录,默认只有一部分模块被X server加载,要加载其它的可选模块需要手工编辑/etc/X11/xorg.conf文件。
/usr/bin/startx
此程序引用/etc/X11/xinit/与/usr/X11R6/bin/目录中上其他程序和配置文件来启动X窗口。
startx只是xinit程序的一个简单的前端实现。
它运行时会首先加载用户的.xinitrc文件,如果不存在就使用系统的xinitrc文件,如果两者都不存在则指示xinit使用它的默认配置。
X DISPLAY变量:
==============================================================
X根据不同的DISPLAY变量值来区别不同的X server。
hostname:displaynumber.screennumber
hostname:
如果X server与X client在同一个计算机上,hostname值可以省略,缺省为localhost。
如果X server在其它计算机上,hostname可以是IP地址、主机名或完全限定域名。
displaynumber:
X server的显示终端号。X server可以建立多个显示终端,进而可以实现多个X client的链接。
screennumber:
屏幕编号,针对有多个显示器的X server。进而可以将不同的的终端数据显示在不同的屏幕中。
displaynumber,screennumber都是从0开始。
实例:
:0 表示X Server在本机,第一个显示终端
:0.0 表示X Server在本机,第一个显示终端的第一个显示器
:1 表示X Server在本机,第二个显示终端
sense:0 表示X Server是sense,第一个显示终端
sense:0.1 表示x Server在sense上,第一个显示终端的第二个显示器
192.168.0.90:1 表示x Server在192.168.0.90上,第二个显示终端
查询display名:
系统中默认的display名是保存在DISPLAY环境变量中,在X系统运行时,可以使用下面的命令进行查询:
# echo $DISPLAY
如果X服务器和客户程序在同一台计算机上,一般的显示都是:
:0
X客户程序可以用“-display displayname"来指定X服务器为其服务
% rsh big xterm -display myws:0 -ls </dev/null &
Part II:Fonts
RHEL5 X使用Fontconfig及xfs两种子系统来管理和显示字体。
Fontconfig:一种比较新的字体管理系统,它简化了字体管理并提供了一系列新的特性,如:反锯齿 (anti-alias)。使用Qt3及GTK+2图形包编译的程序默认自动使用此字体管理系统。
xfs:为了兼容以前的版本,RHEL5还包括了原来的字体管理系统,称为core X font subsystem。
Fontconfig:
Fontconfig字体管理系统允许应用程序直接访问系统上的字体,及使用Xft或其它字体渲染机制渲染具有高级anti-alias的Fontconfig字体。
Fontconfig/Xft字体管理系统正在逐步代替core X字体管理系统。
Fontconfig配置文件:/etc/fonts/fonts.conf,此文件不允许手工修改。
向Fontconfig系统增加字体:
1>为了区别其它用户建立的字体及系统字体,在/usr/share/fonts/(系统级)或~/.fonts/(用户级)目录下自主建立一个文件夹,如sense。
================================
mkdir /usr/share/fonts/sense
================================
2>将字体COPY到建立的目录下。
=========================================
cp ./simsun.ttf /usr/share/fonts/sense/
=========================================
3>更新字体信息缓存(font information cache)。
=======================================================================
fc-cache -fv <font-directory>
<font-directory>为刚才建立的字体目录的绝对路径,如:/usr/share/fonts/sense/。
=======================================================================
也可以使用GNOME的文件浏览器访问fonts://,手工将字体脱放到目录下。
字体管理:
Font Preferences程序用于应用字体到X系统(System (on the panel) => Preferences => Fonts)。
由于Fontconfig只支持GTK+2及Qt3软件,GTK+1.2程序不受Fontconfig中Font Preferences配置影响,所以对GTK+1.2程序应手工在当前用户目录下建立.gtkrc.mine文件实现字体的配置:
==========================================================================
style "user-font" { f } widget_class "*"
style "user-font"
==========================================================================
说明:
<font-specification>:字体规范描述,例如:
-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-*-*.
系统所有字体的完整字体规范描述可以通过xlsfonts命令获得,或是使用交互式的xfontsel程序。
[root@ssn ~]# xlsfonts | head
-adobe-courier-bold-o-normal--10-100-75-75-m-60-iso10646-1
-adobe-courier-bold-o-normal--10-100-75-75-m-60-iso8859-1
-adobe-courier-bold-o-normal--11-80-100-100-m-60-iso10646-1
-adobe-courier-bold-o-normal--11-80-100-100-m-60-iso8859-1
-adobe-courier-bold-o-normal--12-120-75-75-m-70-iso10646-1
-adobe-courier-bold-o-normal--12-120-75-75-m-70-iso8859-1
-adobe-courier-bold-o-normal--14-100-100-100-m-90-iso10646-1
-adobe-courier-bold-o-normal--14-100-100-100-m-90-iso8859-1
-adobe-courier-bold-o-normal--14-140-75-75-m-90-iso10646-1
-adobe-courier-bold-o-normal--14-140-75-75-m-90-iso8859-1
Core X Font System
出于兼容性的目的,RHEL5保留了core X字体系统。
core X字体系统使用X Font Server(xfs)为X clint应用程序提供字体。
X server通过/etc/X11/xorg.conf配置文件中Files Section部分的FontPatch来查找字体路径。
===========================================
Section "Files"
RgbPath "/usr/share/X11/rgb.txt"
FontPath "unix/:7100"
EndSection
===========================================
X server通过链接到xfs server监听的端口来获得字体信息,所以xfs server必须在X server前启动。
xfs文件体系:
/etc/rc.d/init.d/xfs
用于启动xfs server的脚本。
/etc/X11/fs/config
xfs的配置文件。
向xfs(Core X font subsystem)添加字体:
1>为了区别其它用户建立的字体及系统字体,在/usr/share/fonts/(系统级)或~/.fonts/(用户级)目录下自主建立一个文件夹,如sense。
================================
mkdir /usr/share/fonts/sense
================================
2>将建立的目录加入到xfs路径。
===========================================
chkfontpath --add /usr/share/fonts/sense
===========================================
3>将字体文件COPY到所建立的字体目录下。
=========================================
cp ./simsun.ttf /usr/share/fonts/sense/
=========================================
4>使用root权限更新字体信息。
============================================================================
ttmkfdir -d /usr/share/fonts/sense -o /usr/share/fonts/sense/fonts.scale
============================================================================
5>重新加载xfs font server配置文件。
=======================
service xfs reload
=======================
|