EDIT (revisão 4)
De acordo com esta postagem do ubuntuforums.org , livro de receitas do upstart e Resposta da CameronNemo , tentei mudar a primeira linha com
start on login-session-start
e movi o arquivo conf para /etc/init/
. O script agora é executado, mas não funciona. O arquivo de log informa Cannot connect to X server
. Eu tentei adicionar ao script
export DISPLAY=":0"
export XAUTHORITY="/home/marco/.Xauthority"
mas ainda não funciona. O erro é Invalid MIT-MAGIC-COOKIE-1 key
.
Note que não tenho nenhum problema para executar sudo xinput list
após o login.
RESPOSTA ORIGINAL
Estou usando o Lubuntu 14.04 e quero desativar o touchpad na inicialização se o mouse estiver conectado. Para esse propósito, criei este trabalho de ~/.config/upstart/touchpad.conf
upstart:
start on desktop-start
script
mouse_state_old=-1
touchpad_id="$(xinput list | grep -i touchpad | grep -oP "\bid\s*=\s*\K\d+")"
while true ; do
mouse_state="$(xinput list | grep -ci mouse)"
if [ "$mouse_state" -ne "$mouse_state_old" ] ; then
if [ "$mouse_state" -gt 0 ] ; then
killall syndaemon
xinput disable "$touchpad_id"
else
xinput enable "$touchpad_id"
syndaemon -m 100 -i 1 -k -d
fi
fi
mouse_state_old="$mouse_state"
sleep 3
done
end script
Esse trabalho funciona, mas somente depois que eu entro no sistema operacional. Quero que o touchpad também seja desativado antes de efetuar login, na tela de login.
INFORMAÇÕES NÃO MAIS NECESSÁRIAS E SIMPLESMENTE ERRADAS:
de acordo com o livro de receitas , parece que o lightdm não emite o evento correto. Se eu corro manualmente
/sbin/initctl -q emit login-session-start DISPLAY_MANAGER=lightdm
o script upstart é invocado. Então eu criei um arquivo /etc/lightdm/lightdm.conf.d/90-upstart_login.conf
conf com
[SeatDefaults]
greeter-setup-script=/home/marco/.local/usr/bin/all/upstart_login.sh
e o script /home/marco/.local/usr/bin/all/upstart_login.sh
com
#!/bin/sh
/sbin/initctl -q emit login-session-start DISPLAY_MANAGER=lightdm
Funciona se invocado manualmente a partir do bash, mas não durante o boot.
Eu tenho o lightdm versão 1.10.1-0ubuntu1, então ele deve emitir o evento .