Wacom Bambooタブレットを180度回転させるスクリプトを作成しました。私自身(ユーザー)またはrootとして実行すると正常に動作しますが、起動するとudev
(つまり、タブレットがusb
ポートに接続されているとき)動作しません。
Udevルール:
SUBSYSTEMS=="usb", ATTRS{idVendor}=="056a", ATTRS{idProduct}=="00d1", ATTRS{manufacturer}=="Wacom Co.,Ltd.", RUN+="/usr/local/bin/red-wacom-bamboo.sh"
Wacomスクリプト/usr/local/bin/red-wacom-bamboo.sh:
#!/usr/bin/env bash
exec > /tmp/red-wacom.log
exec 2>&1
# I had to do this otherwise xsetwacom would say:
# "Failed to open Display ."
# Is there a way to do this without using my username?
export XAUTHORITY=/home/redsandro/.Xauthority
export DISPLAY=:0
/usr/bin/xsetwacom set "Wacom Bamboo 2FG 4x5 Pen stylus" Rotate half
/usr/bin/xsetwacom set "Wacom Bamboo 2FG 4x5 Finger touch" Rotate half
結果は/tmp/red-wacom.logにあります。:
Cannot find device 'Wacom Bamboo 2FG 4x5 Pen stylus'.
Cannot find device 'Wacom Bamboo 2FG 4x5 Finger touch'.
(ログのエラーは、udevルール自体が問題ではないことを意味します。)
スクリプトで設定しようとしましたが、sleep
おそらく数ミリ秒かかります。しかし、これは役に立ちません。
- このスクリプトから直接呼び出すと、なぜ機能しないのですか
udev
?- どうすれば解決できますか?
udev
特定のユーザーでスクリプトを呼び出すことはできますか? (例:外部バックアップドライブに同期/home
- /home/はそのユーザーにのみ表示されます。)
ベストアンサー1
udev がラッパースクリプトを呼び出して、後から実際の設定スクリプトを呼び出す 2 つのファイルを生成すると、動作します。 X11が操作を完了するのに時間を費やすために、構成スクリプトはしばらく待機する必要があります。私が使用する設定は次のとおりです。
udev(/usr/local/bin/setupwacom.sh) が呼び出すラッパースクリプト:
#!/usr/bin/env bash
/usr/local/bin/setupwacom-post-X11.sh &
ラッパースクリプト(/usr/local/bin/setupwacom-post-X11.sh)によって呼び出される設定スクリプト:
#!/usr/bin/env bash
sleep 2
export XAUTHORITY=/home/adrian/.Xauthority
export DISPLAY=:0
# Put your xsetwacom commands here, for example:
xsetwacom --set "Wacom Intuos S Pad pad" Button 1 "key +ctrl +shift e"