使用 Optimus 在 Linux 中扩展桌面

使用 Optimus 在 Linux 中扩展桌面

我遇到的问题是扩展我的桌面,它还会将 1 个显示器平移到所有屏幕的整个视口。

这就是我要处理的事情:

戴尔 XPS L702X

sudo lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
01:00.0 VGA compatible controller: NVIDIA Corporation GF106M [GeForce GT 550M] (rev a1)

这不是我第一次在 Linux 中遇到 Optimus 问题(远非如此),但最近我买了另一个屏幕,我想将其扩展到那个屏幕。之前我通过 mDP 将我的内部显示器扩展到辅助显示器,效果很好。

设置:

左侧显示器连接到由英特尔卡控制的 mDP 端口。右侧显示器连接到由 nVidia 卡控制的 HDMI 端口。

我有一个来自 arch wiki 的默认 xorg.conf(唯一适合我的设置):

Section "Module"
    Load "modesetting"
EndSection

Section "Device"
    Identifier "nvidia"
    Driver "nvidia"
    BusID "PCI:1:0:0"
    Option "AllowEmptyInitialConfiguration"
EndSection

我目前已经364.19-2安装了 nvidia 驱动程序。

xrandr 输出(去除了过多的分辨率输出)

Screen 0: minimum 8 x 8, current 3840 x 1080, maximum 16384 x 16384
HDMI-0 connected 1920x1080+1920+0 (normal left inverted right x axis y axis) 598mm x 336mm panning 3840x1080+0+0
   1920x1080     60.00*+  59.94    50.00    60.00    50.04  
LVDS-1 connected (normal left inverted right x axis y axis)
   1920x1080     60.01 +  40.01  
VGA-1 disconnected (normal left inverted right x axis y axis)
HDMI-1 connected primary 1920x1080+1920+0 (normal left inverted right x axis y axis) 598mm x 336mm
   1920x1080     60.00*+  50.00    59.94  
DP-1 disconnected (normal left inverted right x axis y axis)
  1920x1080 (0x2b8) 148.500MHz +HSync +VSync
        h: width  1920 start 2008 end 2052 total 2200 skew    0 clock  67.50KHz
        v: height 1080 start 1084 end 1089 total 1125           clock  60.00Hz
  1920x1080 (0x2ba) 148.500MHz +HSync +VSync
        h: width  1920 start 2448 end 2492 total 2640 skew    0 clock  56.25KHz
        v: height 1080 start 1084 end 1089 total 1125           clock  50.00Hz

问题

如果在 KDE 控制面板中我在左侧有监视器 mDP 而在右侧有监视器 HDMI,它似乎可以工作,但是我的鼠标卡在屏幕的右侧,我无法将其移动到左侧屏幕。

如果在 KDE 控制面板中,我的显示器 mDP 在右侧,HDMI 在左侧,我可以将鼠标移到右侧,但显示器 HDMI 会水平滚动到 mDP 输出,因此我有一个克隆的输出。如果我用鼠标向左移动,桌面的左侧会向后滚动。我相信 xrandr 的输出解释了这种行为,但这发生在连接到 HDMI 而不是 mDP 的右侧显示器上。

答案1

经过努力解决这个问题后,我终于解决了这个问题。

发生这种情况的原因是英特尔卡充当 nVidia 卡的接收器提供商,这意味着所有屏幕都在那里捕获并再次发送回来。这导致 xrandr 的行为与它的行为相同,因为它无法在 1080p 屏幕上渲染 5760x1080。

因此,欺骗系统而不是修复它对我来说解决了这个问题。我使用这个脚本做到了这一点,但我不能承担这个想法的功劳。

xrandr --output HDMI-1 --mode 1920x1080 --pos 0x0 --panning 5760x1080+0+0/0x0+0+0/0/0/-3840/0
xrandr --output HDMI-0 --mode 1920x1080 --pos 1920x0 --panning 5760x1080+0+0/0x0+0+0/-1920/0/-1920/0
xrandr --output LVDS-1 --mode 1920x1080 --pos 3840x0 --panning 5760x1080+0+0/0x0+0+0/-3840/0/0/0

来源

我修改了这些值以适应我的显示器连接和分辨率。我接下来要做的是制作一个在系统启动时运行的 bash 文件,该文件确定我连接的显示器并从那里手动执行 xrandr 命令。如果我带着笔记本电脑断开其他显示器的连接,这很有用。

相关内容