为什么 udev 规则触发脚本的某些部分不起作用?(使用 xinput 设置插入时的鼠标加速度)

为什么 udev 规则触发脚本的某些部分不起作用?(使用 xinput 设置插入时的鼠标加速度)

我有一条 udev 规则

ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c084", RUN+="/some/script.sh"

成功触发如下脚本

#!/bin/bash

ls /tmp >> /tmp/lsasd # this line works
touch /tmp/asdasd # this line works

for id in $(xinput --list | \
            sed -n '/Logitech G203 Prodigy Gaming Mouse.*pointer/s/.*=\([0-9]\+\).*/\1/p')
do
  echo $id >> /tmp/test.log 2>&1
  xinput --set-prop $id 'libinput Accel Profile Enabled' 0, 1
  
done

前两个命令运行正常,但设置属性不起作用。想法是运行命令

xinput --set-prop $id 'libinput Accel Profile Enabled' 0, 1

$id对于找到的所有设备,因为那时我还不知道。

知道可能是什么问题吗?xinput此时设备还不可用吗?我尝试添加一个sleep 5来测试这一点,但这也不起作用。

答案1

我找到了答案:

xinput 设置仅在 X 上下文中有效。但它们不能从桌面管理器中启动的终端运行。

例如

ACTION=="add", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c084", ENV{DISPLAY}=":0.0", ENV{XAUTHORITY}="/home/administrator/.Xauthority", RUN+="/some/script.sh"

您可以在以下位置阅读更多内容:

相关内容