X11과 관련된 Udev 규칙은 시작 시 실행되지 않습니다.

X11과 관련된 Udev 규칙은 시작 시 실행되지 않습니다.

특정 USB 장치가 연결될 때 실행되는 몇 가지 udev 규칙을 작성했습니다. 예를 들어 특정 마우스의 포인터 속도를 변경하고 특정 키보드의 xmodmap을 변경합니다.

이러한 스크립트는 컴퓨터가 켜져 있는 동안 장치가 연결되어 있을 때 잘 작동하고, 컴퓨터가 정지된 동안 장치가 연결되어 있을 때도 잘 작동합니다. 그러나 이러한 udev 규칙은 장치가 연결되어 있으면 실행되지 않는 것 같습니다.앞으로시작하거나 로그인합니다. 시작할 때 실행되도록 하는 방법이 있나요?

저는 (K)우분투 13.04를 사용하고 있습니다. 다음은 내 udev 규칙 및 스크립트의 몇 가지 예입니다.

/etc/udev/rules.d/00-teck.rules:

ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="0e6a", ATTR{idProduct}=="030c", RUN+="/usr/local/bin/TECK_connect"
ACTION=="remove", SUBSYSTEM=="usb", RUN+="/usr/local/bin/TECK_disconnect"

/usr/local/bin/TECK_connect:

#!/usr/bin/env bash

export DISPLAY=:0.0
cp -f /home/sparhawk/HDD/Computer/Xmodmaps/Xmodmap_for_TECK /home/sparhawk/.Xmodmap
sudo -u sparhawk setxkbmap -layout us -variant altgr-intl
sudo -u sparhawk xmodmap /home/sparhawk/.Xmodmap
sudo -u sparhawk pkill xcape
sudo -u sparhawk xcape -e 'Alt_L=Return' && sudo -u sparhawk notify-send "xmodmap" "TECK connected." -i /usr/share/icons/oxygen/48x48/devices/input-keyboard.png --hint=int:transient:1

/etc/udev/rules.d/90-razerwakeup-slowdown.rules:

ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="1532", ATTRS{idProduct}=="0016" RUN+="/bin/sh -c 'echo $env{DEVPATH} | grep -q usb./[^/]*/[^/]*/[^/]*$ && echo enabled > /sys$env{DEVPATH}/../power/wakeup; razer_slowdown'"

/usr/local/bin/razer_slowdown:

#!/usr/bin/env bash
# slow down the tracking speed of a razer mouse.
# to check, $ xinput --list-props "Razer Razer DeathAdder"| grep 'Constant Deceleration'
# which was originally 1

scriptproper () {
        sleep 0.5 # perhaps not necessary, but putting it in background is.
        export DISPLAY=:0.0
        sudo -u sparhawk xinput --set-prop "Razer Razer DeathAdder" "Device Accel Constant Deceleration" 3
}

scriptproper &

답변1

아니요, 설명하는 작업에는 X 서버 실행이 필요하지 않기 때문입니다. 당신은자동 시작 항목그들을 위해.

관련 정보