13:27] ok
[13:27] 开始了
[13:27] 1 X资源(Resource)的概念
[13:27] X下的应用
程序大多数都是高度可配置的,一个用户可以在很大程度上改变
[13:27] 应用程序运行时的外观,甚至在一定程度上改变其行为特性,这种配置可以通过
[13:27] 两种方式完成.
[13:27] (1)在运行程序时设置命令行选择项
[13:27] (2)应用程序在运行时从一个约定的正文文件中读取需要的选择项.这个
[13:27] 正文文件就是资源文件,用户可通过正文编辑器对它进行随意修改.
[13:28] X资源有二种概念
[13:28] 一种是由xlib所调配的
[13:28] 各种系统资源
[13:28] 比如,显示设备
[13:28] 我们讨论的X Resources
[13:29] 则是指应用程序所需要使用的
[13:29] 各种screens上的元素
[13:29] 如字体
[13:29] 在X窗口系统中,资源这个词有两种含义.在用Xlib进行编程时,窗口,色彩
[13:29] ,位图和字体这些都是由X服务器维护,X客户程序通过X协议请求可存取的资源
[13:29] .但对X应用程序来说,资源是指任何影响其外观和行为的参数,像窗口的边界,
[13:29] 色彩及大小,位置等.
[13:29] 另外,资源不限于只和X有关的参数.任何能控制应用程序行为特性而又可被
[13:29] 用户设置的量,都是应用程序的资源.比如应用程序有一个叫做debug的变量.
[13:29] 用来控制运行时是否输出详细的调试信息,于是debug变量也可看作是应用程序
[13:29] 的一个资源.
[13:30] 我们可以看一个实例
[13:30] 现在谁用linux?
[13:30] 现在谁用linux?
[13:31] 现在,打开xterm
[13:31] xterm &
[13:31] editres &
[13:32] 然后
[13:32] 会出现一个窗口
[13:32] 分为三个区域
[13:32] 从menu中
[13:32] 我们选择
[13:33] 从command菜单中
[13:33] 我们选择get tree
[13:33] 这时,mouse pointer会变成一个十字
[13:33] 把它在xterm上点击一下
[13:34] xterm上的任何一处都可以
[13:34] 这时,三个区域中的位于下方的主树目录区
[13:34] 就会显示出xterm所用到的各种资源名
[13:35] 我把这个目录树保存在一个文件中,让大家看一看
[13:36] XTerm color_xterm
[13:36] VendorShellExt shellext
[13:36] VT100 vt100
[13:36] SimpleMenu fontMenu
[13:36] SmeBSB menuLabel
[13 ] SmeBSB fontdefault
[13:36] SmeBSB font1
[13:36] SmeBSB font2
[13:36] SmeBSB font3
[13:36] SmeBSB font4
[13:36] SmeBSB font5
[13:36] SmeBSB font6
[13:36] SmeBSB fontescape
[13:36] SmeBSB fontsel
[13:36] SimpleMenu mainMenu
[13:36] SmeBSB menuLabel
[13:36] SmeBSB securekbd
[13:36] SmeBSB allowsends
[13:36] SmeBSB redraw
[13:36] SmeLine line1
[13:36] SmeBSB suspend
[13:36] SmeBSB continue
[13:36] SmeBSB interrupt
[13:36] SmeBSB hangup
[13:36] SmeBSB terminate
[13:36] SmeBSB kill
[13:36] SmeLine line2
[13:36] SmeBSB quit
[13:36] SimpleMenu vtMenu
[13:36] SmeBSB menuLabel
[13:36] SmeBSB scrollbar
[13:36] SmeBSB jumpscroll
[13:36] SmeBSB reversevideo
[13:36] SmeBSB autowrap
[13:36] SmeBSB reversewrap
[13:36] SmeBSB autolinefeed
[13:36] SmeBSB appcursor
[13:36] SmeBSB appkeypad
[13:36] SmeBSB scrollkey
[13:36] "myres.txt" 53 lines, 1025 characters
[13:37] 我们看到
[13:37] get tree在那里?
[13:37] 在这个树中有实例名
[13:37] 我没有啊?
[13:38] command菜单里
[13:38] 第一项
[13:38] 没COMMAND MENU
[13:39] 有什么问题,大家在后面再讨论
[13:39] 对的
[13:39] 然后
[13:39] 在这树中
[13:40] 我们可以看到xterm所使用的各种资源的名称
[13:40] 资源名的表现有二种形式
[13:40] 一种是资源的实例名
[13:40] 一种是类名
[13:40] 比如XTerm
[13:40] 是类名
[13:41] 而xterm则是一个实例名
[13:41] 通常在xresources中,两种方式都是可以采用的
[13:41] 资源名由应用程序及其各个成分决定.这里成分是指组成应用程序的各个子窗口,
[13:41] 如果是基于X Toolkit的应用程序,则指组成应用程序的各个widget.应用程序或其成
[13:41] 分的名字可以有两种类型:类名(class name)或实例名(instance name).类名指应用
[13:41] 程序或成分所属的一般类型,具体到某个应用程序或某个成分,则各自又有其实例名.
[13:41] 像我们上面说的xterm程序的实例名就是xterm,它的类名则是XTerm--这也是它的
[13:41] 资源文件名.大多数X应用程序都以这种方式命名资源类名.以xterm为例,它有一个成分
[13:41] (子窗口)叫vt100,类名是vt100(因为它要仿真一个VT102型的终端),VT100又包含一个
[13:41] 子成分叫scrollbar,类名为Scrollbar(滚动条).现在要改动vt100的前景色和scrollbar
[13:41] 的开关状态.前景色资源名字一般是foreground,滚动条的状态则是一个布尔变量on来
[13:41] 控制.现在来看看在资源文件中是怎么说明这两种资源的.
[13:41]
[13:42] xterm.vt100.foreground: navy
[13:42] xterm.vt100.scrollbar.on: true
[13:42] 对于xterm来说,我们如果要对其进行定制
[13:42] 比如
[13:43] 我们对vtmenu中的一项scroll进行定制
[13:43] 将其颜色设为红色
[13:44] 我们先要在资源树中的color_xterm--$#@62;mainmenu--$#@62;scrollbar
[13:44] 点击该项
[13:44] 使scrollbar反白显示
[13:44] 然后,从command菜单中
[13:45] 选择show resources box
[13:45] 这时,我们就能看到一个显示有scrollbar所能使用的各项资源的窗口弹出
[13:46] 我们从中选择foreground
[13:46] 把它的值改成red
[13:46] 然后apply
[13:47] 我们就会发现vtmenu中的scrollbar这一项的颜色被改成了红色
[13:47] 这就是XResources的一个实例
[13:48] 从中,我们可以对xclient进行多样化的定制
[13:48] 2 xresources的具体表述语法
[13:48] 以xterm为例
[13:49] 如果要表述scrollbar中的foreground资源名
[13:50] 则其资源语法为:color_xterm.vtmenu.scrollbar.foreground:
[13:51] color_xterm.vtmenu.scrollbar.foreground:red
[13:51] 的结果就是我们在所进行的那个实例
[13:52] 有朋友要问:如果我需要对xterm中的所有实例的foreground全设成红色
[13:53] 是不是都需要一条条的写过来?
[13:53] 在这种情况下
[13:54] X提供了通配符"*"和"?"
[13:54] 以xterm的foreground为例
[13:54] 我们只需要
[13:55] 用一个"*"来代替中间的所有实例
[13:56] color_xterm*foregound:red
[13:57] xterm中的所有具有前景色属性的地方都成为了红色
[13:57] 一个资源在设置以后
[13:58] 应该用资源文件保存起来
[13:58] 一般系统级资源文件的保存目录为
[13:58] /etc/X11/app_defaults
[13:59] 这是基于slackware
[13:59] 如果,每个用户要设置自已的专用资源
[14:00] 则以.Xdefaults为文件名,把文件放在自已的home目录中
[14:01] 并且用xrdb -merge /home/yourname/resource
[14:02] 把资源的设置并入资源数据库中
[14:02] 这样,以后我们进入X以后,就能看到上次所进行的资源修改
[14:03] 在众多的X应用程序中
[14:03] 并不是所有的程序都可以用editres的方法进行修改资源的
[14:04] 一般,只有采用了libXt.so的程序才能修改
[14:12] 对于,现在最新的KDE和gnome
[14:12] 他们都提供了更好的资源的修改工具
[14:13] 不过,不论工具的外观如何
[14:13] 最终仍是以修改X Resources为根本