使用 w/xrandr 虚拟分辨率时将窗口最大化到物理屏幕

使用 w/xrandr 虚拟分辨率时将窗口最大化到物理屏幕

我有一台上网本,屏幕很小,是宽屏格式(1024x600),这意味着很多程序(其设计者没有想到这一点)会打开无法调整大小且底部被遮住的窗口。在 Ubuntu 10.04 中,我使用 xrandr 命令解决了这个问题:

xrandr --output LVDS1 --fb 1024x768 --panning 0x768

(注意 0x)它的效果是给我一个正常大小的虚拟桌面,可以垂直平移,但窗口管理器(不知何故)忽略了它,因此最大化的窗口只占据了物理屏幕。结果是我不必平移,除非弹出一个大对话框:太好了。

在 11.04 中,这不太管用。我上面说的一切都是正确的,但底部的 168 像素似乎永久变黑了,所以如果一个大窗口延伸到那里,我就看不到里面有什么(但是,它在那里:调整大小手柄会出现,在允许调整大小的情况下很有用)。我想这是与 Unity 相关的。这违背了目的,所以我尝试了这个 xrandr 命令:

xrandr --output LVDS1 --fb 1024x768 --panning 1024x768

(注意 1024x)。唉,它不再能欺骗窗口管理器了,最大化的窗口全部都移到底部。问题:

我该如何设置才能使“最大化”窗口只占据物理屏幕(或者更一般地说,占据特定的一块屏幕)?

我很乐意回答的一个相关问题是:

为什么第一个 xrandr 命令会欺骗窗口管理器(根据手册页,“0x”表示沿水平轴平移被禁用;从功能上讲,这毫无意义,因为虚拟尺寸与物理尺寸相同)? Unity 出了什么问题?

请注意,“最大化”操作是必需的,因为在 Unity 中,最大化窗口的样式不同:其标题栏被吸收到屏幕顶部的工具栏中,为我节省了宝贵的像素。简单地调整窗口大小并不是一个好选择。

参考:

我发现了这个问题:我想防止最大化覆盖屏幕的三分之一。当 Compiz Maximize 似乎什么都不做时,我感到非常失望(有一个 Launchpad 错误:https://bugs.launchpad.net/ubuntu/+source/compiz-fusion-plugins-extra/+bug/462158)。

我也在超级用户上发现了同样的问题:https://superuser.com/questions/269966/id-like-to-prevent-maximize-from-covering-one-third-of-the-screen,它提供了两种替代方案。Compiz Grid 插件没有帮助,因为它没有最大化,正如我上面所述。我没有尝试过 Python 窗口组织器,但它看起来与 Grid 类似。总的来说,我不指望聪明的脚本会有所帮助,因为“最大化”的含义由窗口管理器本身控制,因此解决方案应该是 Compiz 解决方案。有吗?

答案1

让我自己回答这个问题;答案很奇怪。诀窍在于,所需的桌面行为(在 10.04 中保持不变)现在(在 11.04 中)由 Compiz 控制,它有一个“输出”的概念:即要绘制的屏幕。这些是在 CompizConfig 设置管理器(包compizconfig-backend-gconf-kconfig)的“常规选项”菜单下的“显示设置”选项卡中配置的。

这个东西有三个设置,都很重要。最重要的是“检测输出”:必须取消选中,因为重点是我想创建一个非物理的屏幕设置,而自动检测只会选择我的屏幕尺寸。

第二个最重要的是“输出”框,它是分辨率列表。乍一看,您可能以为这里要输入的是“1024x768”,但这是错误的:它告诉 Compiz 使用整个虚拟屏幕,因此最大化的窗口将流入底部;这是错误的行为。但是写“1024x600”也不起作用,因为这会告诉 Compiz 假装屏幕只有 600 像素高;违反直觉的结果是它决定拉紧每个窗口。这很丑陋,而且无法使用,导致惊人的图形故障,并且神秘地将按钮从需要单击以激活它们的位置移开。不好。

一个更好的选择是写“1024x600+0-168”,它告诉 Compiz 实际上底部有 168 个未使用的像素:这重现了我抱怨的“黑条”行为。知道这从何而来是件好事,但我仍然不想要它。但它告诉我这意味着什么:这意味着 Compiz 只是忽略了这些像素:它不会在那里绘制窗口。不过,我的鼠标仍然会在那里,因为这种行为是由 X 控制的,而 X 位于 Compiz 之前。似乎要做的是以某种方式告诉 Compiz 在那里绘制(所以窗口去那里),但也不能在那里画画(这样他们就不会去那里)。

因此,完全正确的解决方案是描述输出设备到 Compiz:一个“1024x600+0-168”,一个“1024x768”,这样就告诉 Compiz 同时在这些底部像素上绘图和不绘图。但如何确保它知道“想要”哪一个?这是此选项卡中的第一个选项:“重叠输出处理程序”。将其设置为“首选较小的输出”,这正是我在上面用文字表达的意思。

因此答案是:运行xrandr --mode 1024x700 --fb 1024x768 --panning 0x768;转到 Compiz 的显示选项并输入两个输出“1024x600+0-168”和“1024x768”;取消选中“检测输出”;并使“重叠输出处理程序”优先选择较小的输出。呼。

答案2

这个 xrandr 东西非常有趣和有用。谢谢分享这些信息!平移确实有效!我使用的是基于 lubuntu 的发行版。但这里有另一个更简单的解决方案http://forums.linuxmint.com/viewtopic.php?f=110&t=146674

基本上,对于像我们这样的上网本来说太大的窗口(我的也是 1024x600),只需按下 alt+左键单击窗口并将其拖动到您想要的任何方向。这样,我们就可以轻松看到底部的像素。

相关内容