То, что я пытаюсь сделать, это настроить правило 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, и скрипт также работает, так что это не так
linux-mint
udev
user1233963
источник
источник
usb.sh
сценарий делаешь?Ответы:
С твоим правилом udev все в порядке. Проблема в том, что ваш скрипт, как и сам udev, работает
и, следовательно, не имеют доступа к вашему дисплею X11 или сеансовой шине DBus.
Помните, что Linux, как и Unix, поддерживает несколько одновременных сеансов входа в систему с первого дня, так что нет " user "; может быть несколько пользователей, имеющих несколько дисплеев X11 и несколько шин DBus (к которым может даже не подключаться сервер X11)
Обычный обходной путь - заставить скрипт всегда выбирать первый дисплей X11 (путем настройки
DISPLAY=":0"
внутри сценария). Тем не менее, это не гарантированно работает - даже на однопользовательском ПК могут работать два или более дисплея X11 (например, ваш собственный рабочий стол может:1
, в то время как:0
может быть экран входа в систему или не работает вообще).источник
/bin/su
,/usr/bin/su
или что подходит для вашей системы.Попробуйте сначала это, выполнив Alt-F2, и в окне сделайте что-то вроде / bin / sh -c "DISPLAY =: 0.0 / usr / bin / notify-send foobar" Запишите все полные пути и двойные кавычки вокруг команды оболочки.
источник