Установка правил 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, и скрипт также работает, так что это не так


Соответствует ли это выводу мониторинга 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 может быть экран входа в систему или не работает вообще).


изменил мое правило на: 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" Запишите все полные пути и двойные кавычки вокруг команды оболочки.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.