как предотвратить использование Xorg панели дисплея моего ноутбука Linux?

12

У меня есть ноутбук (~ 5 лет HP Compaq nc6400 под управлением Fedora Linux), который я использую большую часть времени в качестве настольного компьютера. Он подключен к док-станции с закрытой крышкой и подключен через нее с помощью кабеля DVI к большому внешнему ЖК-дисплею.

По разным причинам (приветствие при входе в систему появляется на закрытом дисплее, ограниченная видеокарта не может выполнять 3D на обоих дисплеях одновременно) Я бы хотел, чтобы X вообще не использовала встроенную панель дисплея ноутбука. Когда я пристыкован к столу (как я использую его примерно в 97% случаев), я бы хотел, чтобы он просто не использовал встроенную панель ноутбука. Загрузка не является особой проблемой, так как по умолчанию все отражается между двумя дисплеями. Кроме того, я не против «ручного» решения, так что мне приходится отменять настройки в тех редких случаях, когда я использую ноутбук вдали от своего стола.

После входа в систему я могу настроить Gnome таким образом, чтобы он использовал только внешний монитор, а панель ноутбука помечена как «выключенная», однако это не влияет на исходное автоматически настроенное состояние X и отображение приветствия перед входом в систему. Удивительно, но ноутбук не имеет датчика крышки, поэтому открытие или закрытие крышки не вызывает каких-либо событий. Я могу использовать xrandr -display :0 --output LVDS1 --off --output DVI1 --autoотдельный VC до входа в систему, но это все еще после того, как X запустил и обнаружил и решил использовать оба дисплея.

Я попытался настроить Xorg, создав файл, /etc/X11/xorg.conf.d/01-turn-off-laptop-display.confкоторый содержит:

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

На этой машине использовались различные версии Fedora Linux (x86_64) начиная с версии 10/11). В настоящее время я пробую Fedora 15 beta (которая включает в себя Gnome 3), но проблема существовала в предыдущих выпусках ОС.

Norky
источник
ааа, ладно - я не был уверен, какое место лучше спросить. Я полагаю, с повторением. из 1 Я не могу переместить свой вопрос между сайтами SE, поэтому мне просто нужно позволить кому-то другому сделать это?
Норки
@Norky Я пометил вопрос для модераторов.
Let_Me_Be
@Let_Me_Be и @Norky - этот вопрос также относится к теме. Но, @Norky, если вы лично предпочли бы поставить вопрос вместо Unix.SE, тогда, пожалуйста, не стесняйтесь (и @ comment вернется, чтобы я мог удалить этот), но в противном случае здесь нет ничего плохого.
@ DMA57361 - У меня нет особых предпочтений, в зависимости от того, что вы считаете лучшим :)
Norky
Ах, @Norky, дело в том , вы можете использовать в зависимости от того вы думаете , лучше всего - это ваш вопрос , и это отлично действует на обоих сайтах, вы просто получите ответы от другого сообщества. Так что, если вам здесь хорошо, мы оставим это здесь пока. Однако, если сообщение не получит ответа в ближайшем будущем, @ me снова вернусь, и я переверну его для вас.

Ответы:

9

Я смог достичь желаемой цели с помощью следующего 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 выйдет с ошибкой - не идеальное решение, но я могу переместить конфигурацию в этом случае.

Norky
источник
4

Я бы предложил немного другой подход, который может быть более гибким для тех редких случаев, когда вы хотите использовать ноутбук в качестве ноутбука.

В зависимости от вашего диспетчера отображения (возможно, 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

stonecrusher
источник
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 для «большой дисплей»

tpost
источник
1

Если вы используете Option "ignore" "true"в /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)
Jakob
источник