我有一台笔记本电脑(大约 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 -q
并Option "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)