Execute o auto-disper automaticamente no dispositivo wake / thaw

5

Estou usando um Thinkpad W510 e mudo constantemente de local. Estou usando o disper e o auto-disper para mudar os perfis da tela (desencaixada; tela do laptop + tela externa; duas telas externas).

Eu queria executar auto-disper --change depois de acordar, então coloquei o seguinte script em /etc/pm/sleep.d :

#!/bin/bash

case "" in
    thaw | resume )
        auto-disper --change &> /home/myHome/autodisper_on_wake.txt
        ;;
esac

Ao acordar, recebo o seguinte em autodisper_on_wake.txt , indicando que o script foi acionado:

Assuming disper defaults...
'NoneType' object has no attribute 'endswith'
Unable to fingerprint display configuration
home
school
undocked

Mas nenhuma mudança aconteceu - apesar de desconectar meu monitor antes de acordar minha máquina (indo do perfil 'escola' para o perfil 'desencaixado'), eu ainda estou no perfil 'escola'.

Alguma ideia de como proceder? (FWIW, eu mudei o autorar para que o PROFILE e o CONFIG apontassem para o meu diretório pessoal absoluto, ao invés de ~ [achei que talvez os scripts do wake fossem executados como root, por isso procuraria no ~ root por dados do perfil]).

    
por Dang Khoa 15.08.2011 / 21:28

2 respostas

2

Eu pesquisei essa coisa de auto-dispersão no google e encontrei algo com esse nome no link e observei a fonte . Parece estar executando comandos baseados em X11, mas o seu script PM provavelmente não está sendo executado com um ambiente X11. Não existe uma maneira limpa de fazer isso, mas se você supor que sua sessão X estará em exibição no 0 (que normalmente será o caso se você for o único logado graficamente), você poderá fazê-lo funcionar executando o comando comando como seu usuário e definindo a variável de ambiente DISPLAY.

#!/bin/bash

case "" in
    thaw | resume )
        sudo -u yourusername env DISPLAY=:0 auto-disper --change &> /home/myHome/autodisper_on_wake.txt
    ;;
esac
    
por geirha 20.08.2011 / 02:06
2

Isso funcionou para mim (estou usando o Ubuntu 12.04 com lightdm):

#!/bin/bash

USERNAME="xxx"
export DISPLAY=":0.0"
export HOME=/home/$USERNAME

if [ "" = "suspend" ]
then
    echo "Switching back disper"
    su $USERNAME -c "/usr/bin/python /usr/bin/disper -s" 
fi

if [ "" = "resume" ]
then
    echo "Change disper" 
    su $USERNAME -c "DISPLAY=:0.0 disper -l ; sleep 1; DISPLAY=:0.0 disper -S ; sleep 4; DISPLAY=:0.0 disper -S" 
fi

Talvez também sem disper -l e chamando o disper duas vezes, mas ainda não verifiquei

    
por Alex 08.08.2012 / 18:33