Почему некоторые части сценария, запускаемого правилом 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 , чтобы проверить это, но это также не работает.

0
задан 3 July 2020 в 16:45

1 ответ

Я нашел ответ:

Настройки xinput работают только в X-контексте. Но они не запускаются Например, из терминала, запущенного в вашем менеджере рабочего стола.

Например,

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

Подробнее об этом вы можете узнать здесь , здесь и здесь .

0
ответ дан 30 July 2020 в 22:14

Другие вопросы по тегам:

Похожие вопросы: