窗口管理器 Openbox 入门指南 (2)
这是《窗口管理器 Openbox 入门指南》的第二部分。
目录表
配置 Openbox
当 Openbox 安装完成后,其默认的选项设置可能并不合你意。因此,你可以根据自己的使用习惯来对 Openbox 进行配置。要配置 Openbox,既可以采用图形化的工具,也可以直接编辑文件手动配置。
使用 ObConf
ObConf 是一个图形化的 Openbox 配置工具,可以完成一些基本的配置,包括:
- 安装、选用或打包 Openbox 主题
- 配置外观 (像窗口按钮布局、字体等) 及窗口行为
- 配置虚拟桌面及桌面边距
- 配置 Dock
可以使用以下指令来安装 ObConf。
在 Archlinux 中,可以执行:
pacman -S obconf
Debian/Ubuntu 用户可以执行:
sudo apt-get install obconf
Fedora 用户可执行:
yum install obconf
启动后的 ObConf 如下图所示:
鉴于 ObConf 的操作非常直观,在此就不赘述了。大家花点时间琢磨一下,很快就可以上手。
创建菜单
最直接配置 Openbox 的方式是手工编辑其配置文件。不过,在编辑之前,一些语法规则是需要我们掌握的。Openbox 默认的菜单文件 (系统级) 位于:
/etc/xdg/openbox/menu.xml
当你在桌面右击鼠标时,将显示 Openbox 的 Root 菜单。通过此菜单,用户可以执行启动应用程序、注销、退出等操作。
为了避免更新 Openbox 程序时该文件被覆盖,复制一份到:
mkdir ~/.config/openbox
cp /etc/xdg/openbox/menu.xml ~/.config/openbox/
从 menu.xml 文件的扩展名我们可以看出这是一个 XML 文件。使用任何文本编辑器皆可打开该文件。除了文件首行的 XML 声明外,所有的 Openbox 菜单项目都是由 <openbox_menu>
标签所包围的。
-
一级菜单
首先,让我们来创建一个一级菜单。要定义一个菜单,我们需要使用
<menu>
标签。该标签具有 id、label、以及 execute 属性:- id:每一个菜单项目都必须指定一个唯一的 id,以用来区分其他菜单项目。
- label:用来描述一个菜单的名称。
- execute:执行一个命令,常用于创建动态菜单。
例如,我们可以将 Openbox 的 Root 菜单定义如下:
<menu id="root-menu" label="Openbox Root Menu"> ... </menu>
如果一个菜单中没有任何项目,我想是不能称其为真正的菜单吧。所以,我们还需要为菜单创建具体的菜单项目。要定义菜单项目,我们可以使用
<item>
标签。与<menu>
标签一样,<item>
标签也具有描述菜单项目名称的 label 属性。我们试着扩展上面的例子:<menu id="root-menu" label="Openbox Root Menu"> <item label="URxvt"> ... </item> ... </menu>
现在,我们已经有了一个名为 URxvt 的菜单项目。根据该名称的命名初衷,我们当然希望通过该菜单项目能够启动 URxvt 终端程序。要完成这个任务,我们需要使用
<action>
标签。该标签主要用来执行一个操作,比如启动程序。<action>
标签具有 name 属性。我们继续扩展先前的例子:<menu id="root-menu" label="Openbox Root Menu"> <item label="URxvt"> <action name="Execute"> ... </action> </item> ... </menu>
该例中 name 属性已经包含了“Execute”值,其作用是启动一个程序。
我想,你已经猜到接下来我们需要做什么了。要启动程序,没有具体的命令是不行的。这可以通过
<command>
标签来完成。我们仍以前面的例子来说明:<menu id="root-menu" label="Openbox Root Menu"> <item label="URxvt"> <action name="Execute"> <command>urxvt</command> </action> </item> ... </menu>
值得一提的是,命令可以附带路径或选项参数。
-
几个特殊的菜单项目
在此,我们介绍几个较为特殊的菜单项目:
-
分隔线:可以使用
<separator>
标签在菜单项目间绘制一条分隔线。<separator>
标签同样具有 label 属性。需要注意的是,因为<separator>
标签没有具体的内容,所以在关闭该标签时,应照下面的方式进行:<separator />
这是另一个例子,包含 label 属性:
<separator label="tools" />
-
重新配置 Openbox:使用该菜单项目的好处是,当你对 Openbox 的配置文件进行修改后,不必注销系统便可即时生效。该菜单项目定义如下:
<item label="Reconfigure"> <action name="Reconfigure" /> </item>
注意,这里
<action>
标签的关闭方式与<separator>
一样。 -
重新启动 Openbox:
<item label="Restart"> <action name="Restart" /> </item>
-
退出 Openbox:
<item label="Exit"> <action name="Exit" /> </item>
-
注销会话:
<item label="Session Logout"> <action name="SessionLogout" /> </item>
注意,需要启动带会话支持的 Openbox 才有效。
-
-
二级菜单
掌握了创建一级菜单的方法,二级菜单则如法炮制即可。当二级菜单创建完毕之后,可按以下方法加入一级菜单:
<menu id="tool-menu" />
附:我的 menu.xml 文件,仅供参考。