Estou tentando executar um script localizado usr/local/bin/
quando conecto um monitor externo ao meu laptop. Eu tentei adicionar uma nova udev
regra, mas isso não funcionou. Eu criei um novo arquivo no /etc/udev/rules.d
chamado vga-monitor-connect.rules
. O conteúdo do arquivo foi
SUBSYSTEM=="drm", ACTION=="change", RUN+="/usr/local/bin/panel-fix"
Eu peguei a linha desta resposta
Depois de pesquisar online, também tentei a seguinte regra
KERNEL=="card0", SUBSYSTEM=="drm", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/rumesh/.Xauthority", RUN+="/usr/local/bin/panel-fix"
No entanto, isso também não funcionou.
Executei o script manualmente e posso confirmar que funciona, para que não haja problemas com o meu script.
Também quero deixar claro que não sei muito sobre udev
a regra que usei pode estar errada. Se alguém souber a regra adequada para o meu problema, deixe uma resposta.
Minha placa de vídeo é um chipset Intel GM965 integrado
Respostas:
Uma maneira alternativa de executar um comando se uma tela estiver conectada ou desconectada
Uma solução alternativa seria executar um pequeno script em segundo plano. Executando o script abaixo em segundo plano, não pude medir nenhum aumento na carga do processador.
É uma maneira fácil e conveniente de executar um script ou qualquer outro comando sempre que uma segunda tela for conectada ou desconectada.
O script de exemplo
xrandr
(lembre-se do espaço após "conectado" para evitar correspondências falsas com "desconectado"). Cada ocorrência representa uma tela conectada.O script
Como usar
connect_screen.py
Na seção principal, defina o comando para executar no connect (defino "gedit" como exemplo, lembre-se das aspas). Também é possível definir um comando para desconectar, da mesma forma. Caso
disconnect_command = ""
contrário, deixe como está.Se você usar um comando de desconexão, descomente também a linha:
e comente a linha:
Conforme indicado no script
Se tudo funcionar bem, adicione-o aos aplicativos de inicialização: Dash> Startup Applications> Add the command:
O
sleep 15
objetivo é fazer a área de trabalho inicializar completamente antes que o script comece a ser executado. Apenas para ter certeza.EDITAR
Como executar o script na inicialização de uma maneira "inteligente".
A interrupção de
sleep 15
deve funcionar em geral, mas como o tempo de inicialização varia de acordo com o sistema, pode levar algumas experiências para encontrar a hora certa. Com uma pequena adição, o script se torna "inteligente" e aguarda oxrandr
êxito do comando antes de iniciar o script real. Se você usa a versão abaixo, você só precisa adicionar o comando:aos aplicativos de inicialização. O uso adicional é exatamente o mesmo da versão acima.
O script
fonte
$PATH
com extensão de arquivo e com o idioma anterior é uma solução não tão elegante. A questão é se você deseja executá-lo para um usuário ou para todos os usuários. No último caso, é necessária outra configuração além da sugerida, mas de preferência não a que você está sugerindo :). Issosleep 15
pode não ser suficiente, mas uma solução mais elegante pode ser tornar a quebra "inteligente", deixe o script tentar / exceto iniciar até que o procedimento de inicialização esteja "pronto" para a execução do script. Seria uma adição menor. Avise-se me.$PATH
não deveriam ter extensão da linguagem e ser executável, então corra sempython3
ver lintian.debian.org/tags/script-with-language-extension.htmlconnect_screen
Isso pode ser alcançado seguindo o script bash também.
fonte