Acesse o xinput do script acpi bash no debian

Acesse o xinput do script acpi bash no debian

Estou tentando programar uma tecla especial que não funciona no meu teclado usando os eventos acpi, e já consegui que o acpi reconhecesse um pressionamento de tecla e o transmitisse para um script de shell. No entanto, por algum motivo, não consigo executar uma chamada para o xinput; ele sempre retorna com um código de saída 1 e nenhuma saída. Ao executar o shell script manualmente, ele funciona.

Também notei que, se eu ligar, xinput --versionobtenho um resultado correto chamando manualmente, mas quando é chamado por meio da 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 é bastante fácil neste momento, mas se não consigo chamar o xinput, é inútil (já que preciso ativar/desativar 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]+).*|\1|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 muitas coisas (o ambiente deve estar ok, ele pode encontrar o executável) e sei que o código estava funcionando em algum momento (é baseado no código enviado emUbuntuno passado.

Um whoami no script revelou que ele é executado como root, enquanto o ambiente de desktop provavelmente está vinculado à minha conta de usuário normal, mas não tenho certeza de como poderia consertar isso...

Editar: Ao executar o xinput como root a partir de um terminal (ou executar o shell manualmente como root), ele funciona. Quando é chamado como root através do script ativado pela acpi, não está funcionando.

Alguém teria uma sugestão de como eu poderia consertar isso?

Responder1

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

informação relacionada