xinput precisa das variáveis env de DISPLAY e XAUTHORITY. 'exportar' estes no topo do script.
Eu estou tentando programar uma tecla especial que não funciona no meu teclado usando os eventos acpi e já consegui reconhecer um pressionamento de tecla e passá-lo para um shell script. No entanto, por algum motivo, não consigo executar uma chamada para xinput; sempre retorna com um código de saída de 1 e nenhuma saída. Ao executar o script de shell manualmente, ele funciona.
Também notei que, se eu chamar xinput --version
, recebo um resultado correto chamando manualmente, mas quando ele é chamado pelo acpi, ele retorna o código de saída 1 e Server: failed to open display
, então acho que eles estão relacionados de alguma forma .
Meu script bash é bem fácil neste momento, mas se eu não puder chamar xinput, será inútil (já que preciso habilitar / desabilitar usando comandos xinput).
#!/bin/bash
touch="0000006b"
if [ "$3" != $touch ]; then
# Ignore, not a touchpad event
echo "$3 is not matching $touch, ignoring"
exit 0
fi
# Process event
echo "Got a touchpad keypress"
getTouchDeviceId()
{
# extract the device id for the supplied touch device name
xinput list | sed -nr "s|.*$1.*id=([0-9]+).*||p"
}
ENABLEPROP="Device Enabled"
# Get the xinput device number and enabling property for the touchpad
XINPUTNUM=$(getTouchDeviceId "PS/2 Elantech Touchpad")
# Removed the rest
Eu verifiquei várias coisas (o ambiente deve estar ok, ele pode encontrar o executável) e sei que o código estava funcionando em algum momento (ele é baseado no código que é enviado em Ubuntu no passado.
Um whoami no script revelou que ele é executado como root, enquanto o ambiente de área de trabalho provavelmente está vinculado à minha conta de usuário normal, mas não tenho certeza de como corrigi-lo ...
Edit: Ao executar o xinput como root a partir de um terminal (ou executando o shell manualmente como root), ele funciona. Quando é chamado como root através do script ativado pelo acpi, não está funcionando.
Alguém poderia ter uma sugestão de como eu poderia consertar isso?
Tags debian acpi bash-scripting