Openbox:在每个应用程序的基础上禁用 Alt-F4

Mar*_*ter 4 openbox lxde

我正在使用LXDE并且在我的.config/openbox/lxde-rc.xml操作中ALT-F4定义了:

<keybind key="A-F4">
  <action name="Close"/>
</keybind>
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,这适用于所有应用程序。当ALT-F4按下时,窗口被关闭。

我有一个应用程序,我们称之为foo,我希望它不受ALT-F4. 即当ALT-F4按下时,我希望窗口保持打开状态(应该完全忽略该操作)。

是否可以创建这样的规则?

编辑:根据@Michael Homer我在我的回答中添加了以下内容.config/openbox/lxde-rc.xml

<keybind key="A-F4">
  <action name="If">
    <title>foo</title>
    <then>
      <!-- Do nothing for foo -->
    </then>
    <else>
      <action name="Close"/>
    </else>
  </action>
</keybind>
Run Code Online (Sandbox Code Playgroud)

这很好用,但我需要匹配foobar

实现这一目标的最简单解决方案是什么?

Mic*_*mer 5

可以使用If 操作

<keybind key="A-F4">
 <action name="If">
  <title>* foo</title>
  <then><!-- Do nothing for foo --></then>
  <else>
   <action name="Close" />
  </else>
 </action>
</keybind>
Run Code Online (Sandbox Code Playgroud)

<title>条件将匹配以“foo”结尾的窗口标题。有变化<title type="regex"><title type="exact">其他类型的匹配。当窗口匹配时,操作什么也不做,当它不匹配时(对于每个其他窗口),它会像往常一样关闭。

Openbox 3.6 和更新版本包含额外的选择器标签<class>, <name>,<role>如果标题不是唯一的它们可以帮助更准确地识别您的窗口。它们支持与 相同的type属性和内容<title>,但会针对相关的 X 属性进行测试。


如果您使用的是较早版本的 Openbox 并且无法通过标题识别您的窗口,那么您的运气就不那么好了,但是可以通过以下方式破解某些内容xdotool:将 A-F4 操作绑定到识别窗口的脚本更准确地说,然后发送一个密钥组合,如果不匹配,该组合将绑定到实际关闭操作。