¿Cómo evito que Xorg use el panel de visualización de mi laptop Linux?

12

Tengo una computadora portátil (~ 5 años HP compaq nc6400 con Fedora Linux) que uso la mayor parte del tiempo como máquina de escritorio. Está enchufado a una estación de acoplamiento con la tapa cerrada y conectada mediante un cable DVI a una gran pantalla LCD externa.

Por varias razones (la pantalla de inicio de sesión aparece en la pantalla cerrada, la tarjeta gráfica limitada no puede hacer 3D en ambas pantallas a la vez) Me gustaría evitar que X use el panel de pantalla integrado de la computadora portátil. Mientras estoy acoplado y en mi escritorio (que es como lo uso aproximadamente el 97% del tiempo), me gustaría que simplemente no use el panel de computadora portátil integrado. El arranque no es un problema particular, ya que por defecto todo se refleja entre las dos pantallas. Además, no me importa una solución 'manual', de modo que tenga que deshacer la configuración en esas raras ocasiones cuando estoy usando la computadora portátil lejos de mi escritorio.

Una vez que inicie sesión, puedo configurar Gnome para que solo use el monitor externo y el panel de la computadora portátil esté marcado como "apagado", sin embargo, esto no tiene ningún efecto en el estado inicial autoconfigurado de X y la pantalla de bienvenida previa al inicio de sesión. Sorprendentemente, la computadora portátil no parece tener un sensor de tapa, por lo que abrir o cerrar la tapa no parece desencadenar ningún evento. Puedo usarlo xrandr -display :0 --output LVDS1 --off --output DVI1 --autoen un VC separado antes de iniciar sesión, pero esto aún después de que X haya comenzado y descubierto y haya decidido usar ambas pantallas.

Intenté configurar Xorg creando un archivo /etc/X11/xorg.conf.d/01-turn-off-laptop-display.confque contiene:

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

Sin embargo, eso no tuvo un efecto útil. La tarjeta de video es 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

La máquina ha estado ejecutando varias versiones de Fedora Linux (x86_64) desde aproximadamente la versión 10/11). Actualmente estoy probando Fedora 15 beta (que incluye Gnome 3), pero el problema ha existido en versiones anteriores del sistema operativo.

Norky
fuente
ahh, está bien, no estaba seguro de cuál era el mejor lugar para preguntar. Presumo con un representante. de 1 No puedo mover mi pregunta entre sitios de SE, ¿así que solo debo dejar que alguien más lo haga?
Norky
@Norky He marcado la pregunta para los moderadores.
Let_Me_Be
@Let_Me_Be y @Norky: esta pregunta también se trata aquí. Pero, @Norky, si personalmente prefieres plantear la pregunta en Unix.SE, por favor, siéntete libre (y @ comenta que vuelvo para que pueda eliminar este), pero de lo contrario no hay nada de malo aquí.
@ DMA57361 - No tengo ninguna preferencia particular, lo que creas que es mejor :)
Norky
Ah, @Norky, el punto es que puedes usar lo que creas que es mejor: es tu pregunta y es perfectamente válida en ambos sitios, solo obtendrás respuestas de una comunidad diferente. Entonces, si estás de acuerdo con esto aquí, lo dejaremos aquí por ahora. Sin embargo, si la publicación no ha recibido una respuesta en el futuro cercano, @ @ volverá y la cambiaré por usted.

Respuestas:

9

Pude lograr el objetivo deseado con el siguiente 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

El elemento crítico es Option "Ignore" "true". Podría simplificar esto aún más, pero funciona. Todavía no sé qué sucederá cuando / si uso la computadora portátil lejos de la pantalla externa, posiblemente X salga con un error, no es una solución perfecta, pero puedo mover la configuración fuera de ese camino.

Norky
fuente
4

Sugeriría un enfoque ligeramente diferente que podría ser más flexible para esas raras ocasiones en que desea usar la computadora portátil como computadora portátil.

Dependiendo de su administrador de pantalla (probablemente GDM, KDM o LightDM) puede ejecutar un script cuando se inicie el administrador de pantalla. No necesitará un archivo xorg.conf modificado en absoluto. La ubicación del script es la siguiente (1):

  • KDM: / etc / kde / kdm / Xsetup (en la parte inferior)
  • SDDM: / etc / X11 / xdm / Xsetup (en la parte inferior)
  • XDM: / etc / X11 / xdm / Xsetup (en la parte inferior)
  • GDM: / etc / gdm / Init / Default: coloque el código del script justo encima de la línea "/ sbin / initctl". (1)
  • LightDM: /etc/lightdm/lightdm.conf - "display-setup-script =" apunta al script donde quiera que esté. Asegúrese de que la primera línea del script sea #! / Bin / sh y que sea ejecutable.

El guión puede ser algo como esto. Deberá reemplazar los nombres de los monitores por los apropiados para su máquina. He tratado de adivinar en función de su xorg.conf anterior.

/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

Esto probará si su monitor DVI está conectado y si está habilitado en lugar de la pantalla integrada. Tengo una versión mucho más complicada de esto que hace que mi computadora portátil funcione bien, pero aún así está bien para su uso en otros lugares. Para mí es más complicado porque estoy usando 5 pantallas en el trabajo.

(1) alguna información de ubicación de archivo de http://forum.xfce.org/viewtopic.php?pid=25026#p25026

trituradora de piedra
fuente
3

versión ligeramente modificada de la publicación anterior 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

parece funcionar para el chip Intel NM10. La caja tiene vga para la "gran pantalla"

tpost
fuente
1

Si usa Option "ignore" "true"in, /etc/X11/xorg.confentonces no podrá usar esa salida con xrandr(o herramientas dependientes) en absoluto. Usando esta configuración, acabo de deshabilitar mi salida 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

Tenga en cuenta que cada línea de configuración es necesaria para habilitar DVI-D (a resolución completa) y para deshabilitar HDMI.

Para encontrar sus salidas, ejecute xrandr -qy adapte en Option "Monitor-...consecuencia. Las secciones relevantes de la página de manual son:

   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
fuente