分享
 
 
 

XWindow系统使用指南--第19章进一步介绍uwm和如何定制它

王朝system·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

在第6章,你学到如何使用uwm 来完成基础的视窗建构工作需求,而能以一个

舒服的方式使用视窗。现在我们继续谈视窗,集中於两个主要的□围:

1.此程式所提供的一些特别的特色,特别是:

.不使用选单,直接使用滑鼠建构视窗。

.我们尚未描述过的一些选单选择。

.编辑现存表徵图的标题。

2.如何定制uwm ,包含:

.对任何你所需的命令定义你自己的选单。

.将各种不同的视窗管理器功能系结到滑鼠按钮和修饰键 (SHIFT,

CONTROL 等等)。

19.1 uwm 的新特色

现在我们来讨论一些在先前介绍视窗管理器时,为了保持尽量地简单,而省略

的标准的uwm 功能。

19.1.1 不使用uwm 的选单来管理视窗

直到目前,你仍然依赖著uwm 的选单来建构你的视窗 -- 移动它们、对它们重

定大小等等。如果所有的情况都使用选单,是相当慢的,所以uwm 提供你可直

接完成它任何命令的选项。

你可以使用滑鼠按钮和修饰键,来指定你要执行的功能,和所要操作的视

窗。你现在应该已非常熟悉各种不同的视窗管理器功能和它们如何工作,所以

我们将很快地说明如何不使用选单来选择这些功能。

Move:移动一个视窗

1.按下META键,保持按住。

2.指标位置所在的视窗将被移动。

3.用右按钮,拖拽视窗到新的位置。

Resize:重定一个视窗的大小

1.按下META键,保持按住。

2.指标位置所在的视窗将被重定大小。

3.用中按钮,拖拽视窗的外框到新的大小。

Lower:将一个视窗送到堆叠的底部

1.按下META键,保持按住。

2.将欲被送到堆叠的底部的视窗,碰触一下左按钮。

Raise:将一个视窗升到堆叠的顶端。

1.按下META键,保持按住。

2.将欲被送到堆叠的顶端的视窗,碰触一下右按钮。

Circulate up:将最底层被遮蔽的视窗升到最上层,你有两种选择:

1.按下META键,保持按住。

2.在根视窗上,碰触一下右按钮。

1.同时按下META和SHIFT 键,保持按住。

2.在萤幕上的任何地方,碰触一下右按钮。

Circulate Down:将最上层的视窗移到最底层,作法同Circulate Up,但

改为左按钮。

Iconify:之前我们曾提过两种形式的表徵图化,一种是视窗曾经表徵图

化过(已定义过表徵图的位置) ,另一种为对 "新" 的视窗表徵图化

表徵图化一个新的视窗:

1.按下META键,保持按住。

2.将指标位置移至欲被表徵图化的视窗。

3.按下LEFT按钮,保持按住...

4. ... 拖拽表徵图的外框到你所需的位置。

5.松开按钮和META键。

注意它和Lower 操作程序的不同点,在此你是按下... 拖拽... 松开滑

鼠按钮,而对Lower ,你只是碰触一下按钮。

表徵图化一个曾经表徵图化过的的视窗:

1.同时按下META和CTRL键,保持按住。

2.在你欲表徵图化的视窗上,碰触一下左按钮。

(如果你对先前并未表徵图化的视窗作这个操作,或经由resource结构

无法取得表徵图的位置,表徵图将出现在指标所在的位置)。

De-Iconify:将表徵图还原为它的视窗 (在视窗原来的位置):

1.按下META键,保持按住。

2.在表徵图上,碰触一下中按钮。

如果你觉得这些对滑鼠按钮功能的结合十分笨拙且不易记忆,别担心,很

多人都是如此。有更好的法子,刚才那些只是预设的设定,你可以完全由自己

来建构。在本章的後半部,我们将告诉你如何做。现在我们先来看一看,在标

准选单的一些功能和它们能做些什麽。

19.1.2 一些更多的选单选择

这是一些我们在第6章中没有解释的标准的选单选择。

Focus:让你设定键盘的焦点(focus),也就是说,将键盘附属於一个视窗

,所以不论萤幕上的指标在何处,键盘的输入总是在同一个视窗。一

般键盘的输入总是指向目前指标所在的视窗。

设定焦点到一个特定的视窗:选择focus ,出现手指形游标,在你所

欲指定的视窗碰触一下按钮。

恢复正常:选择focus ,在背景视窗上碰触一下。

Restart:停止uwm ,重新启动它,重新读入建构档 (下节说明) 且执行它

。在你改变建构档且希望马上执行新的设定时 (否则将等到你重新启

动一个新的周期) 使用此选择。

Freeze:暂停萤幕上所有的显示,当你要对你的萤幕摄影时可以使用这个

选择。欲重新恢复显示,使用 ...

Unfreeze:重新恢复显示,所有的视窗会立即更新。

Exit:中止uwm 。当你要杀掉uwm 时使用,例如在启动一个不同的视窗管

理器之前。

Perferences 选单

我们在第6章提过,有两种方法叫用uwm 的WindowOps选单 -- 在背景视

窗上按下中按钮,或在按住META和SHIFT 两个键的情况下,在任何地方碰触一

下中按钮。用第二种方法让你呼叫出第二个选单,只要将指标移到WindowOps

选单的外边,标头为Preferences 的视窗就会出现。

在Preference中的选择,只是一些xset程式中设定滑鼠和键盘的选项而已。

注意:Lock On 和 Lock Off选择是和记录有关的,可能会导致一个错误

的讯息在你的主控台视窗印出。

19.1.3 改变现存表徵图上的标题

uwm 的预设表徵图 -- 灰色的盒中有一个名称 -- 如果你对同一个应用程式执

行数次拷贝後会有缺点,例如有三个xterm 的表徵图,你无法明确的区分它们

。为了克服这点,uwm 允许你可以编辑表徵图中的字串为你所需的任何字串。

(这只能在uwm 自己预设的表徵图使用,例如你无法编辑在xclock的特定表徵

图中的字串)。

欲编辑在一个表徵图中的名称:

1.将指标移至所欲编辑的表徵图。

2.键入你所希望的任何文字。

3.你可以去掉文字,不论是先前存在或方才才输入的,方法如下:

去掉前一个字元:按DELETE。

去掉整个名称:按ctl-U。

19.2 定制uwm

uwm 具有高度的可建构性。你可以将整个□围的参数和定义储存在一个建构档

中,当uwm 启始时会将之读入。我们前节曾经提过,你可以在中途改变建构档

,藉著在WindowOps选单中Restart选项,告诉uwm 重新读入它。

uwm 的建构档

预设uwm 有两个建构档,其中之一为

/usr/lib/X11/uwm/system.uwmrc

通常由系统管理者设定,且第一个被读入。另一个

$HOME/.uwmrc

是你自己的建构档。两个档案均需要存在,uwm 硬性规定了预设设定。

注意:如果你用不正确的语法设定一个建构档,当uwm 读入时,你会得到

一个错误讯息像:

uwm: /usr/nmm/.uwmrc: 38: syntax error

uwm: Bad .uwmrc file...aborting

uwm 将不会启动。当在一个新的周期启动时,这没有什麽大问题。然而,如果

你是在中途重新设定uwm ,你可以结束但没有视窗管理器,且没有xterm ,没

有编辑视窗来编辑这个错误的档案,无法启始其它的视窗。如果此种情况发生

,你必需从其它的终端机或机器关闭X,或毁坏 (crash)你的系统。

uwm 的命令列选项

如果你不需要系统建构档案,也不需要任何预设的设定,你可以藉著uwm 的命

令列选项 -b 抑制它们。

如果你要使用其它的档案,就像两个预设的建构档一般,你可以用

-f filename 来指定它。

19.2.1 系结功能到键和按钮

uwm 让你定义当一个特定的滑鼠按钮按下时,有某个功能会作用,例如当你在

一个视窗中碰触一下中按钮,它将被升到堆叠的顶层。这种系结结构和Toolkit

转译并没有牵连,它完全由uwm 本身来完成。

为了让这些结构更有用,你可以指定其它的条件来运用更多的功能,或许一个

修饰键 (像META) 需被按下,或许作用只发生在指标位於一个表徵图上而非应

用程式视窗或背景视窗。我们已实际的看过这些例子:

此功能发生 ... 只有在这些 ... 只有指标在 ... 当这个

於... 修饰键被按下, 此种型态的视窗 滑鼠事件发

而且... ,而且... 生时

Resize META 一般视窗 按住中按钮

且移动

WindowOps 没有 背景视窗 按住中按钮

选单

WindowOps META 和 没有关系 按住中按钮

选单 SHIFT

你藉著你的 .uwmrc(或其它的建构档)所包含的系结规格来指定系结。规格

的格式和上面的表格类似,就像:

uwm-function = modifiers : window context : mouse events

( uwm 功能 = 修饰键 : 视窗的环境 : 滑鼠事件 )

这些元素为:

uwm 功能:uwm 的内建功能之一的名称。例如功能f.move即是你用以移动视

窗的功能,f.lower 将视窗降低一层等等。这些功能将於下更完整地描

述。

功能名称必需跟随著一个等号(=)。

修饰键:在运用上述功能时,当指定的滑鼠事件发生时,必需被按下的修饰键

表列。正确的修饰键名称为:

ctrl(或c),对CONTROL键。

meta(或m或mod1),对META键。

shift(或s),对SHIFT键。

lock(或l),对CAPSLOCK键。

这些名称必需正确的列出。你可以使用一或二个修饰键,如果你使用两个

键,用一个 "|"符号来分开它们。

你可以省略整个修饰键表列 (即此功能对应於滑鼠事件发生时并没有修饰

键被按下),但尾端的冒号 ":" 不可省略。

视窗的环境:限制只有指标在萤幕上指定位置的型态符合特定条件时,功能

才会发生。正确的环境如下:

window(或w):指标必需位於一个应用视窗中。

icon(或i):指标必需位於一个表徵图中。

root(或r):指标必需位於根视窗或背景视窗中。

你可以指定任何数目的环境,用 "|" 来区隔它们。如果你没有指定,则功能

的发生与指标位置无关。

滑鼠事件:何种滑鼠事件对应到此功能。指定的事件为一个按钮名称 -- 任何的

left(或l)

middle(或m)

right(或r)

跟随著一个动作:

down : 当按钮被按下时会符合。

up : 当按钮被松开时会符合。

delta : 当按钮被按下且移动超过一定数目的像素时会符合。

所有的这些你已实际使用过它们,在本章开头所描述的一些作用的系结为:

f.resize = meta : window : middle delta

f.iconify = meta : icon : middle up

f.raise = meta : window|icon : right down

uwm 的预设系结在档案 $TOP/clients/uwm/default.uwmrc,见图19 - 1。

┌————————————————————┐

│ p242-243 fig 19.1 │

│ │

│ 图19-1 预设的 .uwmrc 建构档 │

└————————————————————┘

uwm 的内建功能

uwm 的指南页列出可应用的功能。你已经从图19 - 1见过其中大部份,你可以

看出,功能是和WindowOps及Preferences中的选项相关。

然而,有一个有关pushing视窗(f.pushleft, f.pushup等等)的功能集合你

从未见过。pushing的意思为:你朝一个特定的方向移动一个视窗,移动的距离

固定。这和f.move不同的是,後者以交谈的方式,指定视窗移动的方向和距离。

预设f.pushdown系结到同时按下CONTROL和META键,且按住中按钮。试它几

次,你将发现你的视窗稍微移动了一点 -- push 功能对细部移动视窗非常有用。

另一个功能为f.moveopaque。它也移动一个视窗,但不像f.move,它并不会

给你一个指示视窗新的位置的方格,你直接拖拽整个视窗本身。这可以让整个萤

幕清爽些,但比较慢,且一般视窗移动时会有抖动的现像。

19.2.2 定义你自己的选单

f.menu是一个非常强大的uwm 的功能:它让你定义你自己的选单。此选单可选

用到uwm 本身的功能,或任何的shell 命令,或一个特定的动作,像是在一个

剪缓冲区插入本文。

在你的建构档中定义一个选单共有两个步骤。首先你定义选单上所需的

系结,其次你定义选单本身的内容。系结的部份像我们先前所用过的,但在尾

端增加了一栏选单名称。例如WindowOps 选单 (藉著在背景视窗中按下中按钮

来呼叫)的系结是:

f.menu = : root : middle down : "WindowOps"

在此,选单名称既是用以显示选单出现时的名称,也连结到建构档中的选单内

容规格。

选单内容的格式很简单:对每一个选择项,包含了一列当选择项出现在选

单的 "名称" ,和当它被选择到时所做的动作。让我们观察一个缩水的WindowOps

定义:

menu = "WindowOps" {

New Window : !"xterm &"

RefreshScreen : f.refresh

Redraw : f.redraw

Move : f.move

}

从这里,我们可以看到其语法为:

menu = "menu name" {

...

selection lines

...

}

选单名称和系结所指定的相同。选择项列包含了选择项名称,分隔的冒号,和

负责的动作。这些动作为下列三者之一:

1.一个uwm 的功能:只用到它们的名称,在上例为move那一列。

2.一个shell 命令:命令包含在双引号中间 (用shell 的& 语法使其在背

景视窗中执行) 且在前面加一个惊叹号。在上例为xterm 那一列。 (如

果你省& ,uwm 将被悬置 (hang) 起来,等待命令的完成,如果此程式

为X的应用程式,它需要uwm 来安排它的视窗,这将会招致麻烦)。

3.一个本文字串:这将插入到一个 "剪" 的缓冲区,而後你可以像平常一

样的 "贴" 它。

多种的选单连结到同一个键系结

通常你对一个特定的键/按钮的组合,只会系结到一个选单,但你可以对同一个

系结有多种选单:如果你在一个选单中不选择任何项目且把指标移动到选单的

边上,你将得到下一个选单。你已经实际地看过这种例子:在同时按下META和

SHIFT 键的情况下按下中按钮,你可以得到WindowOps 选单,然後是Preferences

选单。

系结多种选单非常的容易,只要在定义每一个系结时当作其它的系结并不

存在,而在定义选单的内容时用标准的方式即可。例如uwm 的预设设定包含了

系结:

f.menu = meta | shift : : middle down : "WindowOps"

f.menu = meta | shift : : middle down : "Preferences"

注意一个选单只能定义一次,但你可以用它来做任意多次的系结。 (查看预设

设定,你将看到WindowOps 选单被定义了一次但使用到两次)。

指定选单的颜色

你可以指定在一个选单中所用的色彩。对选单名称标题、每一个选择项、指标

所在的高亮度选择项,你都可以指定一个前景和背景色彩。一个有色彩的选单

的格式如下:

menu = "menu name" (head-fg : head-bg : hilite-bg : hilite-fg) {

...

selection-name : (item-fg : item-bg) : action

...

}

以下为一个混合的□例,使你的WindowOps 能拥有更多的色彩:

menu = "WindowOps" (yellow : blue : red : green) {

New Window : !"xterm &"

RefreshScreen : f.refresh

Redraw : (navy : magenta) : f.redraw

Move : f.move

}

此选单标题为蓝底黄字,大多数的选择项为白底黑字 (预设值),只有 "Move"

选择项为紫红色底海蓝色字,而目前指标所在的选择项为绿底红字。

19.2.3 控制uwm 的参数变数

到目前为止,你可以用指定滑鼠和键的前後关系,来改变所指定的功能。在此

有一个另一种型态的uwm 的定制:你可以藉此改变许多内建功能操作的作法 (

mode) 和风格 (style),例如你可以指定在resize或move操作下,指示视窗新

的位置的九宫格,改变为只是一个外框而已。在指南页中有列出所有的变数和

它的意义,在此我们只提一些特别有用的,和解释一些比较模糊的。

让预设建构档中的设定无效:uwm 并没有结构抑制读取系统和使用者建构

档。(-b 不会影响 $HOME/.uwmrc)。欲取消早先档案中的设定,可以含入uwm

的变数resetbinding、resetmenus和resetvariables,将会分别的取消早先定

义的系结、选单和变数。 (确定你将这些变数放在档案的顶端,否则它将取消

在档案中所有在它之前的定义)。

限制视窗和表徵图在萤幕的□围以内:X允许你指定你的视窗位於萤幕的

任何位置,甚至部份或全部在萤幕之外,这样有时会引起麻烦。当你建立一个

视窗,uwm 并未提供任何的帮助。但当你使用f.newiconify对一个表徵图作解

除表徵图化,如果变数normalw 被设定,则视窗会被完整的放在萤幕中,且尽

量接近你用指标指定的位置。 (如果你包含了normali 变数,同样可用於表徵

图)。

控制push作用:预设f.pushxxx 功能将一个视窗往适当的方向推动一个像

素的距离。你可以藉著指定 push=num 来推动num 个像素。你也可以完全地改

变操作的作法:取代通常的推动固定数目的像素的作法 (叫做pushabsolute)

,你可以指定pushrelative:这种情况视窗会被推动num 分之一大小的视窗。

例如如果你指定

push=5

pushrelative

则一个f.pushup将把视窗向上推动视窗本身高度五分之一的距离。

防止uwm 功能锁定应用程式:预设一些uwm 的操作,像resize和move会导

致所有其它的client应用程式被冻结,也就是说,防止它们输出到它们的视窗

。你可以藉著指定nofreeze取消它。

如果你需要获得一些uwm 所属短暂视窗的视窗倾印,则这是必需的 (如在

图6 - 6 的resize盒)。 它的副作用为当使用resize和move时,外框格会大量

的闪动,以致难以看到。

19.3 结论

本章告诉你如何使用一些更多的uwm 的功能,现在你对系统有更多的经验且可

以利用它们。特别是看到不用预设选单如何建构视窗,它使你工作的更迅速。

本章的第二个部份,列出你如何能定制uwm :如何附属uwm 的内建功能到

指定修饰键和滑鼠动作的组合,如何定义一般性的选单,如何使用uwm 的参数

变数修改操作的作法。

在结束之前说一点题外话,uwm 和 xterm、xclock、xedit等一样,只是server

的一个client程式而已。所以,远端地执行uwm 是可能的,例如在saturn执行

uwm ,但是指定 -display venus:0,所以它是venus 的视窗管理器。这解释

了网路元素深殖於系统,在一般工作站,这只是好奇,但在X终端机 (它不提

供一般性目的的处理 (processes)) 它实际地需要。

我们现在接近尾声:你已有所有你执行视窗系统的所需的功能。你有视窗管理

器、应用程式、便利的工具、视窗有关的公用程式、大□围的设施所以可以修

改以适合你的显示器、你网路上的建构和你比较喜欢的工作。下一章,我们将

会把目前所学的放在一起,告诉你如何管理你完整的工作周期,且我们将包含

定义uwm 选单和perferences的实际的□例。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有