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"

이에 대해 더 자세히 읽을 수 있습니다.여기,여기그리고여기.

관련 정보