如何将两台显示器的底部边缘与 xrandr 对齐?

ely*_*aie 31 linux xrandr

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

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

我像这样设置我的显示器:

xrandr --output LVDS1 --auto --output HDMI1 --auto --right-of LVDS1
Run Code Online (Sandbox Code Playgroud)

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

Bat*_*hyX 50

 xrandr --output LVDS1 --auto --pos 0x312 --output HDMI1 --auto --pos 1366x0
Run Code Online (Sandbox Code Playgroud)

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

你想要这样的配置:

(virtual screen coordinates)
     0       1366                 1366+1920

   0           A-----------------------
               |                      |
               |                      |
               |                      |
  x? B---------|         HDMI         |
     |         |                      |
     |  LVDS   |       1920x1080      |
     |1366x768 |                      |
1080 ----------------------------------
Run Code Online (Sandbox Code Playgroud)

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

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

请注意,它--pos可能会被滥用,例如在两个屏幕之间创建一个洞,或创建重叠。大多数(全部?)WM 将无法处理它。

编辑:哦,你想反过来,解决了这个问题。

  • 在不使用魔法值的情况下,有没有办法在 xrandr 中做到这一点?我想要一个脚本,不管我插入的屏幕分辨率如何。如果不是,我想我可以从 xrandr 的输出中提取值,但这听起来有点乏味...... (2认同)

wal*_*ous 7

除了@BatchyX 的优秀答案之外,另一种选择——而且 IMO 更方便——可以使用ARandR(代表“另一个 XRandR GUI”):

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

您可能需要先安装它,但它在大多数发行版的存储库中可用。这是我在 LXDE 上的查找方式,用于设置通过 VGA 连接的外部显示器(上方)和本机(上网本大小)显示器下方的设置:

ARandR 截图

  • 它的一个好处是它可以使用“xrandr”命令保存脚本,允许您通过简单地启动脚本来快速切换布局(例如关闭/打开一台显示器)。如今,GUI 本身并不是很有用,因为大多数桌面环境在设置中都提供了类似的 GUI。 (2认同)