Acceda a xinput desde el script acpi bash en debian

Acceda a xinput desde el script acpi bash en debian

Estoy intentando programar una tecla especial que no funciona en mi teclado usando los eventos acpi, y ya logré que acpi reconozca una pulsación de tecla y la pase a un script de shell. Sin embargo, por alguna razón no puedo ejecutar una llamada a xinput; siempre regresa con un código de salida de 1 y sin salida. Cuando se ejecuta el script de shell manualmente, funciona.

También noté que si llamo xinput --versionobtengo un resultado correcto al llamar manualmente, pero cuando se llama a través de acpi, devuelve el código de salida 1 y Server: failed to open display, así que supongo que están relacionados de alguna manera.

Mi script bash es bastante fácil en este momento, pero si no puedo llamar a xinput, no tiene ningún valor (ya que necesito poder habilitarlo/deshabilitarlo usando los comandos de 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

He verificado muchas cosas (el entorno debería estar bien, puede encontrar el ejecutable) y sé que el código estuvo funcionando en algún momento (se basa en el código que se envió enubuntuen el pasado.

Un whoami en el script reveló que se ejecutó como root, mientras que el entorno de escritorio probablemente esté vinculado a mi cuenta de usuario habitual, pero no estoy seguro de cómo podría solucionarlo...

Editar: cuando ejecuta xinput como root desde una terminal (o ejecuta el shell manualmente como root), funciona. Cuando se llama como root a través del script activado por acpi, no funciona.

¿Alguien tendría alguna sugerencia sobre cómo podría solucionar este problema?

Respuesta1

xinput necesita las variables de entorno DISPLAY y XAUTHORITY. 'exportarlos' en la parte superior del script.

información relacionada