Acessar xinput do script bash do acpi no debian

0

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?

    
por canihavesomecoffee 14.09.2015 / 20:19

1 resposta

0

xinput precisa das variáveis env de DISPLAY e XAUTHORITY. 'exportar' estes no topo do script.

    
por 17.10.2015 / 22:26