Openbox窗口管理器(二)
本篇主要随接上一篇,虽然上一篇介绍了几个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>
要定义一个具体的键盘绑定,我们需要使用 
- 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:该属性指定使用哪一个鼠标按钮来触发鼠标绑定,如左键、右键、滚轮等。
 
| 键值 | 说明 | 
|---|---|
| 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>  ,该参数指定了程序启动后,默认在几号桌面里启动; 该参数说明程序启动后没有边框;该参数说明程序启动后程序最大化。
需要注意的是: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
设置工具栏样式,我喜欢只显示图标。
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
 - Link: https://blog.361way.com/openbox-windows-config-2/3151.html
 - License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.