Jak mogę uniemożliwić Xorgowi korzystanie z panelu wyświetlacza mojego laptopa z Linuksem?

12

Mam laptopa (około 5-letni HP Compaq nc6400 z Fedorą Linux), którego używam przez większość czasu jako komputer stacjonarny. Jest podłączony do stacji dokującej z zamkniętą pokrywą i przez to podłączony kablem DVI do dużego zewnętrznego wyświetlacza LCD.

Z różnych powodów (na zamkniętym ekranie pojawia się komunikat logowania, ograniczona karta graficzna nie może wykonywać 3D na obu monitorach jednocześnie) Chciałbym w ogóle nie używać zintegrowanego panelu wyświetlacza laptopa. Podczas zadokowania i na biurku (w ten sposób używam go w około 97% przypadków) chciałbym, aby po prostu nie korzystał ze zintegrowanego panelu laptopa. Ładowanie systemu nie jest szczególnym problemem, ponieważ domyślnie wszystko jest dublowane między dwoma wyświetlaczami. Poza tym nie przeszkadza mi „ręczne” rozwiązanie, takie, że muszę cofać ustawienia w tych rzadkich przypadkach, gdy używam laptopa z dala od biurka.

Po zalogowaniu mogę skonfigurować Gnome, aby korzystał tylko z zewnętrznego monitora, a panel laptopa jest oznaczony jako „wyłączony”, jednak nie ma to wpływu na początkowy automatyczny stan X i wyświetlanie powitania przed zalogowaniem. Zaskakujące wydaje się, że laptop nie ma czujnika pokrywy, więc otwieranie lub zamykanie pokrywy nie wydaje się powodować żadnych zdarzeń. Mogę używać xrandr -display :0 --output LVDS1 --off --output DVI1 --autona osobnym VC przed zalogowaniem, ale nadal dzieje się tak po tym, jak X zaczął i odkrył i zdecydował się na użycie obu wyświetlaczy.

Próbowałem skonfigurować Xorg, tworząc plik /etc/X11/xorg.conf.d/01-turn-off-laptop-display.confzawierający:

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

Nie przyniosło to jednak użytecznego efektu. Karta graficzna to 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

Na maszynie działają różne wersje Fedory Linux (x86_64) od około wersji 10/11). Obecnie próbuję Fedory 15 w wersji beta (która obejmuje Gnome 3), ale problem występował w poprzednich wersjach systemu operacyjnego.

Norky
źródło
aha, okej - nie byłem pewien, które z nich jest najlepszym miejscem do zapytania. Przypuszczam, że z przedstawicielem. z 1 Nie mogę przenieść mojego pytania między witrynami SE, więc muszę po prostu pozwolić komuś innemu to zrobić?
Norky,
@Norky Oznaczono pytanie moderatorom.
Let_Me_Be
@Let_Me_Be i @Norky - to pytanie również dotyczy tematu. Ale, @Norky, jeśli osobiście wolisz zamiast tego postawić pytanie na Unix.SE, nie krępuj się (i @ komentarz wróć, abym mógł go usunąć), ale poza tym nie ma w tym nic złego.
@ DMA57361 - Nie mam szczególnych preferencji, w zależności od tego, co uważasz za najlepsze :)
Norky
Ach, @Norky, chodzi o to, że możesz użyć tego, co uważasz za najlepsze - to twoje pytanie i jest całkowicie poprawne w obu witrynach, po prostu otrzymasz odpowiedzi z innej społeczności. Więc jeśli nie masz nic przeciwko, zostawimy to tutaj. Jeśli jednak post nie otrzyma odpowiedzi w najbliższej przyszłości, @ ja z powrotem, a ja zmienię go dla ciebie.

Odpowiedzi:

9

Udało mi się osiągnąć pożądany cel za pomocą następującego pliku 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

kluczowym elementem jest Option "Ignore" "true". Być może będę mógł to jeszcze uprościć, ale działa. Nie wiem jeszcze, co się stanie, gdy / jeśli użyję laptopa z dala od zewnętrznego wyświetlacza, być może X wyjdzie z błędem - nie jest to idealne rozwiązanie, ale w tym przypadku mogę przenieść konfigurację na bok.

Norky
źródło
4

Proponuję nieco inne podejście, które może być bardziej elastyczne w tych rzadkich przypadkach, gdy chcesz używać laptopa jako laptopa.

W zależności od menedżera wyświetlania (prawdopodobnie GDM, KDM lub LightDM) możesz uruchomić skrypt podczas uruchamiania menedżera wyświetlania. Nie potrzebujesz wcale zmodyfikowanego pliku xorg.conf. lokalizacja skryptu jest następująca (1):

  • KDM: / etc / kde / kdm / Xsetup (na dole)
  • SDDM: / etc / X11 / xdm / Xsetup (na dole)
  • XDM: / etc / X11 / xdm / Xsetup (na dole)
  • GDM: / etc / gdm / Init / Default - umieść kod skryptu tuż nad linią „/ sbin / initctl”. (1)
  • LightDM: /etc/lightdm/lightdm.conf - "display-setup-script =" wskazuje na skrypt, gdziekolwiek chcesz. Upewnij się, że pierwszy wiersz skryptu to #! / Bin / sh i że jest wykonywalny.

Skrypt może być mniej więcej taki. Musisz zastąpić nazwy monitorów nazwami odpowiednimi dla twojego komputera. Próbowałem zgadywać na podstawie powyższego pliku 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

To sprawdzi, czy monitor DVI jest podłączony i czy jest włączony zamiast wbudowanego wyświetlacza. Mam o wiele bardziej skomplikowaną wersję tego, która sprawia, że ​​mój laptop dobrze zadokuje się w pracy, ale nadal jest w porządku do użycia w innym miejscu. Jest to dla mnie bardziej skomplikowane, ponieważ używam 5 ekranów w pracy.

(1) niektóre informacje o lokalizacji pliku z http://forum.xfce.org/viewtopic.php?pid=25026#p25026

rozchodnik
źródło
3

nieznacznie zmodyfikowana wersja xorg.conf poprzedniego postu

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

wydaje się działać na chipie Intel NM10. Pudełko ma vga na „duży wyświetlacz”

tpost
źródło
1

Jeśli korzystasz Option "ignore" "true"z /etc/X11/xorg.confczym nie będzie mógł korzystać z tego wyjścia xrandr(lub narzędzia zależności) w ogóle. Korzystając z tej konfiguracji właśnie wyłączyłem wyjście 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

Należy pamiętać, że każda linia konfiguracji jest niezbędna do włączenia DVI-D (przy pełnej rozdzielczości) i do wyłączenia HDMI.

Aby znaleźć wyniki, uruchom je xrandr -qi dostosuj Option "Monitor-...odpowiednio. Odpowiednie sekcje strony man to:

   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
źródło