XWINDOWS系统使用指南(转载自清华BBS)四
它的window-id,然後将此window-id 做为xwd 的id选项之引数。阶层的资讯:你可以看到这个视窗的父视窗的id,几个子视窗的id,以及
根视窗的id,在xlswins 中可得到相同的资讯,但在这里只能得到最
近一层子视窗的id,并非整个子树。
几何细节:视窗的大小和位置,以及它的四个角的位置。
和server有关的重建构参数:像”gravity ”和”backing store ”这
些状态(state) ,当视窗改变大小或从被遮盖的状态下重新显
露出来时,server需要用到这些参数,这些参数你自己不会用到,
但可藉它了解系统如何运作。
事件参数:这些参数也是给server而非给使用者用的。
视窗管理器资讯:在系统概观中,我们曾经提过应用程式藉著给视窗管理
器一些提示”hints ”来达成通讯(这些提示包括应用程式所希望视
窗的大小,以及重定大小时的限制等。),xwininfo在这个部份的输
出便是告诉你这些”提示”的资料。Program supplied location 为
应用程式建议它自己应该摆哪里。如果你曾给过位置,不论是在命令
列或resource file ,都会在 User supplied location 出现,在视
窗大小方面同理可推,resize increments 解释了为什麽有些视窗(
例如xterm 和xfd )不能把大小定为任意数目的像素,因为应用程式
已经告诉了视窗管理器在重定大小时按多少个像素的倍数放大或缩小
(xterm 和xfd 它们的大小和所使用的字型有关),你也可以由这个
参数知道目前视窗的位置,所以稍後你可以在同一位置上重建它。
12.2.3 列出视窗的性质 -- xprop
如同我们在系统概观所提及的,一个”性质”(property)是指一小段有关
视窗的资料,xprop 让你列出一个特定视窗的所有”性质”,你也可以列印
一个字型的性质。
你可以经由常用的方式来选择视窗(碰触滑鼠按钮或使用-root 或-id 选项)
,如果是指定字型,则用选项-font fontname。
显示出来的格式为:对每一个性质,均有一个性质名称,在其後用小括弧
括住的为性质的型态或格式,最後则为性质的值。大部份你所看到的性质型态
为STRING,性质的值用”
”括起来,其它的性质型态的格式是专属的,从
性质的值很容易了解它的意义,对字型显示的格式稍有不同,它没有性质型态,
但性质的值意义也很明显。
注意:xprop 的输出相当的复杂,我们并不需要了解其所有的内容,端视需要而
定。
以下让我们看看从应用视窗、根视窗、字型所获得不同的输出:
应用视窗的性质
图12-4为xprop 对一个应用视窗的输出,有些资讯你已经在xwininfo中看
到过,在此处你可以在名为WM_NORMAL_HINTS 和WM_HINTS的性质中看到。
┌——————————————————┐
│ p140 fig 12.4 │
│ │
│ 图12-4 一个应用视窗的性质表列 │
└——————————————————┘
其它的性质如下:
WM_COMMAND:执行启动这个应用程式的命令列,被切成一个个用双引号括起来的
单字。
WM_CLIENT_MACHINE :执行这个client应用程式的机器名称(这个例子应用程
式和server在同一部机器上执行,所以机器名称为venus 。)。
WM_CLASS:显示应用程式的instant name和class name,instant name是命令
列中-name 选项的值。
WM_ICON_NAME:应用程式的表徵图所要显示出来的名称(你的视窗管理器必须
能够支援方可)。
WM_NAME :很奇怪的,这不是应用程式的名称,而是由-title选项指定的视窗
标题名称,有些视窗管理器会把标题名称显示在应用视窗的标题
棒上。
注意:上述命令列中-name 和-title两个选项使用得很广,但它并非通用
(universal) 的选项,应用程式在撰写时必需要使用到X Toolkit(工
具箱)才能把这两个选项当成标准选项来用。(参见第15章)
根视窗的性质
图12-5是xprop 对根视窗的输出,显而易见的是,它不会含有任何视窗管
理器的性质,因为视窗管理器绝不可能重新建构根视窗。
┌——————————————————┐
│ p141 fig 12.5 │
│ │
│ 图12-5 根视窗的性质表列 │
└——————————————————┘
有趣的选项如下:
RESOURCE_MANAGER:这个根视窗性质是resource结构的输入源之一,我们将在
第11章详细地讨论它。
几个CUT_BUFFER:当你切取一段本文(做剪贴动作常用),这段被切取的本文
被放在一个切取缓冲器(cut buffer)中,这些缓冲器被当作是根
视窗的性质来储存,对於切取,缓冲器是循环使用的,例如上次
用5 号缓冲器,则下次用6 号,接下来7 号、0 号、1 号等等,
但是黏贴则一定使用上次切取动作所用的缓冲器。
字型性质
图12-6列出当我们指定*times*bold*-i-*-180-*的字型性质,大部份的资
讯我们都不需关心,你可能只对FULL_NAME 和POINT_SIZE有兴趣。
┌——————————————————┐
│ p142 fig 12.6 │
│ │
│ 图12-6 字型的性质表列 │
└——————————————————┘
12.3 观察X的事件 -- xev
”事件”或多或少驱动著整个视窗系统,所有的输入,不论是滑鼠或键盘,
均由”事件”来掌握,”事件”也被用来驱动视窗的重新建构和展现。xev 程
式让你看到当不同的动作发生时,会产生什麽”事件”,以及和”事件”有关
的资讯。
当xev 启动,它会建一个类似图12-7的视窗,而在这视窗中,会开始列出
类似图12-8的有关事件的细节部份。
┌——————————————————┐
│ p143 fig 12.7 │
│ │
│ 图12-7 xev 视窗 │
└——————————————————┘
┌——————————————————┐
│ p143 fig 12.8 │
│ │
│ 图12-8 xev 的输出 │
└——————————————————┘
由於 xev提供大量的系统内部操作细节,你如果想要”实验”系统,这是一个
很有用的程式,有两个说明手册上未提到的选项可以影响到xev 的行为:
-bs option:此选项改变xev 对server是否使用backing store (见第2章),
使用backing store 将减少曝光”事件”的次数(也就是减少应
用程式重新更新它自己视窗的次数),正确的选项内容为always,
whenmapped和notuseful 。
-s:使用save-unders (见第2章),也就是说,要求server保存那些被xev
的视窗遮盖之视窗的内容。
12.3.1 xev 和键盘
如果你将指标移入xev 视窗且按下你的键盘上的某一个键,则一个(或多
个)键盘”事件”会发生,”事件”的资讯包含了keycode 和keysym,这是最
容易观察你的机器上某一个键是什麽键码(keycode) 的方法:执行xev ,按一
个键,xev 便会给你资讯,这对定制你的键盘非常有用,见18章。
12.4 结论
本章所述的这些程式,让你观察系统的内部;获得它的操作细节;和它的
视窗及其它成员特定的资讯.对这些程式本身而言,它们能帮助你了解系统,
但它们最大的用途可能是用来连接那些定制系统的程式。以下的几章在说明如
何定制和设定你的系统,好让系统更适合你工作的习惯。
下一章讨论处理字型和颜色,及如何使用它们。
=====
第13章 使用X的字型和色彩
X支援多种的字型及几乎无限多种变化的色彩,大多数的应用程式允许你指
定应用视窗中各个不同部份的颜色,而几乎所有的X程式均允许你指定你想要使
用的字型。
在X中的字型(fonts):
.有固定的宽度(像哑终端机的字元)或成比例的间隙。
.由本文字元(text characters) 或符号组成,或以上两者均有。
.具有多种的点尺寸(point size)。
.可以修改以适应特定的萤幕解析度(例如对於同一点尺寸的某一种字型,
你可能对75 dpi (dots-per-inch 每寸若干点) 的萤幕有一种版本,对
100 dpi 的萤幕有另一种版本)。
.有一种标准命名的传统。
.可以以全