窗口管理器 Openbox 入门指南 (4)

这是《窗口管理器 Openbox 入门指南》的第四部分。

目录表

控制应用程序

记得我们曾经在介绍如何将终端窗口嵌入桌面时,使用过一个名叫 Devil's Pie 的窗口匹配工具。其实,Openbox 就具有类似的功能。通过 Openbox,我们可以控制每一个应用程序的初始状态。比如,URxvt 启动后就没有边框,Gvim 启动后直接放置到第二个桌面,等等。

跟键盘绑定和鼠标绑定一样,控制应用程序的设置也位于 rc.xml 文件中。应用程序的设置使用 <applications> 标签定义:

<applications> ... </applications>

具体到一个单独的应用程序,则使用 <application> 标签,该标签具有 name、class 及 role 属性:

  • name:窗口名称,用来指定一个确定的窗口。
  • class:窗口类名,其作用同上。
  • role:可选属性,对窗口作进一步的匹配,比如可用来区分是针对窗口还是针对对话框进行控制。

其中,name 属性和 class 属性可以仅使用其一,也可同时使用。

举例如下:

<applications>
 <application name="" class="" role="">
 ...
 </application>
 ...
</applications>

获取 name 和 class

当我们针对应用程序进行设置时,首先需要获取该程序的 name 或 class。这可以通过执行下面的命令来完成:

xprop WM_CLASS

该命令执行后,鼠标指针将变成十字型,然后在程序窗口中单击即可。例如,单击 Gvim 获得的结果如下:

WM_CLASS(STRING) = "gvim", "Gvim"

这说明,该窗口的 name 为 gvim,class 为 Gvim。

实例一:让 Gvim 启动后直接放置到第二个桌面

可定义如下:

<application name="gvim">
 <desktop>2</desktop>
</application>

实例二:去掉 URxvt 的窗口边框

作下面的定义:

<application name="urxvt">
 <decor>no</decor>
</application>

实例三:让 Mirage 启动后窗口最大化

可定义为:

<application name="mirage">
 <maximized>true</maximized>
</application>

使用通配符

Openbox 在匹配窗口的 name、class 及 role 时,可以使用通配符 * 和 ?。其中,* 用来匹配任意多个字符,而 ? 仅能匹配单个字符。例如:

<application name="*">
 <decor>no</decor>
</application>

这样就去掉了所有窗口的边框。

上面的例子仅作抛砖引玉之用。其实,通过 Openbox 这项特性,你还可以设置窗口的位置、是否最小化、全屏显示等诸多属性。在 rc.xml 文件的 applications 部分有详细的说明,大家只要照做即可。

Read More: