12.10 使用 nvidiaXineramaInfoOverride 的量子显示问题

12.10 使用 nvidiaXineramaInfoOverride 的量子显示问题

今天更新到 12.10 后,Quantal 似乎不支持我的 xorg.conf。不确定这是“错误”还是由于操作系统的变化而必须进行的调整。

登录时,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

答案1

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

要跟踪 NVIDIA 在此主题上的进展,请参阅:

http://www.nvnews.net/vbulletin/showthread.php?p=2578805
http://www.nvnews.net/vbulletin/showthread.php?t=184814

一个可能的解决方案是使用假 Xineramahttp://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

为了仅在 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

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

  • 无论如何,/usr/lib/i386-linux-gnu如果/usr/lib/x86_64-linux-gnu不是 64 位,请使用
  • 将原件备份/usr/lib/x86_64-linux-gnu/libXinerama.so.1.0.0/usr/lib/x86_64-linux-gnu/libXinerama.so.1.0.0-orig
  • 将 fakexinerama build 修改后的版本复制到/usr/lib/x86_64-linux-gnu/libXinerama.so.1.0.0-fake
  • 18ea:0003如果不同,请用您的设备产品 ID替换(用于lsusb查找正确的值)。

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

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

答案2

好的,部分修复:

  1. 如果您还没有安装 compizconfig-settings-manager 包,请安装它。
  2. 运行它并转到常规选项>显示设置
  3. 根据需要添加输出(在我的情况下,有两个 DVI 连接,分别为 1920x1080+0+0 和 1920x1080+1920+0)
  4. 取消选中输出列表上方的“检测输出”选项

警告:

  • 这不会解决面板跨越多个桌面的问题,只能解决最大化窗口跨越两个屏幕的问题

我已经完全忘记了 compizconfig 有这个功能。

关于使用此功能分割每个输出的面板,有任何输入吗?

相关内容