Я використовую Linux Mint 13 MATE і намагаюся налаштувати сповіщення, коли я підключаю / відключаю пристрої.
Перш за все, я знайшов пакет udev-notify , але, на жаль, він майже не працює для мене: він працює дуже мало часу (1-2 хвилини), а потім, якщо я підключую / відключаю будь-який пристрій, він виходить з ладу:
Traceback (most recent call last):
File "./udev-notify.py", line 319, in <module>
notification.show()
glib.GError: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name :1.1061 was not provided by any .service files
Я не знайшов жодного рішення, тому довелося його видалити. (також подано бугрепорт )
Дивно, але подібних утиліт я не знайшов поки що. Потім я спробував написати правила udev, які повинні відповідати всім пристроям. Я додав новий файл /etc/udev/rules.d/notify.rules
:
ACTION=="add", RUN+="/bin/bash /home/dimon/tmp/device_plug.sh"
ACTION=="remove", RUN+="/bin/bash /home/dimon/tmp/device_unplug.sh"
І два сценарії:
device_plug.sh:
#!/bin/bash
export DISPLAY=":0"
notify-send "device plugged"
/usr/bin/play -q /path/to/plug_sound.wav &
device_unplug.sh:
#!/bin/bash
export DISPLAY=":0"
notify-send "device unplugged"
/usr/bin/play -q /path/to/unplug_sound.wav &
Це працює, але працює дуже тупо. Мої запитання:
- Як прикріпити фактичну назву пристрою, таку, яку я бачу на
lsusb
виході? Наразі я щойно отримував сповіщення типу "підключений" та "відключений", і я не можу знайти, як я можу отримати назву пристрою в моєму правилі udev (якщо я можу, то передавав би його до свого сценарію як параметр) - Наразі активовано занадто багато сповіщень. Скажіть, коли я прикладаю USB-накопичувач, я отримав близько 15 повідомлень! Але якщо я запускаю
lsusb
, прикріплений USB-накопичувач відображається як лише один пристрій. Тож, мабуть, я повинен додати ще один аргумент, щоб правити фільтр, але я не можу його дізнатися. - Можливо, є якесь краще рішення для сповіщень про підключення / відключення пристрою? Підкажіть, будь ласка, якщо ви щось знаєте.
pyudev
для отримання сповіщення, і не вимагає додаткових сценаріїв у/etc/udev
.