深入了解mwm窗口管理器的定制与资源设置
立即解锁
发布时间: 2025-08-13 01:00:07 阅读量: 2 订阅数: 4 

# 深入了解 mwm 窗口管理器的定制与资源设置
## 1. 菜单与功能绑定
### 1.1 菜单项目与功能调用
在 mwm 窗口管理器中,菜单项目与特定功能紧密相连。例如,有一个名为 “Move” 的菜单项,选择该菜单项会调用 `f.move` 函数。此外,还可以通过助记符 “m” 或者快捷键组合 `Alt - F7` 来调用此函数。
### 1.2 键绑定设置
系统的 `system.mwmrc` 文件中的键绑定部分,将按键组合与窗口管理器的功能进行绑定。该部分有特定的标题和括号格式:
```plaintext
Keys Section_Title
{
key bindings defined
}
```
在 `system.mwmrc` 文件中,键绑定部分的标题是 `DefaultKey - Bindings`。这个标题也可以在 `.Xresources` 文件中作为 `mwm` 资源 `key - Bindings` 的值。不过,由于默认使用这些绑定,通常无需额外指定。
当需要创建一组替代绑定的时候,将标题作为资源就变得很重要。可以在 `.mwmrc` 文件中添加一组不同标题的绑定,然后在 `.Xresources` 文件中指定该标题作为 `keyBindings` 资源的值。例如:
```plaintext
Mwm*keyBindings: MyButtonBindings
```
这样,对于所有使用 `mwm` 运行的客户端应用程序,`MyButtonBindings` 将取代 `DefaultButtonBindings`。
如果想为不同的应用程序使用不同的绑定集,可以在资源规范的部分之间添加应用程序名称。比如,若想让 `My - ButtonBindings` 仅应用于使用 `mwm` 运行的 `xterm` 窗口,可以输入以下资源行:
```plaintext
Mwm*xterm*keyBindings: MyButtonBindings
```
此时,`DefaultButtonBindings` 仍将应用于除 `xterm` 之外的所有应用程序。
### 1.3 键绑定的上下文与模板
键/功能绑定背后有一个不太明显的原则:为了让按键调用功能,指针必须位于特定的位置,这个位置被称为上下文。对于 `mwm`,最常用的上下文有:`root`、`frame`、`window` 和 `icon`。其中,`window` 上下文指的是整个窗口,包括框架。
有些功能可以在多个上下文中被调用。例如,可以使用键盘快捷键 `Meta - space` 或 `Shift - Escape` 从窗口或图标中显示窗口菜单。这些快捷键在 `system.mwmrc` 文件的键绑定部分定义如下:
```plaintext
Shift<Key>Escape icon|window f.post_wmenu
Meta<Key>space icon|window f.post_wmenu
```
通过分析这些行,可以得出键绑定的模板:
```plaintext
[modifier_keys]<Key>key_name context function
```
每个绑定可以有一个或多个修饰键(修饰键是可选的),并且必须有一个单一的主键(由尖括号中的 `<Key>` 表示)来调用功能。
### 1.4 按钮绑定设置
按钮绑定部分同样有标题和括号格式:
```plaintext
Buttons Section_Title
{
button bindings defined
}
```
`system.mwmrc` 文件包含三组按钮绑定,其标题分别为:
- `DefaultButtonBindings`
- `ExplicitButtonBindings`
- `PointerButtonBindings`
按钮绑定清晰地表明了需要协调 `.Xresources` 和 `.mwmrc` 文件。这三组按钮绑定对应于资源 `buttonBindings` 的三种可能设置。资源的默认设置为:
```plaintext
Mwm*buttonBindings: DefaultButtonBindings
```
这表明使用 `DefaultButtonBindings`。可以在 `.Xresources` 文件中设置该资源,以指定使用其他组的按钮绑定。例如:
```plaintext
Mwm*buttonBindings: ExplicitButtonBindings
```
这样,`mwm` 将使用 `.mwmrc` 文件中标题为 `ExplicitButtonBindings` 的绑定。需要注意的是,如果指定了不同的按钮绑定,资源的值必须与绑定关联的标题完全匹配,否则绑定将不会生效。
按钮绑定规范的语法与键绑定非常相似:
```plaintext
[modifier_key]<button_event> context function
```
每个绑定可以有一个或多个修饰键(修饰键是可选的),并且必须有一个单一的按钮事件(用尖括号括起来)来调用功能。
以下是 `system.mwmrc` 文件中默认按钮绑定的示例:
```plaintext
Buttons DefaultButtonBindings
{
<Btn1Down> frame|icon f.raise
<Btn2Down> frame|icon f.post_wmenu
<Btn1Down> root f.menu RootMenu
Meta<Btn1Down> window|icon f.lower
Meta<Btn2Down> window|icon f.resize
Meta<Btn3Down> window|icon f.move
}
```
这些绑定各自有其特定的功能,比如按下第一个指针按钮在窗口框架或图标上会分别执行提升窗口或图标的操作;按下第二个指针按钮在窗口框架或图标上会显示窗口菜单等。
## 2.
0
0
复制全文
相关推荐










