executando xinput a partir de um script no sleep.d

1

Meu mouse era muito rápido para o meu gosto, então diminuí sua velocidade usando um comando xinput:

xinput set-prop $id "Device Accel Constant Deceleration" 2.5

Eu coloquei o comando em ~/.profile para que ele seja executado na inicialização. Na inicialização, sempre funciona.

Meu problema é que a configuração parece ser redefinida quando meu computador retorna depois do modo de espera . Nem sempre, talvez metade do tempo.

Eu tentei colocar o comando em um script em /etc/pm/sleep.d/ e ele foi executado, mas por algum motivo não funcionou.

Alguma ideia? Respostas para esta questão sugere que os comandos xinput devem estar em um arquivo .desktop : isso mudaria alguma coisa?

    
por yannick1976 08.10.2015 / 02:04

1 resposta

2

Finalmente consegui dar certo! Parece que executar xinput de um script sleep.d requer alguns ajustes. Aqui está o que eu fiz. Espero que seja de alguma utilidade para alguém.

Então eu tenho um script chamado 40mouse_slow que eu coloquei em /etc/pm/sleep.d . O 40 é usado para pedidos. No currículo, os números baixos começam último . Os scripts de usuário devem usar 00 to 49 . Certifique-se de que o script tenha direitos de execução. Aqui está o script:

#!/bin/sh
case "" in
    resume|thaw)
        /home/yannick/scripts/mouse_slow.sh &
    ;;
    *)
        # Nothing.
    ;;
esac

Diz apenas que o script /home/yannick/scripts/mouse_slow.sh deve ser lançado em segundo plano quando o computador for retomado. Eu tentei lançá-lo não no fundo, mas isso quebrou retomando (rede não funcionou, por exemplo).

Aqui está /home/yannick/scripts/mouse_slow.sh . Verifique também se tem direitos de execução:

#!/bin/sh
export DISPLAY=:0.0
id='su yannick -c "xinput" | grep 'PID:400a' | cut -c58-60'
su yannick -c "xinput set-prop $id 'Device Accel Constant Deceleration' 2.5"

A segunda linha é apenas para encontrar o id do meu mouse. Quanto às outras duas linhas, elas ilustram que as duas coisas que eu encontrei tiveram que ser feitas para tornar o xinput work quando ele é chamado de um script em sleep.d :

  • DISPLAY deve ser definido e exportado
  • o usuário que está executando xinput deve ser o usuário que está executando X, e não raiz.
por yannick1976 14.10.2015 / 00:31