X Window 系统使用指南--进一步介绍uwm和如何定制它( 四 )


剪缓冲区插入本文 。在你的建构档中定义一个选单共有两个步骤 。首先你定义选单上所需的
系结,其次你定义选单本身的内容 。系结的部份像我们先前所用过的,但在尾
端增加了一栏选单名称 。例如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 并没有结构抑制读取系统和使用者建构

推荐阅读