使用 xrandr 设置多显示器

Vor*_*Dev 5 xrandr display multiple-monitors

到目前为止,我一直单独使用笔记本电脑屏幕 (3840x2160),现在我正在尝试设置辅助显示器 (1920x1080)。由于我的主显示器的分辨率是辅助显示器的两倍,事实证明,按照我想要的方式配置它非常困难。最初,当我连接第二台显示器时,我的笔记本电脑分辨率降低到 1920x1080,缩放比例达到 100%。这会导致出现问题,原因有两个:

  • 我想保留我的笔记本电脑显示器支持的 3840x2160
  • 我的应用程序缩放设置为 200%,否则,许多应用程序在 4K 显示器上看起来不太好

将显示器设置回 3840x2160 会产生另一个问题:笔记本电脑显示器的尺寸是辅助显示器的两倍,只有当光标移动到屏幕右侧的上半部分时,光标才会从笔记本电脑过渡到外接显示器。光标无法移动到下半部分。

此外,如果我将缩放设置回 200%,则缩放以在 4K 显示器上正常显示的应用程序在 FHD 显示器上看起来很糟糕。

为了解决这个问题,我一直在寻找这个答案:Is it possible to have different DPIconfiguration for两个不同的屏幕? 。按照其说明调整我的显示器,我发现虽然第二个显示器确实按我希望的方式显示,但我无法将光标移出其第一象限。这些是我执行的命令(DP-1是我的外部显示器,也是eDP-1我的笔记本电脑):

xrandr --output DP-1 --scale 2x2 --mode 1920x1080 --fb 7680x2160 --pos 3840x0
xrandr --output eDP-1 --scale 1x1 --pos 0x0
Run Code Online (Sandbox Code Playgroud)

在运行各种其他命令以尝试实现我想要的目标之后,我设法让它工作 - 尽管不是以这样的方式清楚地看到我的哪些步骤完成了工作。我基本上使用我正在测试的各种选项运行 xrandr 直到它起作用。从那时起,我重新启动了系统,并且记录了一组命令,将监视器配置设置为我想要的方式,如下所列(请注意,重新启动后,破折号不再出现在我的输出名称中)。

xrandr --output DP1 --scale 2x2 --mode 1920x1080 --fb 7680x2160 --pos 3840x0
xrandr --output DP1 --panning 3840x2160
xrandr --output DP1 --panning 1920x1080
X Error of failed request:  BadMatch (invalid parameter attributes)
  Major opcode of failed request:  140 (RANDR)
  Minor opcode of failed request:  7 (RRSetScreenSize)
  Serial number of failed request:  40
  Current serial number in output stream:  41
xrandr --output DP1 --scale 1x1
xrandr --output DP1 --scale 2x2
xrandr --output DP1 --scale 2x2 --mode 1920x1080 --fb 7680x2160 --pos 3840x0
xrandr --output DP1 --panning 1920x1080
xrandr --output DP1 --scale 2x2 --mode 1920x1080 --fb 7680x2160 --pos 3840x0
xrandr --output eDP1 --scale 1x1 --pos 0x0
xrandr --output DP1 --pos 3840x0
xrandr --output eDP1 --pos 0x0
Run Code Online (Sandbox Code Playgroud)

为了弄清楚哪些步骤是必要的,哪些步骤不是,我尝试忽略在配置设置时我认为不负责的命令。问题是,弄乱它可能会导致我的显示器进入伪冻结状态,我可以移动鼠标,但其他图形元素都不会移动 - 遇到这种情况时我必须重新启动。

最初,当系统启动时,我的外部显示器的应用程序内容(包括光标)看起来相当放大。我按照列出的顺序运行命令,在倒数第二步中,图形冻结,就像我在上一节中描述的那样 -尽管继续输入最终命令,但这会导致系统恢复正常,并按照我希望的方式进行配置。

请注意,“请求失败的 X 错误”消息似乎并不直接与平移命令相关 - 在我省略此行的一项测试中,该消息出现在取代其位置的行(比例线)上。

对我来说,直接解决问题的最佳方法是什么,而不是运行当前(以某种方式)对我有用的一系列命令?

编辑:这些命令也不是绝对的 - 它们似乎只能保证相对于 xrandr 的默认配置起作用。如果我在运行这些之前弄乱 xrandr,它可能无法工作。

EDIT2:我也看到了这个,这听起来像我所面临的,但它显然是固定的(我正在运行版本1.5)。

B.T*_*ner 3

今天(2019-02-15)发布了新的点18.04,18.04.02。它包括一个新的 Xserver,它解决了鼠标被限制在外部显示器屏幕四分之一的问题。我花了几天时间试图找到解决方法,现在可以按您的预期工作了!:-)

但如果您使用的是 18.04 LTS,您将无法通过更新系统获得修复!您需要安装新的内核和硬件驱动程序,其中还包括新的 xserver sudo apt-get install --install-recommends linux-generic-hwe-18.04 xserver-xorg-hwe-18.04(感谢 omgubuntu.co.uk 指出您不会自动获得更新)。

作为我上面发布的脚本的更新,将外部显示器放在右侧的神奇线条,现在无需鼠标限制即可工作,是: xrandr --output DP-1 --auto --scale 2x2 --pos 3840x0 --fb 6000x3840 --right-of eDP-1 --rotate left --output eDP-1 --auto --scale 1x1 --pos 0x0 --primary

我发现,如果我一直在使用 --panning(根据我的经验,这会取消 2x2 缩放),新的 xrandr 命令不会取消平移:我必须重新启动。