如何使用 xrandr 对齐两个显示器的底部边缘?

如何使用 xrandr 对齐两个显示器的底部边缘?

我想在笔记本电脑上使用两个输出:

  • LVDS1 – 1366×768
  • HDMI1 – 1920×1080

我像这样设置我的监视器:

xrandr --output LVDS1 --auto --output HDMI1 --auto --right-of LVDS1

这一切都很好,但我的笔记本电脑比外接显示器低得多,而且由于屏幕的顶部边缘是对齐的,因此从一个屏幕跳转到另一个屏幕相当不直观。有没有办法可以对齐底部边缘?我以为我可以使用标志--pos来做到这一点,但我试过了,没有看到任何区别(也许我不知道如何正确使用它)。

答案1

 xrandr --output LVDS1 --auto --pos 0x312 --output HDMI1 --auto --pos 1366x0

基本上,--pos 指定屏幕左上角在虚拟屏幕空间中的位置。虚拟屏幕是横跨整个物理屏幕的屏幕。这是指定屏幕位置的一种非常通用的方法。

您需要此配置:

(virtual screen coordinates)
     0       1366                 1366+1920
   
   0           A-----------------------
               |                      |
               |                      |
               |                      |
  x? B---------|         HDMI         |
     |         |                      |
     |  LVDS   |       1920x1080      |
     |1366x768 |                      |
1080 ----------------------------------

并且您需要在选项中使用 A 和 B 的坐标--posx很容易解决,因为 1080 - 768 = 312,所以 A 位于 (1366,0) 而 B 位于 (0,312)。

因此,适当的 --pos 选项适用--pos 1366x0于 HDMI 和--pos 0x312LVDS。您不必(再)指定虚拟屏幕尺寸,它会自动调整大小。

请注意,这--pos可能会被滥用,例如在两个屏幕之间产生空洞,或造成重叠。大多数(所有?)WM 都无法处理这种情况。

编辑:哦,你想要反过来,修复了这个问题。

答案2

除了@BatchyX 的出色回答,另一种更方便的方法是使用安得拉邦(代表“另一个 XRandR GUI”):

ARandR 旨在为 XRandR 提供一个简单的可视化前端。相对显示器位置以图形方式显示,并可通过拖放方式进行更改。

您可能需要先安装它,但它在大多数发行版的存储库中可用。这是我在 LXDE 上看到的样子,上面有一个通过 VGA 连接的外接显示器,下面有一个本机(上网本大小)显示器:

ARandR 截图

答案3

如果你正在寻找基于拖放式 GUI 的解决方案,我可以推荐安得拉邦

它允许您设置最重要的 XRandR 设置,例如屏幕位置和分辨率,然后可以以使用xrandr相应参数调用的 shell 脚本的形式保存这些设置。

答案4

有人管理了...希望这有帮助吗?

双屏底部边缘对齐

底部边缘对齐的双屏设置

为了其他正在与屏幕作斗争的人,我有一个可以做到这一点的脚本(但非常非常慢)

安装脚本

xrandr --output VGA1  --auto
xrandr --output LVDS1 --auto
xrandr --output VGA1  --rotate left
eval "`monconf`"

monoconf 脚本

#!/usr/bin/env python
import subprocess
output = >subprocess.check_output(["/home/tag/.bin/mon.ls"])
output = [ item.split() for item in >output.split("\n") ]

mons = {}

for mon in output:
   if len(mon) > 0:
       if mon[1] == "connected":
           res=mon[2]
           res=res.split("x")
           for item in res[1].split("+"):
               res.append(item)
           res.pop(1)
           mons[mon[0]] = res

BOTTOM_LEFT = "LVDS1"
TOP_RIGHT="VGA1"

LEFT_WIDTH  = mons[BOTTOM_LEFT][0]
LEFT_HEIGHT = mons[BOTTOM_LEFT][1]

RIGHT_WIDTH  = mons[TOP_RIGHT][0]
RIGHT_HEIGHT = mons[TOP_RIGHT][1]

print "xrandr --output %s --pos 0x%s" % (
   BOTTOM_LEFT,
   (int(RIGHT_HEIGHT) - int(LEFT_HEIGHT)))
print "xrandr --output %s --pos %sx0" % (
   TOP_RIGHT,
   int(LEFT_WIDTH)
)

和 mon.ls 命令

xrandr -q | grep "^[^\ ].*" | grep -v Screen

所有这些都非常黑客化,但它确实有效

相关内容