跳转至内容

Openbox

来自 ArchWiki

Openbox 是一个轻量级、功能强大且高度可配置的堆叠式 窗口管理器,具有广泛的标准支持。它可以作为独立的基础构建一个独特的 桌面环境,也可以集成在其他桌面环境(如 KDEXfce)中,作为它们提供的窗口管理器的替代品。LXDE 桌面环境本身就是围绕 Openbox 构建的。

安装

安装 openbox 软件包。同时安装 TTF 字体,如 ttf-dejavuttf-liberation

启动

独立运行

使用 xinit 运行 openboxopenbox-session。请注意,只有 openbox-session 提供 自启动 (autostart) 功能。

注意 执行 openbox-session 后,只会显示一个空白的灰色屏幕。尝试移动鼠标并右键点击以调出 Openbox 菜单,确认它确实在运行。

其他桌面环境

  • 当使用 Openbox 替换 桌面环境 的原生窗口管理器时,请记住 Openbox 不提供任何合成特效(如透明度)。参见 #合成特效
  • Openbox 与 GNOME 应用程序兼容(但请参阅 GTK#客户端装饰)。 [1]

参见 桌面环境#自定义窗口管理器

配置

注意 本地配置文件总是会覆盖全局配置文件。

四个关键文件构成了 Openbox 配置的基础,每个文件都扮演着独特的角色。它们分别是:rc.xmlmenu.xmlautostartenvironment。虽然这些文件将在下面详细讨论,但在开始配置 Openbox 之前,首先需要基于它们创建一个本地 Openbox 配置文件(即针对您的特定用户账户)。可以通过从全局 /etc/xdg/openbox 目录复制它们作为模板来完成此操作(适用于所有用户)。

$ mkdir -p ~/.config/openbox
$ cp -a /etc/xdg/openbox ~/.config/

rc.xml

提示 自定义键盘快捷键(快捷键绑定)必须添加到该文件的 <keyboard> 部分,并且位于 <!-- Keybindings for running aplications --> 标题之下。

~/.config/openbox/rc.xml 是主要的配置文件,负责确定整个会话的行为和设置,包括:

  • 键盘快捷键(例如启动应用程序;控制音量)
  • 主题
  • 桌面和虚拟桌面设置,以及
  • 应用程序窗口设置

该文件也是预先配置好的,这意味着您只需修改现有内容即可根据个人喜好定制行为。

注意 与特定显示器上的应用程序固定位置相关的按应用程序设置,只有在也定义了 x 和 y 位置时才会生效。

~/.config/openbox/menu.xml 定义了桌面菜单的类型和行为,可通过右键点击背景访问。虽然默认提供的是静态菜单(意味着当安装新应用程序时它不会自动更新),但也可以使用动态菜单,它们会自动更新。

可选方案将在下方的 #菜单 一节中详细讨论。

自启动

openbox-session 提供了两种自启动机制:XDG 自启动(仅在安装了 python-pyxdg 时有效)和 Openbox 自带的自启动机制

Openbox 自带的自启动机制:

  • 读取 /etc/xdg/openbox/environment
  • 读取 ~/.config/openbox/environment
  • 运行 /etc/xdg/openbox/autostart
  • 运行 ~/.config/openbox/autostart

关于 ~/.config/openbox/autostart 中的命令执行顺序出错(或被跳过)的问题,通常可以通过添加短暂的延迟来解决。例如:

xset -b
(sleep 3s && nm-applet) &
(sleep 3s && conky) &
注意 一些应用程序依赖 Polkit 认证框架,需要 Polkit 代理。

在独立的 Openbox 会话中,可以从 Openbox 自启动中启动一个 Polkit 认证代理,例如由 polkit-gnome 提供的代理。例如:

(sleep 3s && /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1) &

environment

~/.config/openbox/environment 可用于导出和设置相关的环境变量,例如:

  • 定义新路径(例如执行那些否则需要完整路径的命令)
  • 更改语言设置,以及
  • 定义其他要使用的变量(例如,GTK 主题修复可以在此列出)

Themes

安装 obconf-qt 和/或 lxappearance-obconf,以获取用于配置视觉设置和主题的 GUI 工具。

openbox-themesAUR 软件包或 AUR 中可以找到大量不错的主题。一些 GTK 主题 也自带了 Openbox 主题。Openbox 专用和兼容的主题都将安装到 /usr/share/themes 目录,并可立即选择使用。

box-look.org 是一个出色且成熟的主题来源。deviantART.com 是另一个极佳的资源。网上还可以找到更多。

编辑或创建

提示 将主题复制到您的家目录进行编辑,比直接编辑 /usr/share/themes/ 中的主题更好。这样可以保留原始文件,防止出现问题,并确保您的修改不会在更新时被覆盖。

创建新主题或修改现有主题的过程在官方 openbox.org 网站上有详细介绍。obthemeAUR 是一个友好的 GUI 工具,可用于此目的。

GUI 配置

有几种 GUI 应用程序可以快速轻松地配置您的 Openbox 桌面。

  • ObConf — 一个基于 Qt6 的 Openbox 窗口管理器配置工具。
https://github.com/lxqt/obconf-qt || obconf-qt
  • LXAppearance ObConf — LXAppearance 的插件,用于配置 Openbox。注意,此插件并不包含所有 Openbox 配置选项,因此您可能仍然需要安装 obconf-qt。
https://github.com/lxde/lxappearance-obconf || lxappearance-obconf
  • LXInput — LXDE 键盘和鼠标配置
https://github.com/lxde/lxinput || lxinput
  • LXRandR — LXDE 显示器配置。
https://github.com/lxde/lxrandr || lxrandr
  • obkey — 配置 Openbox 键盘快捷键
https://code.google.com/p/obkey/ || obkeyAUR

与 Openbox 桌面菜单配置相关的程序和应用程序将在 #菜单 中讨论。

Openbox 重新配置

提示 如果尚未添加,为了方便起见,值得将此命令添加到菜单和/或绑定为一个快捷键。

Openbox 并不总是自动反映配置文件中在该会话中所做的更改。因此,在编辑配置文件后,有必要手动重新加载它们。要执行此操作,请运行以下命令:

$ openbox --reconfigure

如果打算将此命令作为快捷键添加到 ~/.config/openbox/rc.xml,只需将命令列为 reconfigure 即可。下面提供了一个使用 Super+F11 快捷键的示例:

<keybind key="W-F11">
  <action name="Reconfigure"/>
</keybind>

键盘快捷键

所有的按键绑定必须添加到 ~/.config/openbox/rc.xml 文件中,并置于 <!-- Keybindings for running aplications --> 标题之下。虽然此处提供了简要概述,但更深入的按键绑定解释可以在 openbox.org 上找到。

可以使用以下语法将快捷键添加到配置文件中:

<keybind key="my-key-combination">
  <action name="my-action">
    ...
  </action>
</keybind>

运行外部命令的动作名称是 Execute。使用以下语法来定义要执行的外部命令:

<action name="Execute">
  <command>my-command</command>
</action>

查看 Openbox wiki 获取所有可用动作的列表。

提示 obkeyAUR 工具提供了用于配置按键绑定的图形界面。在使用 obkey 之前,您应该先使用 obconf-qt 创建 ~/.config/openbox/rc.xml

虽然标准字母数字键的用法不言自明,但其他类型的键(如 modifiersmultimedianavigation)有专门的名称。

修饰键 (Modifiers)

Modifier 键在按键绑定中起着重要作用(例如,按住 ShiftCtrl 键并组合另一个键来执行某个动作)。使用修饰键有助于防止快捷键冲突,即两个或更多动作链接到同一个键或组合键的情况。修饰键与另一个键组合的语法是:

"<modifier>-<key>"

修饰键代码如下:

  • S: Shift
  • C: Control
  • A: Alt
  • W: Super
  • M: Meta
  • H: Hyper (如果绑定到了某个功能)

多媒体键

如果可用,可以设置适当的 multimedia 键来执行其预期功能,例如控制音量和/或屏幕亮度。这些通常集成在 function 键中,并通过相应的符号进行标识。详细信息请参阅 键盘输入

音量和亮度多媒体代码如下(注意,仍需为它们分配命令才能实际工作):

  • XF86AudioRaiseVolume: 增大音量
  • XF86AudioLowerVolume: 减小音量
  • XF86AudioMute: 静音 / 取消静音
  • XF86MonBrightnessUp: 增加屏幕亮度
  • XF86MonBrightnessDown: 降低屏幕亮度

有关 XF86 多媒体键的完整列表,请参见 LQWiki:XF86 keyboard symbols

音量控制

用于控制音量的命令取决于声音系统使用的是 ALSAPulseAudio 还是 OSS

这些是方向键,通常用于向上、下、左、右移动光标。导航代码如下:

  • Up: 上
  • Down: 下
  • Left: 左
  • Right: 右

Openbox 支持三种类型的菜单:静态管道 (pipes/动态)生成器(静态或动态)。它们可以单独使用,也可以以任何组合方式使用。

静态 (Static)

顾名思义,这种默认菜单类型不会以任何方式改变,可以通过手动编辑和/或使用合适的软件包自动(重新)生成。

这种菜单类型快速高效,除了用于选择应用程序,它还可以用于访问特定功能和/或执行特定任务(如桌面配置),而将应用程序的访问留给其他进程(如 synapsexfce4-appfinder 应用程序)。

~/.config/openbox/menu.xml 文件将是静态桌面菜单内容的唯一来源。

menumaker 自动为多个窗口管理器生成 xml 菜单,包括 Openbox、FluxboxIceWMXfce。它会搜索所有已安装的可执行程序,并为其创建一个菜单文件。如果需要,还可以配置 MenuMaker 以排除某些应用程序类型(例如与 GNOMEKDE 相关的)。

安装并执行后,它会自动生成一个新的 ~/.config/openbox/menu.xml 文件。为避免覆盖现有文件,请输入:

$ mmaker -v OpenBox3

否则,要覆盖现有文件,请添加 force 参数 (f):

$ mmaker -vf OpenBox3

一旦生成了新的 ~/.config/openbox/menu.xml 文件,就可以手动对其进行编辑,或者使用 GUI 菜单编辑器(如 obmenuAUR)进行配置。

obmenu

注意 obm-xdg(一个用于生成 GTKGNOME 应用程序列表的管道菜单)也随 obmenu 提供。但是,它存在长期未修复的 bug,可能产生无效输出,甚至完全无法工作。因此,这里省略了相关讨论。

obmenuAUR 是一个“用户友好”的 GUI 应用程序,用于编辑 ~/.config/openbox/menu.xml,无需编写 xml 代码。

xdg-menu

archlinux-xdg-menu 将基于 /etc/xdg/ 目录中包含的 xdg 文件,为众多的窗口管理器(包括 Openbox)自动生成菜单。查看 Xdg-menu#Openbox 文章了解更多信息。

注销菜单选项

提示 提供的命令也可以附加到 快捷键 上。

可以编辑 ~/.config/openbox/menu.xml 文件,以提供一个与 oblogout 具有相同选项的子菜单。下面的脚本示例将提供所有这些选项,但无法锁定屏幕。

<menu id="exit-menu" label="Exit">
	<item label="Log Out">
		<action name="Execute">
			<command>openbox --exit</command>
		</action>
	</item>
	<item label="Shutdown">
		<action name="Execute">
			<command>systemctl poweroff</command>
		</action>
	</item>
	<item label="Restart">
		<action name="Execute">
		        <command>systemctl reboot</command>
		</action>
	</item>
	<item label="Suspend">
		<action name="Execute">
		        <command>systemctl suspend</command>
		</action>
	</item>
	<item label="Hibernate">
		<action name="Execute">
		        <command>systemctl hibernate</command>
		</action>
	</item>
</menu>

编写好条目后,在桌面主菜单中所需位置(通常作为最后一个条目)添加以下行以展示该子菜单:

<menu id="exit-menu"/>

管道菜单 (Pipes)

提示 静态菜单中包含一个或多个管道子菜单是完全可行的。某些管道菜单的功能可能依赖于相关软件包的安装。

这种类型的菜单本质上是一个脚本,可以在运行时即时提供动态刷新的列表。这些列表可用于多种目的,包括列出应用程序、提供信息以及提供控制功能。可以安装预配置的管道菜单,尽管它们不在 官方仓库 中。经验丰富的用户也可以修改和/或创建自己的自定义脚本。同样,~/.config/openbox/menu.xml 可以且通常会包含多个管道菜单。

示例

Openbox.org 还提供了进一步的管道菜单列表。

生成器 (Generators)

这种菜单类型类似于 XfceLXDE 等桌面环境的任务栏菜单。这种菜单可以实时自动更新,功能强大且非常方便。还可以添加自定义类别和菜单条目;阅读您打算使用的动态菜单的文档,以确定是否以及如何操作。

菜单生成器必须从 ~/.config/openbox/menu.xml 文件中执行。

obmenu-generator

提示 即便在 ~/.config/openbox/rc.xml 中启用了图标,也可以在 obmenu-generatorAUR 中禁用它们。

obmenu-generatorAUR 尽管是非官方软件包,但强烈推荐使用。它既可以用作静态菜单也可以用作动态菜单,高度可配置,功能强大且通用。菜单类别和单个条目可以轻松隐藏、自定义和/或添加。官方主页 提供了更多信息和截图。

以下是 obmenu-generator 在 ~/.config/openbox/menu.xml 中动态执行且不带图标的示例:

<?xml version="1.0" encoding="utf-8"?>
<openbox_menu>
    <menu id="root-menu" label="OpenBox 3" execute="/usr/bin/obmenu-generator">
    </menu>
</openbox_menu>

要自动为条目添加图标,请添加 -i 选项:

<menu id="root-menu" label="OpenBox 3" execute="/usr/bin/obmenu-generator -i">

openbox-menu

提示 如果此菜单产生错误,可以通过在 ~/.config/openbox/rc.xml 中启用图标来解决。

openbox-menuAUR 使用 LXDEmenu-cache 来创建动态菜单。官方主页 提供了更多信息和截图。

要在菜单条目旁边显示图标,必须确保它们在 ~/.config/openbox/rc.xml 文件的 <menu> 部分中已启用:

<showIcons>yes</showIcons>

如果使用静态菜单,则需要编辑 ~/.config/openbox/menu.xml 文件,为每个条目提供 icon = 命令,以及完整的路径和图标名称。为类别提供图标的语法示例为:

<menu id="apps-menu" label="[label name]" icon="[pathway to icon]/[icon name]">

如果您在菜单中无法显示图标,请尝试将它们转换为 .png 格式。

将桌面菜单作为面板菜单

提示 XDoTool 可以模拟任何动作的任何快捷键,因此它还可以用于许多其他目的...

xdotool 是一个可以发送命令以模拟按键/快捷键的软件包,这意味着可以使用它来调用快捷键相关的动作,而无需实际按下分配的按键。由于这包括调用 Openbox 桌面菜单的分配快捷键的能力,因此可以使用 XDoTool 将 Openbox 桌面菜单转换为面板菜单。特别是在桌面菜单经过深度定制且功能丰富的情况下,这非常有用:

  • 替换现有的面板菜单
  • 在没有提供或无法实现面板菜单的地方(例如对于 Tint2)实现一个面板菜单
  • 在使用 xfdesktop 等应用程序管理 桌面 时,补偿因失去对桌面菜单的访问权限带来的损失。

一旦安装了 XDoTool(如果尚未安装),就需要创建一个快捷键来访问 ~/.config/openbox/rc.xml 中的根菜单,同样要放在 <!-- Keybindings for running aplications --> 标题之下。例如,以下代码将通过按下 Ctrl+m 来调出菜单:

<keybind key="C-m">
    <action name="ShowMenu">
       <menu>root-menu</menu>
    </action>
</keybind>

然后必须 重新配置 Openbox。在这种情况下,XDoTool 将用于模拟 Ctrl+m 按键以访问桌面菜单,命令如下(注意使用 + 代替 -):

xdotool key control+m

该命令如何作为面板启动器/图标使用,主要取决于所用面板的功能。虽然有些面板允许在创建新启动器时直接执行上述命令,但其他面板可能需要使用可执行脚本。例如,将在 ~/.config 目录中 创建 一个名为 obpanelmenu.sh 的自定义可执行脚本,并将相应的 XDoTool 命令添加到文件中(本例中为模拟 Ctrl+m 按键):

~/.config/obpanelmenu.sh
xdotool key control+m

保存并关闭文件后,将其制作成 可执行 脚本。

执行它将调出 Openbox 桌面菜单。因此,当使用支持拖放功能来添加新启动器的面板时,只需将该可执行脚本拖动到面板上,然后根据个人喜好更改图标即可。

XDG 兼容菜单

XDG 兼容菜单基于 freedesktop.org 标准。菜单定义在位于 /etc/xdg/menus 的菜单文件中。新安装的应用程序将自动出现在菜单中。

示例

archlinux-menusAUR 软件包提供了一个 Arch Linux 特有的 XDG 兼容菜单。

技巧与提示

鼠标指针和图标主题

详情请参见 鼠标指针主题图标

桌面图标和壁纸

Openbox 原生不支持桌面图标或壁纸。

参见 PCManFMSpaceFMIdesk

注意 您可能需要编辑 ~/.conkyrc 并将 own_window_type 设置为 normal

参见 应用程序列表/其他#壁纸设置工具

合成特效

Openbox 不提供对 合成 (compositing) 的原生支持,因此需要外部合成器来实现此目的。

虽然合成不是必需组件,但它特别能避免 oblogout 出现的屏幕失真问题,以及终端窗口透明度相关的视觉故障。有关常用选择,请参见 Xorg#合成管理器列表

oblogout

有关如何使用这个有用的图形化注销脚本的概述,请参见 Oblogout 文章。

使用快捷键运行复杂命令

如果需要执行复杂命令,请使用 shell 功能。

编写自己的脚本时,请务必转义 xml 特殊字符,例如 "&" ("&amp;"), "<" ("&lt;"), ">" ("&gt;") 等(详细信息请参见 XML 中的预定义实体)。

此示例将立即关闭显示器并使用 slock 锁定屏幕。它取自 此主题

 <keybind key="W-l">
   <action name="Execute">
     <command>sh -c 'slock &amp; (sleep .5 &amp;&amp; xset dpms force off)'</command>
   </action>
 </keybind>

有时需要为应用程序指定环境变量:

 <keybind key="A-F7">
   <action name="Execute">
     <command>sh -c "LC_ALL=C.UTF-8 obconf-qt"</command>
   </action>
 </keybind>

另一个示例将启动应用程序,并将所有标准输出和标准错误输出保存到文件:

 <keybind key="A-f">
   <action name="Execute">
     <command>sh -c sh -c "exec gimp &gt;/tmp/gimp.out 2&gt;&amp;1"</command>
   </action>
 </keybind>

启用截图

 <keybind key="Print">
   <action name="Execute">
     <command>gnome-screenshot --clipboard</command>
   </action>
 </keybind>
 <keybind key="A-Print">
   <action name="Execute">
     <command>gnome-screenshot --clipboard --window</command>
   </action>
 </keybind>
 <keybind key="W-Print">
   <action name="Execute">
     <command>gnome-screenshot --interactive</command>
   </action>
 </keybind>

应用程序启动器

鉴于纯 Openbox 安装缺乏桌面环境,安装一个或多个应用程序启动器作为 Openbox 菜单系统和快捷键的补充是非常有用的。此类启动器的列表可在 应用程序启动器类别应用程序列表/其他#应用程序启动器 中找到;流行的示例有 Gmrundmenu

使用鼠标切换桌面

可以通过将鼠标光标移动到屏幕边缘来切换桌面。首先安装 xdotool 并将以下两行添加到您的 ~/.xinitrc

xdotool behave_screen_edge --delay 500 left set_desktop --relative -- -1 &
xdotool behave_screen_edge --delay 500 right set_desktop --relative -- +1 &

设置默认应用程序 / 文件关联

参见 默认应用程序 文章。

临时窗口透明度

注意 如果动作组中定义了其他动作,此方法可能无法工作。

transset-dfAUR 程序可以即时启用窗口透明度。

例如,在 ~/.config/openbox/rc.xml 文件的 <mouse> 部分中使用以下代码,将允许通过将鼠标指针悬停在标题栏上并用中键滚动来控制应用程序窗口的透明度:

<context name="Titlebar">
    ...
    <mousebind button="Up" action="Click">
        <action name= "Execute" >
        <execute>transset-df --point .2 --inc  </execute>
        </action>
    </mousebind>
    <mousebind button="Down" action="Click">
        <action name= "Execute" >
        <execute>transset-df --point .2 --dec </execute>
        </action>
    </mousebind>
    ...
</context>

使用 obxprop 进行快速配置

openbox 软件包提供了一个 obxprop 二进制文件,可以解析应用程序在 rc.xml 中的相关设置值。官方建议使用 obxprop | grep "^_OB_APP" 来完成此任务。通过运行显示的命令启动该过程,然后点击一个窗口以在终端中查看其属性。

应用程序的 Xprop 值

xorg-xprop 可用于中继所选应用程序的属性值。如果经常使用应用程序专用设置,以下 Bash 别名 可能很有用:

alias xp='xprop | grep "WM_WINDOW_ROLE\|WM_CLASS" && echo "WM_CLASS(STRING) = \"NAME\", \"CLASS\""'

要使用 Xorg-XProp,请运行给定别名 xp,然后点击要定义专用设置的活动程序。显示的结果将仅包含 Openbox 本身需要的信息,即 WM_WINDOW_ROLEWM_CLASS(名称和类)值。

WM_WINDOW_ROLE(STRING) = "roster"
WM_CLASS(STRING) = "gajim.py", "Gajim.py"
WM_CLASS(STRING) = "NAME", "CLASS"

在键盘布局之间切换

有关说明,请参见文章 切换键盘布局

设置虚拟桌面网格布局

安装 obsetlayoutAUR。例如,要设置 2x2 网格:

obsetlayout 0 2 2 0

不带参数运行它以了解参数的含义。

启用热区 (Hot Corners)

lead-gitAUR 为 Openbox 和其他轻量级窗口管理器提供热区。通过在自启动文件中添加条目来启动该应用程序:

lead &

命令可以在配置文件 ~/.config/lead/lead.conf 中编辑(将 eDP1 替换为您屏幕输出的名称,这可以通过 xrandr 找到)。

[eDP1]
bottom=
bottomLeft=chromium
bottomRight=thunar
left=
right=
top=
topLeft=mlde.californium toggle
topRight=skippy-xd

更多信息请参见 [2]

窗口贴靠 (Window snapping)

许多桌面环境和窗口管理器支持 窗口贴靠(例如 Windows 7 Aero Snap),即当窗口被移动到屏幕边缘时会自动吸附到位。这种效果也可以通过在 Openbox 中对聚焦窗口使用 快捷键 来模拟。

如下例所示,必须使用百分比来确定窗口大小(更多信息请参见 openbox.org)。在这种情况下,super 键与 navigation 键配合使用:

<keybind key="W-Left">
  <action name="UnmaximizeFull"/>
  <action name="MaximizeVert"/>
  <action name="Raise"/>
  <action name="MoveResizeTo">
    <width>50%</width>
    <x>0</x>
    <y>0</y>
  </action>
</keybind>
<keybind key="W-Right">
  <action name="UnmaximizeFull"/>
  <action name="MaximizeVert"/>
  <action name="Raise"/>
  <action name="MoveResizeTo">
    <width>50%</width>
    <x>50%</x>
    <y>0</y>
  </action>
</keybind>

然而,应该注意的是,一旦窗口“贴靠”到边缘,除非随后将其最大化并恢复,否则它将保持垂直最大化。解决方法是实现额外的快捷键(本例中使用 downup 键)来执行此操作。这也将使从屏幕边缘拉出“贴靠”的窗口变得更快。

<keybind key="W-Down">
   <action name="Unmaximize"/>
</keybind>
<keybind key="W-Up">
   <action name="Maximize"/>
</keybind>

Ubuntu 论坛主题 提供了更多信息。还可以使用 opensnapAUR 等应用程序,自动模拟窗口贴靠行为,而无需使用快捷键。另一个选择是使用 bunsen-utilities-gitAUR,它提供 bl-aerosnap --leftbl-aerosnap --right 命令,如果窗口未贴靠,则将其贴靠到左右边缘;否则将其恢复到原始大小和位置。只需将这些命令绑定到您选择的按键组合即可。

下面的示例将使用 Alt 键与导航键组合,在屏幕的每个角落实现四分之一窗口平铺:

<keybind key="A-Up">
  <action name="UnmaximizeFull"/>
  <action name="Raise"/>
  <action name="MoveResizeTo">
    <x>0</x>
    <y>0</y>
    <width>50%</width>
    <height>50%</height>
  </action>
</keybind>
<keybind key="A-Right">
  <action name="UnmaximizeFull"/>
  <action name="Raise"/>
  <action name="MoveResizeTo">
    <x>50%</x>
    <y>0</y>
    <width>50%</width>
    <height>50%</height>
  </action>
</keybind>
<keybind key="A-Left">
  <action name="UnmaximizeFull"/>
  <action name="Raise"/>
  <action name="MoveResizeTo">
    <x>0</x>
    <y>50%</y>
    <width>50%</width>
    <height>50%</height>
  </action>
</keybind>
<keybind key="A-Down">
  <action name="UnmaximizeFull"/>
  <action name="Raise"/>
  <action name="MoveResizeTo">
    <x>50%</x>
    <y>50%</y>
    <width>50%</width>
    <height>50%</height>
  </action>
</keybind>

平滑的显示管理器过渡

注意 此方法已确认适用于 LightDM

显示管理器的用户可能会在显示管理器和 Openbox 桌面之间的转换过程中遇到闪烁。闪烁的原因是 Openbox 在启动时设置了根窗口的颜色。因此,在显示管理器的背景和桌面壁纸之间,会有短暂的灰色闪烁瞬间。

可以通过编辑位于 /usr/lib/openbox/openbox-autostart 的 Openbox 启动脚本来禁用设置根窗口背景颜色。只需注释掉(或删除)以 # Set a background color 开头的代码块即可。

注意 如果禁用了根窗口颜色调整,没有专门设置壁纸的用户将自动“继承”显示管理器的背景。

Window decorations

要为所有或特定应用程序删除窗口装饰,请在 rc.xml(用户路径:~/.config/openbox/ 或系统路径:/etc/xdg/openbox/)的 <applications> 部分中使用 <decor> 选项。

以 Firefox 为例(包括 Firefox-Beta 和 Firefox-Nightly 等变体):

 <application class="Firefox*">
   <decor>no</decor>
 </application>

还可以禁用所有应用程序的装饰(使用类 "*"),然后为单个应用程序启用它们(使用 yes)。要应用更改,请重新启动您的桌面会话,从而重新启动 Openbox。参考:Openbox 常见问题解答

故障排除

Firefox

基于 Mozilla 的浏览器可能会忽略应用程序规则(例如 <desktop>),除非使用 class="Firefox"。参见 #应用程序的 Xprop 值

缺少主题

如果由于某种原因无法选择刚提取的主题,请打开主题目录,首先确保它与 Openbox 兼容——其中应该有一个 openbox-3 目录和一个 themerc 文件。在某些情况下可能还会存在 .obt (OpenBox Theme) 文件,然后可以在 obconf-qt 中手动加载它。

主题也可能因权限错误而无法访问。有关更多信息,请参见 文件权限和属性

停止连续切换桌面

默认情况下,Openbox 在鼠标滚轮滚动时会从最后一个桌面切换回第一个桌面。在 mousebind 部分中使用 <wrap>no</wrap> 可禁用此行为。

   <context name="Desktop">
     <mousebind button="Up" action="Click">
       <action name="GoToDesktop">
         <to>previous</to>
         <wrap>no</wrap>
       </action>
     </mousebind>
     <mousebind button="Down" action="Click">
       <action name="GoToDesktop">
         <to>next</to>
         <wrap>no</wrap>
       </action>
     </mousebind>
   </context>

新窗口加载在活动窗口后

某些应用程序窗口(例如 Firefox 窗口)可能会在当前活动窗口后加载,导致您需要切换到刚刚创建的窗口以使其获得焦点。要修复此行为,请将此代码添加到您的 ~/.config/openbox/rc.xml 文件中,位于 <openbox_config></openbox_config> 标签之间:

<applications>
  <application class="*">
    <focus>yes</focus>
  </application>
</applications>

参见

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.