Установка правил udev в Linux Mint 13

2

То, что я пытаюсь сделать, это настроить правило udev для моих наушников HP (usb) с помощью нескольких уроков.

Создал файл (90-local.rules) в /etc/udev/rules.d и добавил следующее:

ACTION="add",SUBSYSTEM="usb", ATTR{vendor}=="Hewlett-Packard", RUN+="sh /home/alex/Scripts/usb.sh"

Проблема ничего не происходит, когда я подключаю наушники! Что я делаю неправильно?

примечание: я перезапустил udev, и скрипт также работает, так что это не так

user1233963
источник
Соответствует ли это выводу мониторинга udevadm?
Tom Wijsman
Если под «этим» вы мене продавец, да
user1233963
Что именно usb.sh сценарий делаешь?
grawity
просто звонок-уведомление-отправка
user1233963
Вот вывод информации udevadm -a -p /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.3/input/input29, если это поможет: pastebin.com/95swJYhF
user1233963

Ответы:

0

С твоим правилом udev все в порядке. Проблема в том, что ваш скрипт, как и сам udev, работает

  1. как корень - не как ваша собственная учетная запись пользователя;
  2. как оказание услуг - вне сеанса входа в систему;

и, следовательно, не имеют доступа к вашему дисплею X11 или сеансовой шине DBus.

Помните, что Linux, как и Unix, поддерживает несколько одновременных сеансов входа в систему с первого дня, так что нет " user "; может быть несколько пользователей, имеющих несколько дисплеев X11 и несколько шин DBus (к которым может даже не подключаться сервер X11)

Обычный обходной путь - заставить скрипт всегда выбирать первый дисплей X11 (путем настройки DISPLAY=":0" внутри сценария). Тем не менее, это не гарантированно работает - даже на однопользовательском ПК могут работать два или более дисплея X11 (например, ваш собственный рабочий стол может :1, в то время как :0 может быть экран входа в систему или не работает вообще).

grawity
источник
изменил мое правило на: ACTION = "add", SUBSYSTEM = "usb", ATTR {vendor} == "Hewlett-Packard", RUN + = "su alex -c 'DISPLAY =: 0 тест уведомления-отправки'", но все равно ничего , Примечание: запуск "su alex -c 'DISPLAY =: 0 test notify-send" от имени root работает. Есть идеи?
user1233963
@ user1233963: попробуйте /bin/su, /usr/bin/suили что подходит для вашей системы.
grawity
Это / bin / su, попробовал, без изменений. Другие идеи?
user1233963
0

Попробуйте сначала это, выполнив Alt-F2, и в окне сделайте что-то вроде / bin / sh -c "DISPLAY =: 0.0 / usr / bin / notify-send foobar" Запишите все полные пути и двойные кавычки вокруг команды оболочки.

Roadowl
источник