X11
涉及 X11 的 Udev 規則不在啟動時執行
當我連接某些 USB 設備時,我編寫了一些要執行的 udev 規則。例如,我更改某些滑鼠的指針速度,並更改特定鍵盤的 xmodmaps。
這些腳本在電腦打開時連接設備時執行良好,並且在電腦掛起時連接設備時也能正常執行。但是,如果在我啟動或登錄之前插入設備,這些 udev 規則似乎不會觸發。有沒有辦法讓它們在啟動時執行?
我正在使用(K)ubuntu 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 &
不,因為您描述的所有操作都需要一個正在執行的 X 伺服器。您應該考慮為它們創建一個自動啟動項。