Script não está sendo executado no currículo

4

Estou executando o 11.04 em um Asus UL30. Eu estou tentando executar um script para corrigir minhas configurações de syncient (que são perdidas durante o currículo). Eu escrevi o seguinte script em /etc/pm/sleep.d/10_touchpad:

#!/bin/sh

#change synclient settings on resume

case "" in 

    resume|thaw)

        sleep 15 && synclient TapButton2=2 TapButton3=3 ;;
esac

/ var / log / pm-suspend mostra o seguinte:

  

/etc/pm/sleep.d/10_grub-common suspender suspender: sucesso. Gancho de corrida   /etc/pm/sleep.d/10_touchpad suspender suspender:   /etc/pm/sleep.d/10_unattended-upgrades-hibernate resume suspend:   sucesso. Gancho em execução /etc/pm/sleep.d/10_touchpad reto suspender:   Falha ao conectar ao X Server.

     

/etc/pm/sleep.d/10_touchpad retomar suspender: sucesso. Gancho de corrida   /etc/pm/sleep.d/10_grub-common

Não sei ao certo por que as alterações de sincronização não estão sendo classificadas por este script no currículo. Gostaria de receber algum insight ....

    
por benbeel 29.10.2011 / 22:56

1 resposta

3

Resposta direta

Para atingir seu objetivo (de executar um script de espaço de usuário dependente de sessão X quando sua máquina continuar), você deve:

  1. execute o script como o usuário apropriado; e
  2. certifique-se de que a variável DISPLAY esteja configurada.

Gostaria de mover a linha sleep 15 && synclient TapButton2=2 TapButton3=3 para um arquivo separado, digamos /usr/local/sbin/setupTouchpad.sh e substitua a linha por:

   export DISPLAY=:0
   su -c - <yourusername> /usr/local/sbin/setupTouchpad.sh

Onde <yourusername> deve ser substituído. Observe que ainda é uma boa ideia ter algum tempo de espera para garantir que o sistema esteja ativo antes de executar o código. Além disso, certifique-se de chmod +x that setupTouchpad.sh script.

Uma maneira melhor

O problema com o que foi dito acima é que você tem que codificar seu nome de usuário (ou usar alguma maneira para descobrir qual usuário está logado e tem a sessão X ativa). É melhor definir as configurações do touchpad em todo o sistema para o X.

Essas opções podem ser definidas em /usr/share/X11/xorg.conf.d/

Para mim, o arquivo correto a ser editado é 50-synaptics.conf aqui. Defini opções, aqui está uma parte desse arquivo:

Section "InputClass"
        Identifier "touchpad catchall"
        Driver "synaptics"
        MatchIsTouchpad "on"

        Option          "TapButton2"              "2"
        Option          "TapButton3"              "3"

        # Etc...
EndSection

Como você já deve estar ciente, para ver as opções válidas, basta executar synclient .

Observação você deve reiniciar o X para que essas alterações entrem em vigor. Para fazer isso no Ubuntu, por exemplo, você pode executar sudo /etc/init.d/lightdm restart

Para visualizar suas alterações, você pode tentar executar a seguinte linha (ou alguma variante). Remova | bash do final para ver os comandos emitidos.

cat /usr/share/X11/xorg.conf.d/50-synaptics.conf | grep Option | grep -v "^\#" | awk '{print "synclient "  "=" }' | sed 's/\"//g' | bash

Se você pesquisar no Google por touchpad settings synaptics xorg.conf.d , também encontrará algumas boas visões gerais das opções.

Referências

por Geoff 01.02.2012 / 16:24