como evito o Xorg usando o painel do meu laptop Linux?

12

Eu tenho um laptop (~ HP compaq nc6400 de 5 anos executando o Fedora Linux) que uso na maioria das vezes como máquina de desktop. Ele está conectado a uma estação de acoplamento com a tampa fechada e conectada através dela por um cabo DVI a um grande display LCD externo.

Por várias razões (o greeter de login aparece no visor fechado, a placa de vídeo limitada não pode executar 3D nos dois monitores de uma só vez) Gostaria de impedir que o painel integrado do laptop seja usado pelo X. Enquanto estiver encaixado e em minha mesa (que é como o uso cerca de 97% das vezes), eu gostaria que ele simplesmente não usasse o painel de laptop integrado. A inicialização não é um problema específico, pois, por padrão, tudo é espelhado entre os dois monitores. Além disso, não me importo com uma solução 'manual', de modo que preciso desfazer as configurações nessas raras ocasiões em que estou usando o laptop longe da minha mesa.

Uma vez logado, posso configurar o Gnome para que ele use apenas o monitor externo e o painel do laptop seja marcado como "desligado"; no entanto, isso não afeta o estado inicial configurado automaticamente do X e a tela de pré-login. Surpreendentemente, o laptop não parece ter um sensor de tampa, portanto, abrir ou fechar a tampa não parece acionar nenhum evento. Posso usar xrandr -display :0 --output LVDS1 --off --output DVI1 --autoum VC separado antes do login, mas isso ocorre depois que o X foi iniciado e descoberto e decidiu usar os dois monitores.

Tentei configurar o Xorg criando um arquivo /etc/X11/xorg.conf.d/01-turn-off-laptop-display.confque contém:

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

No entanto, isso não teve um efeito útil. A placa de vídeo é 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

A máquina está executando várias versões do Fedora Linux (x86_64) desde a versão 10/11. Atualmente, estou tentando o Fedora 15 beta (que inclui o Gnome 3), mas o problema já existia nas versões anteriores do sistema operacional.

Norky
fonte
ahh, ok - eu não tinha certeza de qual era o melhor lugar para perguntar. Presumo com um representante. de 1 Não consigo mover minha pergunta entre os sites do SE, então só preciso permitir que outra pessoa faça isso?
Norky 20/05
@ Norky Eu sinalizei a pergunta para moderadores.
Let_Me_Be
@Let_Me_Be e @Norky - esta questão também está no tópico aqui. Mas, @Norky, se você pessoalmente preferir colocar a questão no Unix.SE, fique à vontade (e @ comente novamente para que eu possa remover esse), mas, caso contrário, não há nada errado com isso aqui.
@ DMA57361 - Não tenho preferência particular, o que você acha que é melhor :)
Norky
Ah, @Norky, o ponto é que você pode usar o que achar melhor - é a sua pergunta e é perfeitamente válida nos dois sites; você receberá respostas de uma comunidade diferente. Então, se você estiver bem com isso aqui, vamos deixar aqui por enquanto. No entanto, se a postagem não receber uma resposta em um futuro próximo, o @ me volta novamente e eu mudarei para você.

Respostas:

9

Consegui alcançar o objetivo desejado com o seguinte 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

o elemento crítico sendo Option "Ignore" "true". Talvez eu possa simplificar ainda mais isso, mas funciona. Ainda não sei o que acontecerá quando / se eu usar o laptop longe da tela externa, possivelmente o X sairá com um erro - não é uma solução perfeita, mas posso mudar a configuração nesse caso.

Norky
fonte
4

Eu sugeriria uma abordagem um pouco diferente que pode ser mais flexível nas raras ocasiões em que você deseja usar o laptop como laptop.

Dependendo do seu gerenciador de exibição (provavelmente GDM, KDM ou LightDM), você pode executar um script enquanto o gerenciador de exibição é iniciado. Você não precisará de um arquivo xorg.conf modificado. a localização do script é a seguinte (1):

  • KDM: / etc / kde / kdm / Xsetup (na parte inferior)
  • SDDM: / etc / X11 / xdm / Xsetup (na parte inferior)
  • XDM: / etc / X11 / xdm / Xsetup (na parte inferior)
  • GDM: / etc / gdm / Init / Default - coloque o código do script logo acima da linha "/ sbin / initctl". (1)
  • LightDM: /etc/lightdm/lightdm.conf - "display-setup-script =" aponta para o script onde quer que ele esteja. Verifique se a primeira linha do script é #! / Bin / sh e é executável.

O script pode ser algo como isto. Você precisará substituir os nomes dos monitores pelos adequados para sua máquina. Eu tentei adivinhar com base no seu xorg.conf acima.

/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

Isso testará se o seu monitor DVI está conectado e se está ativado, em vez do monitor embutido. Eu tenho uma versão muito mais complicada disso, que faz com que meu laptop encaixe bem no trabalho, mas ainda assim seja adequado para uso em outros lugares. É mais complicado para mim porque estou usando 5 telas no trabalho.

(1) algumas informações de localização de arquivos em http://forum.xfce.org/viewtopic.php?pid=25026#p25026

triturador de pedras
fonte
3

versão ligeiramente modificada do xorg.conf do post anterior

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 o chip intel NM10. A caixa tem vga para a "tela grande"

tpost
fonte
1

Se você usar Option "ignore" "true"em /etc/X11/xorg.confseguida, você não será capaz de usar essa saída com xrandr(ou ferramentas, dependendo) em tudo. Usando esta configuração, acabei de desativar minha saída 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

Observe que todas as linhas de configuração são necessárias para ativar o DVI-D (em resolução máxima) e desativar o HDMI.

Para encontrar suas saídas, execute xrandr -qe se adapte de Option "Monitor-...acordo. As seções relevantes da página de manual são:

   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
fonte