LINUX.ORG.RU

udev забивает на правила

 


0

1

пытаюсь настроить udev так, чтобы он при включении/выключении мыши запускал нужный мне скрипт. но он напрочь игнорит правило, в любом его виде.
и udev control --reload делал, и весь перезапускал…
(что eudev, что системдшное глюкалово, которое некоторые fn-кнопки превращает в ±)

WTF?

вот правило в самом урезанном виде:

SUBSYSTEM=="usb", RUN+="xuser-mouseplug 1"
хотя вряд ли оно поможет - я его как только не менял, и всё бестолку
права на все 644

★★★

Последнее исправление: batekman (всего исправлений: 1)

WTF?

Даже не знаю. Попробуй добавить в топик хоть что-нибудь полезное.

Gotf ★★★
()

показывай правило и мониторинг его обработки, или ты просто печаль свою не в тот бложик написал?

bass ★★★★★
()

в таком виде я бы на его месте тоже не стал отрабатывать. ACTION где? устройство тоже надо конкретизировать, ну и путь написать полный к программе, а то может у тебя правило срабатывает так рано, что система не знает еще где искать бинарник.

irton ★★★★★
()

xuser-mouseplug

А теперь полный путь пропиши.

anonymous
()

Дай доступ VNС посмотреть что там у тебя за xuser-mouseplug и где он лежит :)

anonymous
()
Ответ на: комментарий от irton
ACTION=="add", SUBSYSTEM=="input", ENV{ID_INPUT_MOUSE}=="1", RUN+="/bin/sh -c 'DISPLAY=:0 /usr/local/bin/mouseplug 1'"
ACTION=="remove", SUBSYSTEM=="input", ENV{ID_INPUT_MOUSE}=="1", RUN+="/bin/sh -c 'DISPLAY=:0 /usr/local/bin/mouseplug 0'"

даже с таким извратом не хочет

может у тебя правило срабатывает так рано, что система не знает еще где искать бинарник.

когда вставляю/вынимаю мышу, тогда и срабатываетдолжно срабатывать

batekman ★★★
() автор топика
Ответ на: комментарий от batekman

даже с таким извратом не хочет

А что такое написано в этом самом /usr/local/bin/mouseplug? Пробовал из скрипта в какой-нибудь лог писать? Он запускается?

naszar
()
Ответ на: комментарий от naszar

А что такое написано в этом самом /usr/local/bin/mouseplug?

#!/bin/sh
case "$1" in
    1)
	synclient TouchpadOff=1
	xset m 0 0
    ;;
    0)
	xset m default
	synclient TouchpadOff=0
	synclient MinSpeed=1
	synclient MaxSpeed=1.75
	synclient AccelFactor=0.05
	synclient CoastingSpeed=0
	synclient CoastingFriction=0
	synclient FingerLow=30
	synclient FingerHigh=35
	synclient HorizHysteresis=100
	synclient VertHysteresis=125
	synclient PalmDetect=1
	synclient PalmMinWidth=5
	synclient PalmMinZ=0
	synclient CircularScrolling=1
	synclient CircScrollTrigger=8
	synclient EmulateTwoFingerMinZ=0
	synclient LockedDragTimeout=1000
	synclient VertScrollDelta=200
	synclient HorizScrollDelta=200
	synconfig load
    ;;
esac

Пробовал из скрипта в какой-нибудь лог писать? Он запускается?

пробовал и echo 123 > /dev/tty2, и mkdir /tmp/krivoy_udev - не работает

batekman ★★★
() автор топика
Ответ на: комментарий от batekman

так и не увидел мониторинг твоего правила. проверяй

/usr/local/bin/testit:
#!/bin/sh
echo "$@" >>/tmp/test.txt

/etc/udev/rules.d/99-udev.test.rules:
ACTION=="add", SUBSYSTEM=="usb", TAG+="udev-test", RUN+="/usr/local/bin/testit added $env{ID_VENDOR_ID}"
ACTION=="remove", SUBSYSTEM=="usb", TAG+="udev-test", RUN+="/usr/local/bin/testit removed $env{ID_VENDOR_ID}"

udevadm control --reload-rules
watch cat /tmp/test.txt
udevadm monitor --udev --tag-match=udev-test

bass ★★★★★
()
Ответ на: комментарий от bass

так работает.

Every 2.0s: cat /tmp/test.txt                                                                                                                     Sat Feb  8 20:17:05 2014

removed
removed 046d
added 046d
added
removed
removed 046d
added 046d
added
а переключалка не хочет. но уже видно, что проблема в ней

batekman ★★★
() автор топика
Ответ на: комментарий от batekman

добавь в правила ENV{ID_VENDOR_ID}==«046d» чтобы не дёргать скрипт по 2 раза.
а теперь мы подобрались к самому главному:
ты собираешься выполнить в DISPLAY что-то от непонятного пользователя

bass ★★★★★
()
Ответ на: комментарий от bass

у меня для этого сделаны обёртки

[root] /home/alexey
# cat /usr/local/sbin/xuser
xuser=$(who | grep ":0" | awk '{print $1}' | tail -n1) 
su "$xuser" -c "DISPLAY=:0 $@"

[root] /home/alexey
# cat /usr/local/sbin/xuser-mouseplug 
#/bin/sh
case $1 in
	1) /usr/local/sbin/xuser "/usr/local/bin/mouseplug 1" ;;
	0) /usr/local/sbin/xuser "/usr/local/bin/mouseplug 0" ;;
esac

batekman ★★★
() автор топика
Ответ на: комментарий от anonymous

а что юзать?
есть synaptiks, но оно ставит тачпаду какие-то свои корявые настройки.
и потом, я ещё люблю, чтобы cupsd запускался, когда принтер вставляешь.

batekman ★★★
() автор топика
Ответ на: комментарий от batekman

я неправильно выразился, тебе нужно не просто запустить под юзером на DISPLAY, но и пройти XAUTHORITY

bass ★★★★★
()
Ответ на: комментарий от bass

разве su недостаточно?
сейчас попробую

batekman ★★★
() автор топика

У меня вот такое правило работает:

ACTION=="add", SUBSYSTEM=="input", ENV{DISPLAY}=":0.0", ENV{XAUTHORITY}="/home/eddy/.Xauthority", RUN+="/usr/bin/synclient TouchpadOff=1"
ACTION=="remove", SUBSYSTEM=="input", ENV{DISPLAY}=":0.0", ENV{XAUTHORITY}="/home/eddy/.Xauthority", RUN+="/usr/bin/synclient TouchpadOff=0"

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от batekman

У самого такая же шняга была: сначала пытался без xauthority сделать — фигвам!

Eddy_Em ☆☆☆☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.