Linux: como executar um script quando um monitor externo está conectado?

10

Como posso detectar quando um monitor externo está conectado no linux?

Preciso executar vários scripts para configurar meu espaço de trabalho.

Existe alguma maneira inteligente de iniciar um script quando o estado do monitor mudou?

Estou usando o driver de vídeo da Nvidia.

Joernsn
fonte
A maneira hackish seria escrever um script que solicite alterações na saída a xrandrcada dois segundos e execute o (s) script (s) se notar uma diferença.
New123456
Idealmente, você pode dizer ao udev para executar um script. Não espero que funcione com drivers da nvidia até que o KMS seja suportado, embora ainda não tenha tentado. stackoverflow.com/questions/5469828/…
Andy

Respostas:

3

Há um conjunto de ferramentas chamadas read-edid que podem analisar dados de identificação de exibição estendidos (EDID). Se o seu monitor externo for realmente detectado por essas ferramentas, você poderá verificar periodicamente a detecção e usar a saída para iniciar scripts etc.

Você não mencionou se precisa fazer isso, independentemente de o X estar em execução.

Rolf
fonte
Certo, eu só preciso de X. Eu tenho algumas outras ferramentas bem que vai detectar os displays (como disper), mas eu estava esperando para evitar ter que escrever um daemon :)
Joernsn
1

Eu estava procurando a mesma resposta: /
Estou usando o disper ( http://willem.engen.nl/projects/disper ) e o gconftool para ativar / desativar meu segundo monitor junto com um segundo painel de gnomo.
disper -l lista todos os monitores conectados, para que você possa pesquisar isso como último recurso.

# only primary display
disper -s
gconftool-2 --type int --set  /apps/panel/toplevels/panel_1/screen -- -1


# dual display (nvidia twinview)
disper -e
gconftool-2 --type int --set  /apps/panel/toplevels/panel_1/screen 0
killall gnome-panel
Vindolin
fonte
0

Dado que, a partir de 270.18, os drivers binários da nVidia ainda não parecem implementar o XRandR moderno, talvez você precise seguir a sugestão do new123456 de pesquisar uma ferramenta como xrandrpara mudanças no tamanho da tela.

No meu sistema, ainda não encontrei uma maneira de fazer a nVidia anunciar adequadamente xrandrque tenho dois monitores de 1280x1024, em vez de um único de 2560x1024 ... o que, como você pode imaginar, torna os jogos em tela cheia centralizados nos dois monitores quando eu proíbo eles alterem a resolução. (Ele destrói meus stickies da área de trabalho)

ssokolow
fonte