我在 Ubuntu 14.04 上有一个双显示器设置,使用 Compiz 作为窗口管理器。我可以调整窗口大小以覆盖两个窗口。然而,虽然物理显示面板相距几厘米,但软件默认认为它们彼此相邻,中间没有间隙。这意味着,例如,对角线最终看起来像这样:
+----------+ +----------+
| | | / |
| | | / |
| | | / |
| | |/ |
| /| | |
| / | | |
+----------+ +----------+
我想要实现的目标更像是这样的:
+----------+ +----------+
| | | / |
| | |/ |
| | | |
| | | |
| /| | |
| / | | |
+----------+ +----------+
这会导致部分窗口被隐藏,但这是可以接受的。
我可以让 X 认为显示器之间有间隙,如下所示:
$ xrandr
Screen 0: minimum 320 x 200, current 2048 x 1280, maximum 32767 x 32767
LVDS1 connected (normal left inverted right x axis y axis)
1366x768 60.0 +
1360x768 59.8 60.0
1024x768 60.0
800x600 60.3 56.2
640x480 59.9
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
DP1 disconnected (normal left inverted right x axis y axis)
HDMI2 connected primary 1024x1280+0+0 left (normal left inverted right x axis y axis) 376mm x 301mm
1280x1024 60.0*+ 75.0
1280x960 60.0
1152x864 75.0
1024x768 75.1 70.1 60.0
832x624 74.6
800x600 72.2 75.0 60.3 56.2
640x480 75.0 72.8 66.7 60.0
720x400 70.1
HDMI3 connected 1024x1280+1024+0 right (normal left inverted right x axis y axis) 376mm x 301mm
1280x1024 60.0*+ 75.0
1280x960 60.0
1152x864 75.0
1024x768 75.1 70.1 60.0
832x624 74.6
800x600 72.2 75.0 60.3 56.2
640x480 75.0 72.8 66.7 60.0
720x400 70.1
DP2 disconnected (normal left inverted right x axis y axis)
DP3 disconnected (normal left inverted right x axis y axis)
VIRTUAL1 disconnected (normal left inverted right x axis y axis)
$ xrandr --fb 2184x1280
$ xrandr --output HDMI3 --pos 1160x0
乍一看,这似乎工作得很好——当我将鼠标沿对角线移动穿过显示器之间的间隙时,它会消失在显示器边框“后面”,并重新出现在我期望对角线继续的位置。
然而,我无法再移动窗口或调整窗口大小以横跨两个显示器。鼠标似乎都wmctrl
无法做到这一点。
有办法实现我想要的吗?
答案1
我找到了一个Ask Ubuntu 上的相关问题这对我有用。整个过程的说明,包括在显示器之间创建“间隙”(至少适用于 Ubuntu 14.04):
- 找出当前的总屏幕尺寸(假设显示器之间当前没有虚拟间隙):
$ xrandr | grep Screen Screen 0: minimum 320 x 200, current
2048 x 1280
, maximum 32767 x 32767
- 将所需的间隙大小(以像素为单位)添加到宽度(之后显示的第一个值
current
- 在我的例子中为 2048)。我选择了 136 像素的间隙,因此新的屏幕宽度为 2184。 - 设置新的屏幕尺寸:
xrandr --fb 2184x1280
- 找出右侧显示器的显示名称:
$ xrandr | grep ^[^\(]*right
HDMI3
connected 1024x1280+
1024
+0 right (normal left inverted right x axis y axis) 376mm x 301mm
- 实际上将右侧显示器进一步向右移动以形成间隙。将间隙大小添加到上述命令显示的第三个数字(以粗体突出显示)。在我的示例中,这是 1024+136=1160:
xrandr --output HDMI3 --pos 1160x0
现在,让 Compiz 将整个区域作为一个屏幕来处理
- 启动 CompizConfig 设置管理器(可使用 来安装
sudo apt-get install compizconfig-settings-manager
) - 转到“常规选项”插件(例如在搜索框中键入此内容)
- 选择“显示设置”选项卡
- 取消选中“检测输出”
- 如果这还没有解决问题,请右键单击“输出”下列出的每一行,选择“编辑”并删除其内容。
当最大化窗口时,它现在将拉伸两个显示器。全屏也会拉伸两台显示器。
显然,这并不理想,因为大多数时候希望最大化的窗口填满单个显示器。这意味着,必须根据当前所需的行为来选中和取消选中“检测输出”Compiz 选项。
给非英语语言环境用户的注意事项:如果您因不知道其名称是如何翻译而找不到 CompizConfig 插件和设置,请像这样启动 CompizConfig:
LANG=C ccsm