LinuxTOY 是一个致力于提供 Linux 相关资讯的专题站点。如果您发现了好用好玩的 Linux 东东并愿意发扬自由、分享的精神,可以点击顶部导航 Contact 按钮进行投稿。

Related entries

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

说明:本系列文章仍在撰写中,尚未最终完成,请大家暂时不要转载。待完成后,我会出一个 PDF 版本,方便大家阅读。

目录表

配置 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.png

鉴于 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> 标签所包围的。

1、一级菜单

首先,让我们来创建一个一级菜单。要定义一个菜单,我们需要使用 <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>

值得一提的是,命令可以附带路径或选项参数。

2、几个特殊的菜单项目

在此,我们介绍几个较为特殊的菜单项目:

  • 分隔线:可以使用 <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 才有效。

3、二级菜单

掌握了创建一级菜单的方法,二级菜单则如法炮制即可。当二级菜单创建完毕之后,可按以下方法加入一级菜单:

<menu id="tool-menu" />

附:我的 menu.xml 文件,仅供参考。

[待续]

署名 • 注明出处 • 非商业性使用

13 Comments

  1. 1 somebody(莫多) Commented @ 2008-07-31 9:51 amReply to this comment

    这个顶起来。收藏起来。

  2. 2 rdwalk Commented @ 2008-07-31 9:59 amReply to this comment

    又想试试openbox了。。。等写完再说。

  3. 3 snowdream Commented @ 2008-07-31 11:33 amReply to this comment

    定制性很强,呵呵。

  4. 4 GunsNRose Commented @ 2008-07-31 11:44 amReply to this comment

    toy这么快出了,支持
    有个pipe menu功能,在官方有个位置链接可以找到,自动生成系统安装了的软件,然后可以通过pipe menu功能在菜单中显示出来,不过一直使用fbpanel, xfce4-panel所以很久也没用那菜单了,

  5. 5 sendney Commented @ 2008-07-31 12:12 pmReply to this comment

    这个不顶,还顶啥?!!!:)

  6. 6 wanzigunzi Commented @ 2008-07-31 12:33 pmReply to this comment

    太响应人民需求了,这么快就出来了,赞,现在正在openbox下对照这篇文章学习

  7. 7 phabulosa Commented @ 2008-07-31 2:38 pmReply to this comment

    等TOY写完这一系列,我有时间会写一些关于xmonad、wmii、dwm、awesomewm等tiling WM的介绍

  8. 8 Toy Commented @ 2008-07-31 3:01 pmReply to this comment

    @phabulosa: 期待 phabulosa 兄的大作。

  9. 9 zerg Commented @ 2008-07-31 7:01 pmReply to this comment

    等pdf出来打印一份,呵呵

  10. 10 MK Commented @ 2008-07-31 9:57 pmReply to this comment

    我觉得用习惯一个WM/Desktop,换另一种又要改习惯。。头大。。

  11. 11 HuangShi Commented @ 2008-07-31 11:58 pmReply to this comment

    腾讯Linux QQ竟不能在openbox中运行,运行时QQ界面狂闪。

  12. 12 cagewang Commented @ 2008-08-01 8:27 pmReply to this comment

    两个问题!
    1. 我有pypanel,怎么设置它?我想调整宽度,变大一点,想把上面的时间也调大一点,小的看的累
    2. 有没有什么办法设定进入openbox 就能调用pypanel.不用去点击它才出来.
    谢谢

  13. 13 Toy Commented @ 2008-08-02 8:51 amReply to this comment

    @cagewang

    1.编辑 ~/.pypanelrc 文件。
    2.可以加入 Openbox 的自动启动脚本,或 ~/.xinitrc。