在 debian 上從 acpi bash 腳本存取 xinput

在 debian 上從 acpi bash 腳本存取 xinput

我正在嘗試使用 acpi 事件在鍵盤上編寫一個不起作用的特殊鍵,並且已經讓 acpi 識別按鍵並將其傳遞給 shell 腳本。但是,由於某種原因,我無法執行對 xinput 的呼叫;它總是返回退出代碼 1 並且沒有輸出。手動運行 shell 腳本時它可以工作。

我還注意到,如果我調用,xinput --version我會得到手動調用的正確結果,但是當透過 acpi 調用它時,它會返回退出代碼 1 和Server: failed to open display,所以我猜這些在某種程度上是相關的。

我的 bash 腳本目前非常簡單,但如果我無法呼叫 xinput,那麼它就毫無價值(因為我需要能夠使用 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

我已經仔細檢查了很多東西(環境應該沒問題,它可以找到可執行檔),並且我知道程式碼在某個時刻可以工作(它基於中附帶的程式碼)烏班圖在過去。

腳本中的 whoami 透露它是以 root 身份運行的,而桌面環境可能連結到我的常規用戶帳戶,但我不確定如何解決這個問題...

編輯:當從終端以 root 身份運行 xinput (或以 root 身份手動運行 shell)時,它可以工作。當透過 acpi 啟動的腳本以 root 身分呼叫它時,它不起作用。

有人會建議我如何解決這個問題嗎?

答案1

xinput 需要 DISPLAY 和 XAUTHORITY 環境變數。在腳本頂部“導出”這些。

相關內容