本篇主要随接上一篇,虽然上一篇介绍了几个GUI的openbox配置工具,不过出于linux 一切皆由文件构成的理念,这里还是介绍一下通过文件修改来配置openbox窗口的方法。

一、配置菜单

1、配置文件

Openbox 默认的菜单文件 (系统级) 位于:/etc/xdg/openbox/menu.xml当你在桌面右击鼠标时,将显示 Openbox 的 Root 菜单。通过此菜单,用户可以执行启动应用程序、注销、退出等操作。当然,如果不想直接修改系统级文件,也可以在用户家目录下新建一个文件,然后通过配置该文件达到自定义用户菜单的目的。

1mkdir ~/.config/openbox
2cp /etc/xdg/openbox/menu.xml ~/.config/openbox/

2、一级菜单

openbox的菜单是能过menu标签进行配置的,该标签具有 id、label、以及 exehttp://www.361way.com/wp-admin/post-new.phpcute 属性:

  • id:每一个菜单项目都必须指定一个唯一的 id,以用来区分其他菜单项目。
  • label:用来描述一个菜单的名称。
  • execute:执行一个命令,常用于创建动态菜单。

如:我们可以将 Openbox 的 Root 菜单定义如下:

菜单下的项目可能过action和command标签进行配置。具体示例如下:

1<item label="Terminal">
2	<action name="Execute">
3	<command>
4		terminator
5	</command>
6	</action>
7</item>

这里定义了一个终端项目,并对其action和command进行了定义,即定义了其要执行的动作。不过需要的注意的是这里有几个特殊的项目菜单:

  • 分隔线:可以使用 标签在菜单项目间绘制一条分隔线。 标签同样具有 label 属性。需要注意的是,因为 标签没有具体的内容,所以在关闭该标签时,应照下面的方式进行: 这是另一个例子,包含 label 属性:
  • 重新配置 Openbox:使用该菜单项目的好处是,当你对 Openbox 的配置文件进行修改后,不必注销系统便可即时生效。该菜单项目定义如下:
1<item label="Reconfigure">
2 <action name="Reconfigure" />
3</item>

注意,这里 标签的关闭方式与 一样。

重新启动 Openbox:

1<item label="Restart">
2 <action name="Restart" />
3</item>

退出 Openbox:

1<item label="Exit">
2 <action name="Exit" />
3</item>

注销会话:

1<item label="Session Logout">
2 <action name="SessionLogout" />
3</item>

注意,需要启动带会话支持的 Openbox 才有效。

3、二级菜单

二级菜单同一级菜单配置上并没有区别,定义了一个多媒体菜单,其下面也可以配置多个item,最终将该menu同一级menu合并就构成了openbox的右键下的菜单部分。

二、键鼠绑定

1、配置文件

Openbox 默认的键盘和鼠标绑定文件位于:/etc/xdg/openbox/rc.xml,同样也可以复制一份到 .config/openbox/:cp /etc/xdg/openbox/rc.xml ~/.config/openbox/达到针对不同的用户进行自定义配置的目的。

2、键盘绑定

Openbox 的键盘绑定使用 标签,标签,形如下面的内容:

1 <keyboard>
2...
3</keyboard>

要定义一个具体的键盘绑定,我们需要使用 标签。该标签具有 key 属性,该标签具有 key 属性,其作用是指定快捷键。常用的修饰键如下:

  • S - Shift
  • C - Ctrl
  • A - Alt
  • W - Win (即 Windows 徽标键)

例如,假设我要为最大化窗口指定快捷键为 Alt-F6,那么,可以定义如下:

1<keyboard>
2 <keybind key="A-F6">
3  <action name="MaximizeFull" />
4 </keybind>
5 ...
6</keyboard>

其实,Openbox 已经默认定义了很多键盘绑定,如切换活动桌面、提升窗口等等,具体内容都可以在上面的 rc.xml 文件中找到。至于在我们前面的菜单创建过程中、键盘绑定中、以及后面的鼠标绑定中所用的 Action,可以通过下面的地址参考:http://openbox.org/wiki/Help:Actions

3、鼠标绑定

鼠标绑定使用 标签定义。具体如下:

1<mouse>
2...
3</mouse>

与键盘绑定不同的是,鼠标绑定会要求你首先设置情景,也就是触发鼠标绑定的对象,即 标签。常用的 Context 如下表所示:

名称 说明
Frame 除桌面外的任何窗口
Client 应用程序窗口,不含窗口边框
Desktop 桌面
Root 与 Desktop 相似,通常用于 Root 菜单
Titlebar 窗口标题栏
Top, Bottom, Left, Right 窗口的上、下、左、右四边
TLCorner, TRCorner, BLCorner, BRCorner 窗口的四角
Icon 窗口图标
Iconify 最小化按钮
Maximize 最大化按钮
Close 关闭按钮
AllDesktops 所有桌面按钮
Shade 折叠按钮
MoveResize 移动并调整窗口大小

Titlebar 说明这是针对标题栏的鼠标操作。然后,即可使用 标签进行具体的鼠标绑定。该标签具有 button 和 action 属性:

  • button:该属性指定使用哪一个鼠标按钮来触发鼠标绑定,如左键、右键、滚轮等。
键值 说明
Left 鼠标左键
Right 鼠标右键
Middle 鼠标中键
UP 向上滚
Down 向下滚
  • action:用来指定一个鼠标触发的事件,如按下、单击、双击等。一些常见的 Action 事件如下表所示:
键值 说明
Press 按下
Click 单击
DoubleClick 双击
Release 释放
Drag 拖曳

例如,当我们双击一个窗口时让其最大化,可以作如下定义:

1<mouse>
2 <context name="Titlebar">
3  <mousebind button="Left" action="DoubleClick">
4   <action name="ToggleMaximizeFull"/>
5  </mousebind>
6 </context>
7</mouse>

三、应用程序控制

1、配置文件

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

1<applications>
2...
3</applications>

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

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

其中,name 属性和 class 属性可以仅使用其一,也可同时使用。如下是gvim程序的配置:

 1<application name="gmessage">
 2      <decor>no</decor>
 3      <shade>no</shade>
 4      <skip_pager>yes</skip_pager>
 5      <skip_taskbar>yes</skip_taskbar>
 6      <fullscreen>no</fullscreen>
 7      <maximized>no</maximized>
 8    </application>
 9    <application class="Gimp" name="gimp" role="gimp-toolbox" type="utility">
10      <maximized>vertical</maximized>
11    </application>
12    <application class="Gimp" name="gimp" role="gimp-dock" type="utility">
13      <maximized>vertical</maximized>
14    </application>
15    <application class="Gimp" name="gimp" role="gimp-image-window" type="normal">
16      <position force="no">
17        <x>center</x>
18        <y>center</y>
19      </position>
20    </application>
21    <application class="Gimp" name="gimp-2.8" role="gimp-toolbox" type="utility">
22      <maximized>vertical</maximized>
23    </application>
24    <application class="Gimp" name="gimp-2.8" role="gimp-dock" type="utility">
25      <maximized>vertical</maximized>
26    </application>
27    <application class="Gimp" name="gimp-2.8" role="gimp-image-window" type="normal">
28      <position force="no">
29        <x>center</x>
30        <y>center</y>
31      </position>
32    </application>

2、name和class属性及其他

当我们针对应用程序进行设置时,首先需要获取该程序的 name 或 class。这可以通过执行xprop WM_CLASS命令来完成, 该命令执行后,鼠标指针将变成十字型,然后在程序窗口中单击即可。例如,单击 Gvim 获得的结果如下:

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

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

如上面提到的gimp中的例子,这里有很多项可以配置,这里提下几个经常会用到的参数:<desktop>2</desktop>  ,该参数指定了程序启动后,默认在几号桌面里启动;no 该参数说明程序启动后没有边框;true该参数说明程序启动后程序最大化。

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

1<application name="*">
2 <decor>no</decor>
3</application>

这样所有的程序启动时都没有边框,这是比较强大的。

四、自启动及常用配置

通过 Openbox 的自动启动脚本,我们可以随机启动一些程序,像输入法、面板等等。其配置文件位于/etc/xdg/openbox/autostart ,如增加firefox & ,即默认开机启动firefox 。而其他一些会用到的一些配置部分如下:

不用敲 startx 直接进入 Openbox

在没有使用图形化登录管理器的情况下,要进入 Openbox,我们需要敲 startx。如果使用 bash 的话,在 ~/.bash_profile 中加入下列内容,可以免敲 startx:

1if [[ -z "$DISPLAY" ]] && [[ $(tty) = /dev/vc/1 ]]; then
2  startx
3  logout
4fi

设置壁纸

1feh --bg-scale /path/to/wallpaper.png

示例中的壁纸路径及名称需要换成你自己的。然后将:eval cat $HOME/.fehbg & 加入 Openbox 的 autostart.sh 文件。

设置 GTK 主题

不用使用任何工具,在 ~/.gtkrc-2.0 中加入:gtk-theme-name = “Infini-Herbe” 这将设置 GTK 程序的主题。将引号中的内容换成你自己喜欢的主题名称(下同)。

gtk-icon-theme-name = “ALLGREY”

设置所用的图标主题。gtk-cursor-theme-name = “Vanilla-DMZ-AA”

设置鼠标指针主题。gtk-font-name = “Luxi Sans 10”

设置 GTK 程序用的字体。gtk-toolbar-style = GTKTOOLBARICONS

设置工具栏样式,我喜欢只显示图标。