Używam Linux Mint 13 MATE i próbuję skonfigurować powiadomienia, kiedy podłączam / odłączam urządzenia.
Po pierwsze znalazłem pakiet udev-powiadomienie , ale niestety prawie dla mnie nie działa: działa przez bardzo krótki czas (1-2 minuty), a następnie, jeśli podłączę / odłączę dowolne urządzenie, ulega awarii:
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
Nie znalazłem żadnego rozwiązania, więc musiałem je usunąć. ( również zgłosił błąd )
O dziwo, do tej pory nie znalazłem podobnych narzędzi. Następnie próbowałem napisać reguły udev, które powinny pasować do wszystkich urządzeń. Dodałem nowy plik /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"
I dwa skrypty:
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 &
Działa, ale działa bardzo głupio. Moje pytania to:
- Jak uzyskać rzeczywisty tytuł podłączonego urządzenia, taki sam, jaki widzę na
lsusbwyjściu? Obecnie dostaję powiadomienia typu „podłączono” i „odłączono” i nie mogę znaleźć sposobu, w jaki mogę odzyskać nazwę urządzenia w mojej regule udev (jeśli mogę, przekazałbym to do mojego skryptu jako parametr) - Obecnie aktywowanych jest zbyt wiele powiadomień. Powiedzmy, że kiedy podłączam pamięć USB, dostaję około 15 powiadomień! Ale jeśli uruchomię
lsusb, podłączona pamięć USB jest wyświetlana jako pojedyncze urządzenie. Wygląda na to, że powinienem dodać więcej argumentów do filtru reguł, ale nie mogę tego znaleźć. - Prawdopodobnie jest jakieś lepsze rozwiązanie dla powiadomień o podłączeniu / odłączeniu urządzenia? Proszę zasugerować, jeśli coś wiesz.

pyudevdo otrzymywania powiadomień i nie wymaga dodatkowych skryptów/etc/udev.