src2,http://zh.wikipedia.org/w/index.php?title=X%E7%AA%97%E5%8F%A3%E7%AE%A1%E7%90%86%E5%99%A8&variant=zh-cn
src3,http://linux.chinaunix.net/techdoc/beginner/2006/10/16/942202.shtml
src1节选:
用 Xwindow 做一个有趣的试验
现在我们来做一个试验来引起你对 Xwindow 的兴趣。
很多人离开了 xdm 就不知道怎样启动 "Xwindow" 了。其实 Xwindow 的启动方式很简单。
首先,启动你的 X server。在 Linux 下,你可以直接输入 "X&",让一个 X server 在后台运行。这样,一个占据整个屏幕的布满斜纹的窗口(根窗口)就出现了。如果是 Exceed 或者 X-win32,你需要把屏幕设置为 "single window" 才能看到这个窗口。
接着,Linux 用户需要用 xauth 给你的 X server 设置一个密码,这样别人就不能非法连接你的 X server。你需要Ctrl-Alt-F1切换到tty1才能输入这个命令。Exceed 和 X-win32 的用户不需要这步。以下的例子只用 Linux 作为实例,其它系统的用户可以依葫芦画瓢。
xauth add :0 . `mcookie`
好了,现在你可以试试启动一个 xterm 到这个 X server 上:
xterm -display :0
按 Alt-F7 切换到 X,你看到了一个不受窗口管理器管理的 xterm。试试移动它呢?再切换到 tty1 启动另一个 xterm,两个 xterm 重合了吗?你怎样在第一个 xterm 里输入呢?这样用起来很痛苦吧?那么你可以在 xterm 里启动一个窗口管理器,比如 twm,直接运行 "twm&" 就行了。
你发现xterm的窗口都被加上了标题栏,按钮和边框,你现在可以移动它们了。试试把 twm 杀死,看看那些标题栏,按钮,边框是不是都消失了?你知道了窗口管理器的作用了吧。
现在告诉你怎样不用 XDMCP broadcast,绕过 CDE 的登陆界面,而使用 Sun 机器上的 CDE。其实你只需要把刚才那个例子里的 "twm" 换成 CDE 的窗口管理器 dtwm 就行了,或者启动 dtsession。它们一般在 /usr/dt/bin 下。Sun 还有另外一个窗口管理器叫做 OpenLook, 它在系统里的名字叫做 olwm,你自己找找吧。
现在如果你自己在 Sun 机器上装一个 FVWM,你知道怎么绕过 CDE 登录而启动 FVWM 了吧?你不需要成为 root 就可以使用你喜欢的FVWM了。
.Xdefaults 文件的作用弄明白 X 的工作原理后,你就可以使用 .Xdefaults 来配置你的程序了。有人不理解 .Xdefaults 是用来干什么的,喜欢用 shell alias 出一些带有很多参数的命令,或者写一些 shell script,里面只有一行带有很多参数的程序调用,然后他说:“.Xdefaults 没用。”
其实 .Xdefaults 比起这些办法有很多好处。首先,几乎所有的 X 客户程序都可以从 .Xdefaults 文件得到配置信息,比如前景色,背景色,字体…… 这样你可以在同一个文件里配置所有 X 程序的样式,而不用写那么多 shell script。
另外,如果你用 xrdb .Xdefaults 把这些配置信息写入到根窗口的数据结构里,不是本地机器上的 X 程序也会遵守同样的样式。比如如果你的 .Xdefaults 里面有这些内容:
XTerm.background: midnightblue
XTerm.foreground: white
然后你用 xrdb ~/.Xdefaults,那么所有的 xterm 都会使用 midnightblue 作为背景色,使用白色显示字符。这些配置,用X术语叫资源(resource)。
有时候你会开很多 xterm 窗口在机器上,它们来自不同的远程机器,这时候如果它们都用同样的样色和字体,你就不容易分辨它们了。比如有一天,我在实验室的PC机上打开了很多 xterm,它们来自本机,实验室的 Sun 服务器, 我宿舍的机器和数据库实验室一台 HP 服务器。在我走之前,想关闭本地的机器,我输入 “shutdown -h now” 在一个我自认是本地的 xterm 上,结果,等了一会儿,我回头看到机器没关掉,只是那个 xterm 停止了响应。我一拍脑袋:糟了,我把宿舍的机器给关掉了!
为了避免这种情况,你可以在不同的机器上编辑不同的 .Xdefaults,而不使用 xrdb 在根窗口导入这些配置。这样不同的机器上的 xterm 使用不同的颜色,你就不容易搞错了。
src3,节选
我们知道 init 是linux的根进程,是所有进程的父进程。同样, xinit是所有Xwindow进程的根进程
Startx
startx 命令可以在命令行下启动图形界面。执行startx 命令时,实际执行这一命令:
xinit /etc/X11/xinit/xinitrc -- /etc/X11/xinit/xserverrc
根据脚本 /etc/X11/xinit/xserverrc 启动Xserver,同时根据脚本 /etc/X11/xinit/xinitrc 启动指定Xclient进程,例如窗口管理器
脚本 /etc/X11/xinit/xserverrc 以预设的参数运行程序 /usr/bin/X11/X
/etc/X11/xinit/xinitrc 脚本则指向 /etc/X11/Xsession ,依次启动 /etc/X11/Xsession.d 目录中的脚本
* 您可以在用户配置文件 ~/.Xsession 中定义使用的WM,它的优先级高于全局配置文件
* startx启动时,并不会再进行身份认证。因为它启动的是 /etc/X11/Xsession.d/gnome-session ,而不是 GDM
GDM会话
Ubuntu系统启动时自动进入图形界面,不需要运行 startx 命令
在某些启动级别中,包含了gdm的启动脚本,例如 : /etc/rc2.d/S13gdm
1. 指向 /etc/gdm/gdm-cdd.conf 文件,加载预设视觉主题,启动 /usr/lib/gdm/gdmgreeter(登录屏幕)
2. 用户身份认证完成后,启动 /etc/X11/default-display-manager 这个文件中设定的默认窗口管理器 /usr/sbin/gdm
gdm在启动时,会要求用户名和密码,也就是我们看到的登录屏幕(gdmgreeter)
* /usr/share/xsessions 目录下为所有可用登录会话的脚本
Xwindow的主要配置文件
==================
X服务器
---------------------------------
X服务器的主要配置文件为 /etc/X11/xorg.conf
代码:
Section "ServerLayout"
Identifier "Default Layout"
Screen "Default Screen" 0 0
InputDevice "Generic Keyboard"
InputDevice "Configured Mouse"
EndSection
服务器布局:已激活输入、显示设备的名称
Section "Module"
加载的模块
Section "Files"
X核心字体路径
代码:
Section "Screen"
Identifier "Default Screen"
Device "ATI Technologies, Inc. RV370 5B62 [Radeon X600 (PCIE)]"
Monitor "DELL E176FP"
DefaultDepth 24
SubSection "Display"
Depth 1
Modes "1280x1024" "1152x864" "1024x768" "800x600" "720x400" "640x480"
EndSubSection
服务器布局中定义的显示设备。 包括 显卡、显示器、默认色深、可用分辨率
代码:
Section "Device"
Identifier "ATI Technologies, Inc. RV370 5B62 [Radeon X600 (PCIE)]"
Driver "fglrx"
Option "KernelModuleParm" "agplock=0"
VideoRam 131072
EndSection
名为 "ATI Technologies, Inc. RV370 5B62 [Radeon X600 (PCIE)]" 的 "Device"
Driver 为驱动。如果不能正常启用图形界面,首先尝试 “vesa”
…………
整个配置文件的结构是这样的:
代码:
/
├/Section "ServerLayout" 布局
│ ├Section "InputDevice" keyboard 键盘
│ ├Section "InputDevice" mouse 鼠标
│ │
│ └ /Section "Screen" 显示
│ ├Section "Monitor" 显示器
│ ├Section "Device" graphcard 显卡
│
│
├Section "Files" 字体
└Section "Module" 模块
X客户端
-------------------------------
在/etc/X11/Xsession文件中可以发现下列内容
代码:
OPTIONFILE=/etc/X11/Xsession.options
SYSRESOURCES=/etc/X11/Xresources
USRRESOURCES=$HOME/.Xresources
SYSSESSIONDIR=/etc/X11/Xsession.d
USERXSESSION=$HOME/.xsession
ALTUSERXSESSION=$HOME/.Xsession
ERRFILE=$HOME/.xsession-errors
OPTIONFILE=/etc/X11/Xsession.options 设定X进程的启动参数 例如允许用户进程allow-user-xsession
Xresources 为X资源文件。许多程序保留了X接口,允许X服务器管理一些视觉选项,例如窗口内的字体,配色等
xsession为X进程,可以设置一些启动时自动运行的程序,也可以用来设定自己的窗口管理器(窗口管理器和桌面环境或者登录管理器是无关的)
字体
====
freetype渲染引擎
--------------------------
作为Xorg服务器的一个模块,freetype的功能包括读取Truetype字体信息,如大小、分辨率、编码等,并以之为依据渲染字体
freetype2.x相对于freetype1.x 增加了抗锯齿等功能
(/etc/X11/xorg/conf 的 Module 字段中,可以选择使用的字体渲染模块,建议使用默认的freetype )
freetype只负责渲染字体。而查找字体,则可以由X服务器、X客户端或者字体服务器来完成。
找到字体后,使用freetype引擎就地渲染
X服务器根据X客户端的请求(字符编码),查找字体并进行渲染,然后显示,我们称之为X核心字体
X客户端自行查找字体并进行渲染,X服务器只负责显示,我们称之为Xft字体
由于Xft字体的渲染在客户端完成,所以它可以动态的加载,而不需要随同X服务器一同启动
另外还有一种字体服务器模式,例如Xfs字体:当客户端请求字体时,X服务器将请求转发到字体服务器,由字体服务器查找字体,并使用freetype引擎渲染,将结果传回X服务器,X服务器进行显示……
X核心字体
---------------------
/etc/X11/xorg.conf 中可以配置X核心字体的搜索路径。
代码:
Section "Files"
FontPath "/usr/X11R6/lib/X11/fonts/misc/"
FontPath "/usr/X11R6/lib/X11/fonts/Type1/"
FontPath "/usr/X11R6/lib/X11/fonts/Speedo/"
FontPath "/usr/X11R6/lib/X11/fonts/100dpi/"
FontPath "/usr/X11R6/lib/X11/fonts/75dpi/"
EndSection
当X客户端向X服务器请求显示文字的时候,X服务器会按上面列表的先后顺序查找字体
例如:显示中文时,如果第一个路径中的字体不包含中文,则查找下面的路径,直到发现中文字体
请把您偏好的字体放在最上的位置
要使安装的字体能够作为X核心字体使用,将字体的安装路径添加到上面的列表中,使用 mkfontscale、mkfontdir扫瞄文件夹中的字体,并生成索引,就可以了(建议使用 ttmkfdir 生成fonts.scale ,将其复制为fonts.dir)
字体的选择及显示风格,可以修改GTK1的配置文件,或者在Xresources文件中对程序单独进行定义
事实上,在我们的日常应用中,X核心字体环境并不常见,使用GTK1图形库的程序、某些类型的终端……Emacs也是这样一个老派的程序……不过Emacs23中刚刚加入了xft字体的支持
Xft字体
--------------------------
Xft字体相关选项在 /etc/fonts/fonts.conf 文件中配置
Xft字体可以使用命令 fc-cache 进行配置, 递归扫瞄以下目录中的字体(包括子文件夹中的字体),并建立字体缓存
/usr/share/X11/fonts
/usr/share/fonts
/usr/local/share/fonts
~/.fonts
(/etc/fonts/fonts.conf ""字段)
多数支持GTK2或者Qt图形库的X客户端能够使用Xft字体渲染技术 (GTK2为Gnome使用的图形库,Qt为KDE使用的图形库。相对来说,GTK2图形库在程序的GUI设计中更加通用)
如果需要安装字体,只要把字体拷贝到以上任何一个目录, fc-cache -fv 刷新字体缓存即可 (参数 -f 为强制刷新,-v 显示过程)
fc-list 能够列出所有可用字体
字体的选择及显示风格,可以修改GTK2或者Qt的配置文件,建议使用图形界面配置(通常桌面环境中附带了相关程序,例如gnome-font-properties)