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
lsusb
wyjś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.
źródło
pyudev
do otrzymywania powiadomień i nie wymaga dodatkowych skryptów/etc/udev
.Dodaj następujące wiersze przed liniami powiadomień wizualnych, aby dać skryptowi wyobrażenie, na którym ekranie X powinien uruchomić
notify-send
(lub inną aplikację X):Oczywiście musisz zmienić drugą linię zgodnie ze środowiskiem pulpitu (lub menedżerem wyświetlania). Ta linia działa dobrze dla Ubuntu 16.04, który używa unity jako pulpitu i lightdm jako menedżera wyświetlania.
(z tego postu )
źródło
Gdzie X_user to użytkownik, którego chcesz uruchomić, a X_userid to identyfikator grupy użytkownika
przykład bigbird i 1000
źródło