Desejo que meu touchpad seja desativado automaticamente quando um mouse externo estiver conectado e ativado quando não houver nenhum. Eu tentei usar, touchpad-indicator
mas isso falha nos casos em que o computador foi colocado no modo de suspensão com um mouse conectado e acordado com o mouse desconectado.
Tentei transformar o seguinte script em um daemon para resolver esse problema, mas não consigo fazê-lo funcionar:
#!/bin/bash
declare -i TID
declare -i MID
TID=`xinput list | grep -Eo 'Touchpad\s*id\=[0-9]{1,2}' | grep -Eo '[0-9]{1,2}'`
MID=`xinput list | grep -Eo 'Mouse\s*id\=[0-9]{1,2}' | grep -Eo '[0-9]{1,2}'`
if [ $MID -gt 0 ]
then
xinput disable $TID
else
xinput enable $TID
fi
eu tentei start-stop-daemon -S -x ./myscript.sh -b
e setsid ./myscript.sh >/dev/null 2>&1 < /dev/null &
ee nohup ./myscript 0<&- &>/dev/null &
mesmo./myscript.sh &
Tudo isso retorna um número de 4 dígitos, que, eu acho, deve ser o PID do processo iniciado, mas quando inicio o lxtask não há processos com esse PID , mesmo se eu marque "exibir todos os processos". E, claro, não funciona!
xinput
precisa de um servidor X em execução, e a maioria dos métodos de execução de daemons não tem conhecimento ou capacidade de se conectar ao X. Terceiro, e a principal razão pela qual você deve sempre explicar o que está tentando fazer é que muitas vezes a solução que alguém está tentando se inscrever não é realmente a maneira de fazer isso e você acaba fazendo a pergunta errada, comumente conhecida como o problema XY .Respostas:
O script básico que você precisa é simplesmente:
O script acima alternará o trackpad, dependendo de um mouse estar conectado. Quando iniciado, ele será executado para sempre e procurará um mouse a cada segundo, desativando ou ativando o touchpad de acordo.
Agora, salve o script como
~/touchpad.sh
, torne-o executável (chmod +x ~/touchpad.sh
) e adicione-o aos programas de inicialização da sessão da GUI. Você não especificou qual ambiente de área de trabalho está usando, mas desde que você mencionoulxtask
, assumirei que você está usandoLXDE
. Em todo caso, aqui estão as instruções para ambosLXDE
eUnity
:Adicione o script aos arquivos de inicialização automática do LXDE
Certifique-se de substituir "PROFILE" pelo nome real do seu perfil do LXDE , para descobrir o que é executando
ls ~/.config/lxsession/
.Adicione o script aos arquivos de inicialização automática do Unity
Aberto
Startup Applications
(pesquise no painel por "Inicialização")Clique em "Adicionar" e cole o caminho para o seu script no campo de comando:
fonte
Ok, eu fiz uma regra de udev para isso, e é, como @terdon disse, uma maneira muito mais limpa
Portanto, graças a este guia , criei um arquivo "touchpad_toggle.rules" em /etc/udev/rules.d/ (requer acesso root) e o preenchi com duas linhas:
Não se esqueça de substituir "nome de usuário" por seu nome de usuário!
O conteúdo desses scripts shell on e off é apenas uma versão castrada do script na minha pergunta. Exemplo - off.sh:
Você precisará usar o xinput enable $ TID no on.sh
E não se esqueça de adicionar o script na minha pergunta (ou o sugerido por @terdon, mas sem um loop) para iniciar automaticamente a sessão, como ele disse em sua resposta.
É isso, mas tenho que acrescentar uma coisa:
Se você possui um touchpad Synaptics (eu tenho a Elantech, então não é adequado para mim), você pode substituir seus scripts (caminhos nos quais você escreve após RUN + =) por um comando simples
/usr/bin/synclient TouchpadOff=0
e 1 respectivamentefonte
udev
regra de qualquer maneira, pode ser melhor salvar o arquivo em outro lugar que não seja o diretório inicial. Por exemplo:/usr/local/bin
ou/opt/touchpad-toggle/bin/
.