xrandr
é executado, mas falha. Você deveria ler suas mensagens de erro, elas diriam o que está errado. Você poderia colocar toda a saída do seu script no arquivo de log, adicionando essa linha logo após a linha #!
:
exec >/home/hoppe/udev.out 2>&1
Você verá que a mensagem é:
Can't open display
Como qualquer outro programa X, xrandr
fala com o servidor X indicado pela variável de ambiente DISPLAY
. Você precisa dizer para qual monitor falar. A qualquer momento, você pode ter vários servidores X em execução, alguns falando com hardware, alguns exibindo remotamente (por exemplo, VNC ), alguns não tendo qualquer exibição visível (por exemplo, xvfb ), etc. Encontrar quais displays X estão conectados a uma peça específica de hardware não é fácil, mas na prática, apenas assuma que :0
está conectado ao hardware e todos os outros não estão. Então coloque isso no seu script:
export DISPLAY=:0
Depois de ter resolvido o problema de DISPLAY
, você precisará autorizar esse script a acessar sua exibição. Isso não é automático, mesmo que o script esteja sendo executado como root, porque o X é transparente para a rede: a raiz local só deve ter permissão para acessar exibições locais, e não há nenhum mecanismo especial para isso, o usual cookie também se aplica à raiz. Isso é coberto em Posso lançar um programa gráfico na área de trabalho de outro usuário como root? .