我最近从 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
,这是一个非常粗糙的方法!)