如何防止 Xorg 使用我的 Linux 笔记本电脑的显示面板?

如何防止 Xorg 使用我的 Linux 笔记本电脑的显示面板?

我有一台笔记本电脑(大约 5 年前运行 Fedora Linux 的 HP compaq nc6400),我大部分时间都将其用作台式机。它在盖子关闭的情况下插入扩展坞,并通过 DVI 电缆连接到大型外部 LCD 显示器。

由于各种原因(登录问候语出现在关闭的显示器上,有限的显卡无法同时对两个显示器进行 3D),我想完全阻止 X 使用笔记本电脑的集成显示面板。当连接到底座并放在我的办公桌上时(我大约 97% 的时间都是这样使用它的),我希望它根本不使用集成的笔记本电脑面板。启动并不是一个特殊的问题,因为默认情况下,所有内容都会在两个显示器之间镜像。另外,我不介意“手动”解决方案,这样当我在远离办公桌的地方使用笔记本电脑时,我就必须在极少数情况下撤消设置。

登录后,我可以配置 Gnome,使其仅使用外部显示器,并将笔记本电脑面板标记为“关闭”,但这对 X 的初始自动配置状态和登录前的欢迎显示没有影响。令人惊讶的是,笔记本电脑似乎没有盖子传感器,因此打开或关闭盖子似乎不会触发任何事件。我可以xrandr -display :0 --output LVDS1 --off --output DVI1 --auto在登录之前在单独的 VC 上使用,但这仍然是在 X 启动并发现并决定使用两个显示器之后。

我尝试通过创建一个/etc/X11/xorg.conf.d/01-turn-off-laptop-display.conf包含以下内容的文件来配置 Xorg:

Section "Monitor"
    Identifier  "laptop panel"
    Option  "Monitor-LVDS1" "laptop panel"
    Option  "Enable" "no"
EndSection
Section "Monitor"
    Identifier  "big display"
    Option  "Monitor-DVI1" "big display"
EndSection

Section "Screen"
    Identifier  "main"
    Device  "Default"
    Monitor "big display"
EndSection

然而这并没有产生有用的效果。显卡为Intel 945GM:

[dan@khorium ~]$ sudo lspci -v -s 0:2
00:02.0 VGA compatible controller: Intel Corporation Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller (rev 03) (prog-if 00 [VGA controller])
    Subsystem: Hewlett-Packard Company Device 30ad
    Flags: bus master, fast devsel, latency 0, IRQ 16
    Memory at f4600000 (32-bit, non-prefetchable) [size=512K]
    I/O ports at 4000 [size=8]
    Memory at e0000000 (32-bit, prefetchable) [size=256M]
    Memory at f4680000 (32-bit, non-prefetchable) [size=256K]
    Expansion ROM at <unassigned> [disabled]
    Capabilities: [90] MSI: Enable- Count=1/1 Maskable- 64bit-
    Capabilities: [d0] Power Management version 2
    Kernel driver in use: i915
    Kernel modules: i915

00:02.1 Display controller: Intel Corporation Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller (rev 03)
    Subsystem: Hewlett-Packard Company Device 30ad
    Flags: bus master, fast devsel, latency 0
    Memory at f4700000 (32-bit, non-prefetchable) [size=512K]
    Capabilities: [d0] Power Management version 2

该机器自版本 10/11 起一直运行各种版本的 Fedora Linux (x86_64)。我目前正在尝试 Fedora 15 beta(包括 Gnome 3),但这个问题在之前的操作系统版本中已经存在。

答案1

我能够通过以下 xorg.conf 实现预期目标:

Section "Monitor"
        Identifier      "laptop panel"
        Option  "ignore"        "true"
EndSection
Section "Monitor"
        Identifier      "big display"
EndSection    
Section "Device"
        Identifier      "onboard"
        Option  "Monitor-LVDS1" "laptop panel"
        Option  "Monitor-DVI1" "big display"
EndSection

关键因素是Option "Ignore" "true".我也许可以进一步简化它,但它有效。我还不知道当/如果我在远离外部显示器的地方使用笔记本电脑时会发生什么,可能 X 会因错误而退出 - 这不是一个完美的解决方案,但在这种情况下我可以将配置移开。

答案2

我建议采用一种稍微不同的方法,对于您想将笔记本电脑用作笔记本电脑的罕见情况来说,这种方法可能会更灵活。

根据您的显示管理器(可能是 GDM、KDM 或 LightDM),您可以在显示管理器启动时运行脚本。您根本不需要修改 xorg.conf 文件。脚本的位置如下(1):

  • KDM:/etc/kde/kdm/Xsetup(位于底部)
  • SDDM:/etc/X11/xdm/Xsetup(位于底部)
  • XDM:/etc/X11/xdm/Xsetup(位于底部)
  • GDM:/etc/gdm/Init/Default - 将脚本代码放置在“/sbin/initctl”行的正上方。 (1)
  • LightDM:/etc/lightdm/lightdm.conf - “display-setup-script=”指向您想要的脚本位置。确保脚本的第一行是#!/bin/sh并且它是可执行的。

脚本可以是这样的。您需要将监视器名称替换为适合您的计算机的名称。我尝试根据上面的 xorg.conf 进行猜测。

/usr/bin/xrandr --current | grep "DVI1 connected "
if [ $? -eq 0 ]; then
  echo "DVI found"
  sleep 1s 
  /usr/bin/xrandr --output LVDS1 --off
  /usr/bin/xrandr --output DVI1 --auto --primary
fi

这将测试您的 DVI 显示器是否已连接,以及是否启用它而不是内置显示器。我有一个更复杂的版本,可以让我的笔记本电脑底座很好地工作,但仍然可以在其他地方使用。这对我来说更复杂,因为我在工作中使用 5 个屏幕。

(1) 一些文件位置信息http://forum.xfce.org/viewtopic.php?pid=25026#p25026

答案3

上一篇文章的 xorg.conf 的稍微修改版本

Section "Monitor"
   Identifier "hdmi out"
   Option "ignore" "true"
EndSection

Section "Monitor"
   Identifier "big display"
EndSection

Section "Device"
   Identifier "onboard"
   Option "Monitor-LVDS1" "hdmi out"
   Option "Monitor-VGA1" "big display"
EndSection

似乎适用于 intel NM10 芯片。盒子有 VGA 接口用于“大显示器”

答案4

如果您使用Option "ignore" "true"in那么您将根本/etc/X11/xorg.conf无法使用该输出(或取决于工具)。xrandr使用此配置,我刚刚禁用了 HDMI 输出:

Section "Monitor"
        Identifier "My-DVI-D"
        Option "Primary" "true"
        Option "PreferredMode" "1920x1080x60.0"
EndSection

Section "Monitor"
        Identifier "My-HDMI"
        Option "Enable" "false"
        Option "RightOf" "My-DVI-D"
EndSection

Section "Device"
        Identifier "onboard"
        Option "Monitor-HDMI1" "My-DVI-D"
        Option "Monitor-HDMI2" "My-HDMI"
EndSection

请注意,每条配置行都是启用 DVI-D(全分辨率)和禁用 HDMI 所必需的。

要找到您的输出,请运行xrandr -qOption "Monitor-...相应地进行调整。相关的联机帮助页部分是:

   Option "Enable" "bool"
          This optional entry specifies whether the monitor should be turned on at  startup.   By  default,  the  server  will
          attempt to enable all connected monitors.  (RandR 1.2-supporting drivers only)
...
   Option "PreferredMode" "name"
          This optional entry specifies a mode to be marked as the preferred initial mode of the monitor.  (RandR 1.2-support‐
          ing drivers only)
...
   Option "Primary" "bool"
          This optional entry specifies that the monitor should be treated as the primary monitor. (RandR 1.2-supporting driv‐
          ers only)
...
   With RandR 1.2-enabled drivers, monitor sections may be tied to specific outputs of the video card.  Using the name of  the
   output  defined by the video driver plus the identifier of a monitor section, one associates a monitor section with an out‐
   put by adding an option to the Device section in the following format:

   Option "Monitor-outputname" "monitorsection"

   (for example, Option "Monitor-VGA" "VGA monitor" for a VGA output)

相关内容