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

2 ответа2

0

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

0

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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .