Desativar o touchpad na tela de login

2

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 .

    
por Marco Sulla 13.10.2014 / 14:47

2 respostas

1

Você está misturando tarefas e eventos do sistema e da sessão. lightdm emite o evento muito bem, mas para a instância do sistema do Upstart. Copie seu ~/.config/upstart/touchpad.conf para /etc/init/ e altere o evento start on para login-session-start .

    
por CameronNemo 14.10.2014 / 20:58
0

Em vez de usar o Upstart, você pode tentar colocar seu snippet de script em /etc/X11/session.d/ .

Certifique-se de que seja pelo nome de 99local e que não tenha um cabeçalho #!bin/sh .

Também não deve ser executável.

Isso garantirá que seu script seja executado depois que o xsession estiver configurado e sempre será executado, já que os scripts nesse diretório sempre serão executados quando um servidor X for iniciado.

    
por CameronNemo 16.10.2014 / 23:38