12.10 使用 nvidiaXineramaInfoOverride 的量子显示问题

Ava*_*ava 0 nvidia xorg multiple-monitors matrox 12.10

今天更新到 12.10 后,我的 xorg.conf 似乎不受 Quantal 的尊重。不确定这是否是一个“错误”,或者它是否只是由于操作系统的变化而必须进行的调整。

登录时,Ubuntu 现在似乎只能识别一个名为“Matrox”的 3840x1080 屏幕,并且最大化窗口跨越两个屏幕。在 12.04 中,此配置文件成功地允许我覆盖 TripleHead2Go 提供的数据并将窗口最大化到单个监视器。

任何想法或从哪里开始尝试调试?

经过一番搜索,我尝试根据此处的更新进行更改:http : //www.phoronix.com/scan.php?page= news_item&px= MTEyMDk

这是配置文件当前所在的位置:

Section "ServerLayout"
  Identifier     "Layout0"
  Screen      0  "Screen0" 0 0
  InputDevice    "Keyboard0" "CoreKeyboard"
  InputDevice    "Mouse0" "CorePointer"
  Option         "Xinerama" "0"
EndSection

Section "Files"
EndSection

Section "InputDevice"
  Identifier     "Mouse0"
  Driver         "mouse"
  Option         "Protocol" "auto"
  Option         "Device" "/dev/psaux"
  Option         "Emulate3Buttons" "no"
  Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"      
  Identifier     "Keyboard0"
  Driver         "kbd"
EndSection

Section "Monitor"
    # HorizSync source: edid, VertRefresh source: edid
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "Matrox"
    HorizSync       31.5 - 80.0
    VertRefresh     59.9 - 75.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GTX 260M"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "nvidiaXineramaInfo" "true"
    Option         "nvidiaXineramaInfoOrder" "CRT-0"
    #Option         "metamodes" "CRT: nvidia-auto-select +0+0"
    Option         "nvidiaXineramaInfoOverride" "1920x1080 +0+0, 1920x1080 +1920+0"
    Option         "Stereo" "0"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection
Run Code Online (Sandbox Code Playgroud)

小智 5

在最新版本的 NVIDIA Linux 图形驱动程序中——包括 quantal 12.10、304.51 中的 nvidia-current 版本——引入了对 RandR 1.2+ 的支持,改进了显卡和窗口管理器(GNOME、KDE ​​等)之间的集成。 ) 除了nvidia-settings. 但是,TwinViewXineramaInfoOverride xorg.conf配置选项(现在已重命名为nvidiaXineramaInfoOverride)似乎无法正常工作。

要了解 NVIDIA 在此主题上的进展,请参阅:

http://www.nvnews.net/vbulletin/showthread.php?p=2578805
http://www.nvnews.net/vbulletin/showthread.php?t=184814
Run Code Online (Sandbox Code Playgroud)

一个可能的解决方案是使用 Fake Xinerama http://home.kde.org/~seli/fakexinerama/,它已被证明也适用于 Xorg 7.7(Quantal 12.10 上的 Xorg 版本)。要按照链接文档中描述的程序进行操作,您需要:

  • 手术前, sudo apt-get install libxinerama-dev
  • 程序完成后,重新启动系统

您可以将以下内容用于~/.fakexinerama

2
0 0 1920 1080
1920 0 1920 1080
Run Code Online (Sandbox Code Playgroud)

要仅在 Matrox DualHead2Go 存在时启用 fakexinerama,您还可以将此代码添加到 /etc/init/lightdm.conf 之前exec lightdm

if lsusb | grep -q 18ea:0003; then
        echo "Matrox DualHead2Go Detected"
        cp /usr/lib/x86_64-linux-gnu/libXinerama.so.1.0.0-fake /usr/lib/x86_64-linux-gnu/libXinerama.so.1.0.0
else
        echo "Matrox DualHead2Go NOT Detected"
        cp /usr/lib/x86_64-linux-gnu/libXinerama.so.1.0.0-orig /usr/lib/x86_64-linux-gnu/libXinerama.so.1.0.0
fi
Run Code Online (Sandbox Code Playgroud)

使用以下规则使此代码工作:

  • 在任何情况下,使用if not on 64 位/usr/lib/i386-linux-gnu代替/usr/lib/x86_64-linux-gnu
  • 将原件备份/usr/lib/x86_64-linux-gnu/libXinerama.so.1.0.0/usr/lib/x86_64-linux-gnu/libXinerama.so.1.0.0-orig
  • 复制由 fakexinerama 构建产生的修改版本到 /usr/lib/x86_64-linux-gnu/libXinerama.so.1.0.0-fake
  • 18ea:0003如果不同,请替换为您的设备产品 ID(用于lsusb查找正确的值)。

每次需要从 Matrox DualHead2Go 模式切换到原始模式时都重新启动系统。

注意:一旦工作,您应该能够最大化每个屏幕的窗口,但是任何使用 RandR 信息而不是 Xinerama 的操作都不会处理虚假的 Xinerama 信息(例如墙纸、Adobe Flash 全屏 - 包括 YouTube 等) .)