跳转至内容

Openbox

来自 ArchWiki

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

安装

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

启动

独立运行

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

注意 执行 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 以获得配置视觉设置和主题的图形界面。

openbox-themesAUR 包或 AUR 中可以找到大量主题。一些 GTK 主题也附带 Openbox 主题。Openbox 特定的和 Openbox 兼容的主题都将安装到 /usr/share/themes 目录,并且会立即可用。

box-look.org 是一个优秀且成熟的主题来源。 deviantART.com 也是一个很好的资源。还有更多可以在网上找到。

编辑或创建

提示 最好将主题复制到您的主目录,而不是编辑 /usr/share/themes/ 中的主题。这样可以保留原始主题,以防万一出现问题,并确保您的更改不会在更新时被覆盖。

创建新主题或修改现有主题的过程在官方 openbox.org 网站上有详细介绍。obthemeAUR 是一个用于此目的的用户友好型图形界面。

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)被分配了特殊的名称。

修饰键

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 中可以使用三种类型的菜单:静态管道菜单(动态)和生成器(静态或动态)。它们也可以单独使用或组合使用。

静态菜单

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

快速高效,虽然这种类型的菜单可以用来选择应用程序,但它也可以用于访问特定功能和/或执行特定任务(例如,桌面配置),将应用程序的访问交给另一个进程(例如,synapsexfce4-appfinder 应用程序)。

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

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

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

$ mmaker -v OpenBox3

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

$ mmaker -vf OpenBox3

生成新的 ~/.config/openbox/menu.xml 文件后,可以手动编辑它,或使用图形菜单编辑器进行配置,例如 obmenuAUR

obmenu

注意 obm-xdg - 一个用于生成 GTKGNOME 应用程序列表的管道菜单 - 也随 obmenu 一起提供。但是,它存在长期存在的错误,可能导致无效输出,甚至完全无法正常工作。因此,这里省略了讨论。

obmenuAUR 是一个“用户友好”的图形应用程序,用于编辑 ~/.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"/>

管道菜单

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

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

示例

Openbox.org 还提供了更广泛的管道菜单列表。

生成器

这种菜单类似于 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

请参阅 List of applications/Other#Wallpaper setters

合成效果

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

虽然合成不是必需组件,但它可以特别避免诸如 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>

另一个示例将启动应用程序,并将所有 stdout 和 stderr 输出保留到文件中

 <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 菜单系统和热键的补充可能会很有用。此类启动器的列表可在 Category:Application launchersList of applications/Other#Application launchers 中找到;常见的示例是 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 &

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

请参阅 Default applications 文章。

临时窗口透明度

注意 在操作组内定义了其他操作的情况下,这可能不起作用。

名为 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

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

启用热角

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]

窗口贴靠

许多桌面环境和窗口管理器支持*窗口贴靠*(例如 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 开头的块即可。

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

窗口装饰

要移除所有应用程序或特定应用程序的窗口装饰,请使用 rc.xml<applications> 部分中的 <decor> 选项(用户:~/.config/openbox/ 或系统:/etc/xdg/openbox/)。
Firefox 的示例,包括 Firefox-Beta 和 Firefox-Nightly 等变体

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

您也可以为所有应用程序禁用装饰(使用类 “*”),然后(使用 yes)为单个应用程序启用它们。要应用更改,请重新启动桌面会话,从而重新启动 Openbox。参考:Openbox FAQ

故障排除

Firefox

Mozilla 浏览器可能会忽略应用程序规则(例如 <desktop>),除非使用了 class="Firefox"。请参阅 #Xprop values for applications

缺失的主题

如果由于任何原因无法选择新解压的主题,请打开主题目录以首先确保它与 Openbox 兼容 - 其中应该有一个 openbox-3 目录和一个 themerc 文件。在某些情况下,可能还会存在一个 .obt(**O**pen**B**ox **T**heme)文件,该文件随后可以在 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 窗口)可能会加载在当前活动窗口后面,导致您需要切换到刚创建的窗口才能将其聚焦。要修复此行为,请在 <openbox_config></openbox_config> 标签之间,将以下内容添加到您的 ~/.config/openbox/rc.xml 文件中

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

参见