Всем привет.
У меня Mint 13 MATE, хочу получать уведомления, когда я подключаю/отключаю устройства.
Первым делом попробовал udev-notify, но к сожалению он почти не заработал: «почти» - потому что работает первую минуту-две (показывает толковые уведомления), но потом, если я подключу или отключу что-нибудь, то падает так:
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 /path/to/device_plug.sh"
ACTION=="remove", RUN+="/bin/bash /path/to/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 &
Кое-как заработало, но плохо:
- Когда я подключаю устройство, срабатывает несколько уведомлений. Например, FTDI usb2com порождает 4 уведомления, а флешка - больше 15. Если посмотреть вывод
lsusb
, то и usb2com, и флешка считаются одним устройством. Как бы настроить правило udev, чтобы уведомление тоже было только одно? - Не нашел как в правиле udev можно выцепить название подключенного устройства, чтобы показать его в уведомлении. В идеале было бы просто передать параметр для вызываемого с помощью
RUN+="..."
скрипта, но как выцепить название устройства? Ожидал, что можно указать что-то вроде ${DEV_TITLE}, ничего подобного не нагуглил.
Вот так. Если кто знает, как решить какую-нибудь из этих двух проблем - подскажите пожалста. Или если есть вообще другой способ реализовать подобные уведомления - тоже подскажите.