解决方案:

解决方案:

我正在尝试在 Openbox 中设置“终端作为桌面壁纸”,如上所述这里

Openbox可以设置<layer>below</layer>,使窗口作为桌面背景运行,并且不会被状态栏显示,不受“最小化窗口”的影响。因此,我实际上有一个终端,而不是显示无用的图像作为壁纸。

我作为后台运行的实际终端是terminator,我刚刚创建了一个符号链接terminator-wallpaper-1aterminator-wallpaper-1b,它们只是终结符二进制文件的符号链接。只为名字不同,我才能区分。

我有双显示器设置,并且我希望每个显示器上都有终结者壁纸。

openbox 窗口属性通过以下方式设置devilspie

(if
(matches (application_name) "terminator-wallpaper")
(begin
(wintype "desktop")
)
)

然后,我在 openbox 配置中有这个,以便每个壁纸都转到相应的显示器/桌面:

<application name="terminator-wallpaper-1a">
  <focus>yes</focus>
  <layer>below</layer>
  <desktop>1</desktop>
  <position>
    <y>0</y>
    <x>0</x>
    <monitor>1</monitor>
  </position>
  <skip_taskbar>yes</skip_taskbar>
  <maximized>true</maximized>
</application>

<application name="terminator-wallpaper-1b">
  <focus>yes</focus>
  <layer>below</layer>
  <desktop>1</desktop>
  <position>
    <y>0</y>
    <x>0</x>
    <monitor>2</monitor>
  </position>
  <skip_taskbar>yes</skip_taskbar>
  <maximized>true</maximized>
</application>

最后,这就是我开始整个事情的方式:

devilspie &
terminator-wallpaper-1a -b &
terminator-wallpaper-1b -b &

xdotool set_desktop 0

xdotool search --class 'Terminator-wallpaper-1a' windowunmap --sync windowmap windowsize %1 1920 1180
xdotool search --class 'Terminator-wallpaper-1b' windowunmap --sync windowmap windowsize %1 1920 1180

一切都运行良好,当我最小化所有其他窗口时,我实际上看到了我的终结者壁纸。但实际上只有其中之一是可用的。即,专注或活跃。另一个我无法输入。即使当我用鼠标单击时,光标仍然处于非活动状态,因此窗口永远不会成为焦点。

我怎样才能解决这个问题 ?

解决方案:

在与用户 @intika 进行彻底的故障排除后,我们已经确定了问题所在。将以下代码片段添加<mouse>到 openbox 配置文件中的部分修复了该问题:

<context name="Desktop">
  <mousebind button="Left" action="Press">
    <action name="Focus"/>
    <action name="Raise"/>
  </mousebind>
</context>

答案1

一次只能有一个窗口/应用程序获得焦点。

在您的 openbox 配置中,两个应用程序/壁纸都具有焦点,但从技术上讲这是不可能的,因此 openbox 通过仅将焦点集中到一个应用程序来减轻您的配置(否则它不能这样做)。

<application name="terminator-wallpaper-1a">
  <focus>yes</focus>
...
<application name="terminator-wallpaper-1b">
  <focus>yes</focus>

有很多可能性可以解决这个问题,它们围绕实现一种将焦点切换到第一或第二屏幕桌面/应用程序/壁纸的方法而发展

可能的解决方案1:

您可以尝试将焦点值设置为 no 或将焦点线全部删除,然后测试通过鼠标单击切换焦点

可能的解决方案2:

使用鼠标位置来设置焦点,这里是开放盒子维基就此而言,首先删除两个壁纸应用程序的焦点条目,然后将以下内容添加到主要部分下的 openbox 配置中,<focus></focus>如链接文档中所述

<followMouse>yes</followMouse>
<!-- move focus to a window when you move the mouse into it -->

请注意,这也会影响您的其他窗口......

您也可以尝试在应用程序部分下使用followMouse,但我不认为这是由 openbox 处理的

可能的解决方案2:

使用带有键盘快捷键的 xdotool 或其他方式切换焦点,事实上,您可以为键盘快捷键分配如下所示的命令,而且此解决方案还要求您通过删除/编辑双重来修复配置 <focus>yes</focus>

xdotool search --class 'Terminator-wallpaper-1b' windowactivate

与 xdotool 相同,wmctrl 也可以用于此目的:

#Lists currently open windows 
wmctrl -l 

#Set focus to windows with title containing STRING
wmctrl -a STRING

笔记:

<focus>yes</focus>
# if the window should try be given focus when it appears. if this is set
# to yes it doesn't guarantee the window will be given focus. some
# restrictions may apply, but Openbox will try to

笔记2:

还有很多其他可能的解决方案,您可以评论答案,我将相应地编辑它;)

相关内容