XRandR/X11:不要将两台显示器合并为一个屏幕

XRandR/X11:不要将两台显示器合并为一个屏幕

我最近从 Gentoo 切换到 Void Linux,并将其安装在只有一台显示器的系统上。

但现在我换了位置并使用两个显示器系统。在我的 Gentoo 安装中,一切正常,X11 认识到两个屏幕不应该合并在一起,而应该是不同的屏幕。

这是 XRandR 的输出:

Screen 0: minimum 320 x 200, current 3840 x 1080, maximum 16384 x 16384
DisplayPort-0 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 527mm x 296mm
   1920x1080     60.00*+  50.00    59.94
   1600x1200     60.00
   1680x1050     60.00
   1600x900      60.00
   1280x1024     75.02    60.02
   1440x900      60.00
   1280x800      60.00
   1152x864      75.00
   1280x720      60.00    50.00    59.94
   1024x768      75.03    60.00
   800x600       75.00    60.32
   720x576       50.00
   720x480       60.00    59.94
   640x480       75.00    60.00    59.94
   720x400       70.08
HDMI-A-0 connected 1920x1080+1920+0 (normal left inverted right x axis y axis) 698mm x 393mm
   1920x1080     60.00*+ 239.96   144.00   120.00   119.88   119.98    50.00    59.94
   1680x1050     60.00
   1280x1024     75.02    60.02
   1440x900      60.00
   1280x800      60.00
   1280x720      60.00    50.00    59.94
   1024x768     119.99    75.03    70.07    60.00
   832x624       74.55
   800x600      119.97    72.19    75.00    60.32    56.25
   720x576       50.00
   720x480       60.00    59.94
   640x480       75.00    72.81    66.67    60.00    59.94
   720x400       70.08
DVI-D-0 disconnected (normal left inverted right x axis y axis)
DP2 disconnected (normal left inverted right x axis y axis)
HDMI2 disconnected (normal left inverted right x axis y axis)
HDMI3 disconnected (normal left inverted right x axis y axis)
VIRTUAL1 disconnected (normal left inverted right x axis y axis)

至少在我看来,问题在于它扩展了 HDMI-A-0 (1920x1080+1920+0)。如果我使用 ghc 获取 X11 向应用程序提供的所有屏幕,这种担心就会得到证实。

命令的输出

ghc -e "Graphics.X11.openDisplay [] >>= Graphics.X11.Xinerama.getScreenInfo"

如下:

[Rectangle {rect_x = 0, rect_y = 0, rect_width = 3840, rect_height = 1080}]

只是澄清一下,我想要的是 X11 提供两个屏幕(每个 1920x1080)而不是一个长屏幕(3840x1080)

我尝试在网上寻找答案,包括以下命令。他们都没有工作

xrandr --output HDMI-A-0 --primary --mode 1920x1080 --pos 0x0 --rotate normal --scale 1x1 --size 1920x1080+0+0 \
      --output DisplayPort-0 --mode 1920x1080 --left-of HDMI-A-0 --rotate normal --scale 1x1 --size 1920x1080+0+0 ;
xrandr --output DisplayPort-0 --auto --mode 1920x1080 --left-of HDMI-A-0 --pos 1920x0
xrandr --output DisplayPort-0 --auto --mode 1920x1080 --left-of HDMI-A-0 --pos 0x0
xrandr --output DisplayPort-0 --auto --mode 1920x1080 --left-of HDMI-A-0

等等..

谢谢你的帮助

答案1

一个原因可能是“你的 HaskellX11库不是针对 Xinerama 构建的”。

应进行以下检查检查openDisplay "" >>= getScreenInfo

ghc -e Graphics.X11.Xinerama.compiledWithXinerama

https://wiki.haskell.org/Xmonad/Frequently_asked_questions#Multi_head_or_xinerama_troubles


我在 NixOS 上使用堆栈使用 Xmonad 时遇到了这个问题,我用这个stack.yaml文件修复了它:

resolver: lts-19.33
packages:
  - .
nix:
  enable: true
  packages:
    - xorg.libX11
    - xorg.libXinerama # <-- important for multi-display support
    - xorg.libXext
    - xorg.libXft
    - xorg.libXrandr
    - xorg.libXScrnSaver
    - pkg-config

请注意,您必须强制重建 X11 库(例如,通过rm -rf ~/.stack,这是一个非常粗糙的方法!)

相关内容