📄 00000001.htm
字号:
<HTML><HEAD> <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER> <BR> 第12章 资讯与状态程式 <BR> <BR> <BR> 在本章,我们将讨论一些提供视窗系统本身资讯和目前状态的程式。 <BR>这包括了检查系统上视窗各种性质 (property) 的工具,和一个观察X <BR>事件结构是如何工作的程式。 <BR> <BR> 这些程式有下列用途: <BR> <BR> .当你使用系统时,这些工具程式所提供有关系统内部组织和操作的资讯, <BR> 可以帮助你了解发生了什麽事。 <BR> <BR> .当你要做某种处理时,可以藉著所给的资讯来确认系统的组件。(例如 <BR> 你必须知道一个视窗的window-id,才可以用xwd 来倾印它。) <BR> <BR> .你将经常把从这些工具获得的资讯,当成定制系统工具程式的输入(稍 <BR> 後几章会讨论)。 <BR> <BR> <BR>12.1 列出你的Xserver的特徵 -- xdpyinfo <BR> <BR> xdpyinfo列出有关你的Xserver和server所控制萤幕之各种项目的资讯, <BR>一个典型的输出见图12-1(一个server在Sun 3/50单色工作站上执行的结果)。 <BR> <BR> ┌———————————————————┐ <BR> │ p134 fig 12.1 │ <BR> │ │ <BR> │ 图12-1 典型的xdpyinfo工具程式的输出 │ <BR> └———————————————————┘ <BR> <BR> <BR> <BR>12.2 获取有关视窗的资讯 <BR> <BR> 有三个程式可以提供目前在你显示器上视窗的资讯。它们是从不同的角度 <BR>看系统: <BR> <BR> 1. 列印视窗的阶层 -- xlswins <BR> <BR> 2. 对单一视窗详细的资讯 -- xwininfo <BR> <BR> 3. 列出视窗的性质 -- xprop <BR> <BR> <BR> <BR> 12.2.1 列印视窗的阶层 -- xlswins <BR> <BR> 在第一部曾经提过,所有在系统上的视窗被安排成树状的阶层,根视窗 <BR>(也叫背景(background)视窗)在最上层,在其下才是应用视窗,每一个应用 <BR>视窗可以拥有它自己的子视窗阶层。 <BR> <BR> xlswins 列印出这个树状结构,从根视窗或所指定的视窗起至其下所有的 <BR>树状结构,对每一个视窗,xlswins 列出视窗的window-id 并用括弧括住它的 <BR>名称(如果有的话),子视窗则在下面的几行依序以缩入(indent)两格的方式 <BR>列出。下面的图对xman应用程式列出三个不同子树的输出,藉以展示xlswins <BR>如何剖析系统的结构。 <BR> <BR> 图12-2a 是xman主选单的树。你可以看到在应用视窗(0X600011)中含有另一 <BR>个视窗(0X600012),而(0X600012)又包含了四个视窗,不需要知道原始程式, <BR>你也可以猜得到是一种视窗包含著视窗,而对子视窗做某种管理的情况。 <BR> <BR> 图12-2b 是xman手册页(manpage) 视窗的树。比上一个例子复杂一些,而且 <BR>也无法在确定是否在这一页手册页中总共就只有这麽多视窗和子视窗。所以 ... <BR> <BR> 图12-2c 这是xlswins 更详细的输出,比上一个例子需要在命令列中多加 <BR>一个 -l 的选项,多出来的讯息为巢状的深度(第几层树)、相对於父视窗的 <BR>几何座标和大小、和视窗左上角距离根视窗的座标(也就是萤幕上的绝对座标) <BR>,有了这些视窗的座标,你就能了解它们在萤幕上的位置,如果你还是搞不太 <BR>清楚,可以执行xwd ,指定xlswins 所输出的window-id ,在本图,我们发觉 <BR>视窗(0X60005d)是高而窄的,所以可能是一个卷动棒。我们可以试著用命令: <BR> <BR> xwd -id 0x60005d | xwud <BR> <BR>结果的确 xman 卷动棒的图形出现了,这个命令我们在9.2.1 节有提过(只不 <BR>过这一次我们不把输出送到档案,而利用导管 (pipe) 的技巧直接当成另一程 <BR>式的输入。)你可以用这种方法分析任何视窗。 <BR> <BR> ┌——————————————————┐ <BR> │ p136 fig 12.2 │ <BR> │ │ <BR> │ 图12-2 三个xlswins 的输出 │ <BR> └——————————————————┘ <BR> <BR>注意:并非所有的视窗都可列印出资讯,如果你碰到这种无资讯可供列印视窗 <BR>,你将获得类似下面的讯息: <BR> <BR> x Protocol error: BadMatch, invalid parameter <BR> attributes <BR> Major opcode of failed request: 73 (X_GetImage) <BR> <BR> 为了篇幅的关系,我们只列出了完整xlswins 输出的三个小部份。如果在 <BR>你自己已经有好几个应用程式的系统上,你将可以看到uwm 和xterm 选单所相 <BR>关的子树,或者是与 xmh和 xedit 的命令按钮相关的子树。 <BR> <BR> <BR> 12.2.2 关於单一视窗的详细资讯 -- xwininfo <BR> <BR> xwininfo能够针对特定的视窗给你大量的资讯,你可以藉著命令列的选项 <BR>告诉xwininfo你要哪一部份的资讯。图12-3包含完整的列印输出(用选项-all) <BR> <BR> ┌——————————————————┐ <BR> │ p138 fig 12.3 │ <BR> │ │ <BR> │ 图12-3 典型的xwininfo输出 │ <BR> └——————————————————┘ <BR> <BR> 你可以用和xwd 相同的方法来指定你感兴趣的视窗: <BR> <BR> .交谈式(预设):开始时,xwininfo给你一个十字线游标,你可以将 <BR> 它移到你所需的视窗再碰触滑鼠按钮。 <BR> <BR> .使用命令列选项:你可以用选项-root 指定根视窗,或用选项-id <BR> window-id 指定其它的视窗。 <BR> <BR> 你所看到的资讯可分为以下几类: <BR> <BR> 视窗的window-id :window-id 是视窗系统识别每一个视窗的参考,就如 <BR> 同先前所看到的,几个程式(包含xwininfo它本身)给你一个数字代 <BR> 表window-id 。例如你要倾印一个视窗,你可以先执行xwininfo得到 <BR> 它的window-id,然後将此window-id 做为xwd 的id选项之引数。 <BR> <BR> 阶层的资讯:你可以看到这个视窗的父视窗的id,几个子视窗的id,以及 <BR> 根视窗的id,在xlswins 中可得到相同的资讯,但在这里只能得到最 <BR> 近一层子视窗的id,并非整个子树。 <BR> <BR> 几何细节:视窗的大小和位置,以及它的四个角的位置。 <BR> <BR> 和server有关的重建构参数:像”gravity ”和”backing store ”这 <BR> 些状态(state) ,当视窗改变大小或从被遮盖的状态下重新显 <BR> 露出来时,server需要用到这些参数,这些参数你自己不会用到, <BR> 但可藉它了解系统如何运作。 <BR> <BR> 事件参数:这些参数也是给server而非给使用者用的。 <BR> <BR> 视窗管理器资讯:在系统概观中,我们曾经提过应用程式藉著给视窗管理 <BR> 器一些提示”hints ”来达成通讯(这些提示包括应用程式所希望视 <BR> 窗的大小,以及重定大小时的限制等。),xwininfo在这个部份的输 <BR> 出便是告诉你这些”提示”的资料。Program supplied location 为 <BR> 应用程式建议它自己应该摆哪里。如果你曾给过位置,不论是在命令 <BR> 列或resource file ,都会在 User supplied location 出现,在视 <BR> 窗大小方面同理可推,resize increments 解释了为什麽有些视窗( <BR> 例如xterm 和xfd )不能把大小定为任意数目的像素,因为应用程式 <BR> 已经告诉了视窗管理器在重定大小时按多少个像素的倍数放大或缩小 <BR> (xterm 和xfd 它们的大小和所使用的字型有关),你也可以由这个 <BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -