X Window 系统使用指南--资讯与状态程式


第12章 资讯与状态程式
第参部 定制系统
第12章 资讯与状态程式在本章,我们将讨论一些提供视窗系统本身资讯和目前状态的程式 。
这包括了检查系统上视窗各种性质 (property) 的工具,和一个观察X
事件结构是如何工作的程式 。这些程式有下列用途:.当你使用系统时,这些工具程式所提供有关系统内部组织和操作的资讯,
可以帮助你了解发生了什麽事 。.当你要做某种处理时,可以藉著所给的资讯来确认系统的组件 。(例如
你必须知道一个视窗的window-id,才可以用xwd 来倾印它 。).你将经常把从这些工具获得的资讯,当成定制系统工具程式的输入(稍
後几章会讨论) 。
12.1 列出你的Xserver的特徵 -- xdpyinfoxdpyinfo列出有关你的Xserver和server所控制萤幕之各种项目的资讯,
一个典型的输出见图12-1(一个server在Sun 3/50单色工作站上执行的结果) 。【X Window 系统使用指南--资讯与状态程式】┌———————————————————┐
│ p134 fig 12.1 │
│ │
│ 图12-1 典型的xdpyinfo工具程式的输出 │
└———————————————————┘
12.2 获取有关视窗的资讯有三个程式可以提供目前在你显示器上视窗的资讯 。它们是从不同的角度
看系统:1. 列印视窗的阶层 -- xlswins2. 对单一视窗详细的资讯 -- xwininfo3. 列出视窗的性质 -- xprop
12.2.1 列印视窗的阶层 -- xlswins在第一部曾经提过,所有在系统上的视窗被安排成树状的阶层,根视窗
(也叫背景(background)视窗)在最上层,在其下才是应用视窗,每一个应用
视窗可以拥有它自己的子视窗阶层 。xlswins 列印出这个树状结构,从根视窗或所指定的视窗起至其下所有的
树状结构,对每一个视窗,xlswins 列出视窗的window-id 并用括弧括住它的
名称(如果有的话),子视窗则在下面的几行依序以缩入(indent)两格的方式
列出 。下面的图对xman应用程式列出三个不同子树的输出,藉以展示xlswins
如何剖析系统的结构 。图12-2a 是xman主选单的树 。你可以看到在应用视窗(0X600011)中含有另一
个视窗(0X600012),而(0X600012)又包含了四个视窗,不需要知道原始程式,
你也可以猜得到是一种视窗包含著视窗,而对子视窗做某种管理的情况 。图12-2b 是xman手册页(manpage) 视窗的树 。比上一个例子复杂一些,而且
也无法在确定是否在这一页手册页中总共就只有这麽多视窗和子视窗 。所以 ...图12-2c 这是xlswins 更详细的输出,比上一个例子需要在命令列中多加
一个 -l 的选项,多出来的讯息为巢状的深度(第几层树)、相对於父视窗的
几何座标和大小、和视窗左上角距离根视窗的座标(也就是萤幕上的绝对座标)
,有了这些视窗的座标,你就能了解它们在萤幕上的位置,如果你还是搞不太
清楚,可以执行xwd,指定xlswins 所输出的window-id,在本图,我们发觉
视窗(0X60005d)是高而窄的,所以可能是一个卷动棒 。我们可以试著用命令:xwd -id 0x60005d | xwud结果的确 xman 卷动棒的图形出现了,这个命令我们在9.2.1 节有提过(只不
过这一次我们不把输出送到档案,而利用导管 (pipe) 的技巧直接当成另一程
式的输入 。)你可以用这种方法分析任何视窗 。┌——————————————————┐
│ p136 fig 12.2 │
│ │
│ 图12-2 三个xlswins 的输出 │
└——————————————————┘注意:并非所有的视窗都可列印出资讯,如果你碰到这种无资讯可供列印视窗
,你将获得类似下面的讯息:x Protocol error: BadMatch, invalid parameter

推荐阅读