Установка правил 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.