【发布时间】:2015-06-01 21:04:08
【问题描述】:
我想做的事情应该比较简单。我想设置一个由两个(或可选三个监视器)组成的显示器。其中两个应该显示 Chromium 浏览器窗口,第三个(如果存在)将显示一些不相关的内容。所有显示器都设置为 1280x1024 分辨率,并且浏览器窗口应该被拉伸,使其总高度为 2048 像素(上半部分绘制在上面的显示器上,下半部分绘制在下面的显示器上)。我尝试使用名为 openbox 的窗口管理器设置正确的窗口坐标和大小。我将以下部分放在其配置文件 rc.xml 中:
<applications>
<application name="*">
<decor>no</decor>
<position>
<x>0</x>
<y>0</y>
<monitor>...</monitor> //appropriate number
</position>
<size>
<width>1280</width>
<height>2048</height>
</size>
</application>
</applications>
虽然窗口位置正确(它从顶部监视器的左上角开始),但它的大小不正确。出于某种原因,浏览器窗口的大小设置为 1280x1024 而不是 1280x2048,因此它只完全填满顶部显示器,而底部显示器保持空白。这是用于运行 Chromium 的实际命令行:
chromium-browser --incognito --app=<MY URL>
如您所见,它缺少 --window-position 和 --window-size 参数,因为 openbox 应该为我设置这两个值,而它对后者的设置不正确。基本上,openbox 似乎无法处理大于单个显示器高度的窗口高度。只要我将 rc.xml 中的窗口高度设置为小于或等于 1024 的任何值,一切都很好,但是每当我尝试大于该值时,它就会缩小到 1024 并且整个窗口占据顶部监视器,就好像openbox不明白它应该在下面的监视器上绘制窗口的剩余部分一样。当我尝试运行另一个 GUI 应用程序 (gedit) 时,效果是一样的,所以这似乎是一种一般行为,而不是仅由 Chromium 引起的问题。我测试它的操作系统是 Ubuntu 14.04 64 位,如果重要的话,浏览器是 Chromium 41。任何帮助将不胜感激。
【问题讨论】:
-
您可以在窗口运行后手动将其拉伸到您想要的大小吗?
-
不幸的是,这不是一个选项。最终用户不应该手动操作窗口大小。应用程序启动后,其窗口必须具有适当的大小,无需进一步调整。
-
这不是我问题的重点。我试图确保您想要的结果甚至是可能的(即 X 已为此正确设置并且 openbox 完全支持它)。
-
是的,openbox 能够做到这一点。我能够定义一个组合键,当按下该组合键时,会导致窗口按预期调整大小。我使用“keybind”选项和名为“MoveResizeTo”的预定义操作(无需在此处描述配置文件的确切语法)来做到这一点。尽管如此,该解决方案仍然是不可接受的,因为它需要用户交互。出于某种原因,openbox“更清楚”在应用程序启动时选择什么窗口大小,并忽略将窗口高度设置为大于单个监视器高度的值的请求。
-
对于 openbox 来说,阻止这并不是一件完全不合理的事情,尽管在你的情况下这肯定很烦人。您可以看到有关在某些 openbox 挂钩或其他方式中编写对该 resize 函数的调用作为解决方法的脚本。除此之外我不知道。
标签: linux ubuntu window-managers