Uso Linux Mint 13 MATE, y estoy tratando de configurar notificaciones cuando conecto / desconecto dispositivos.
En primer lugar, encontré el paquete udev-notify , pero desafortunadamente casi no funciona para mí: funciona por muy poco tiempo (1-2 minutos), y luego, si conecto / desconecto algún dispositivo, se bloquea:
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
No he encontrado ninguna solución, así que tuve que eliminarla. ( informe de errores archivado también)
Sorprendentemente, no hay utilidades similares que he encontrado hasta ahora. Luego intenté escribir reglas de udev que deberían coincidir con todos los dispositivos. He agregado un nuevo archivo /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"
Y dos guiones:
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 &
Funciona, pero funciona muy tonto. Mis preguntas son:
- ¿Cómo obtener el título real del dispositivo conectado, lo mismo que puedo ver en la
lsusb
salida? Actualmente, acabo de recibir notificaciones como "enchufado" y "desenchufado", y no puedo encontrar cómo puedo recuperar el nombre del dispositivo en mi regla udev (si puedo, lo pasaría a mi script como parámetro) - Actualmente, se activan demasiadas notificaciones. Digamos, cuando conecto mi memoria USB, ¡recibí unas 15 notificaciones! Pero, si ejecuto
lsusb
, la memoria USB conectada se muestra como un solo dispositivo. Entonces, parece que debería agregar más argumentos al filtro de reglas, pero no puedo descubrirlo. - ¿Probablemente haya alguna solución mejor para las notificaciones de enchufar / desconectar el dispositivo? Por favor sugiera si sabe algo.
fuente
pyudev
para recibir notificaciones y no requiere scripts adicionales/etc/udev
.Agregue las siguientes líneas antes de sus líneas de notificación visual, para darle al script una idea sobre en qué pantalla X debe ejecutar
notify-send
(o cualquier otra aplicación X):Por supuesto, debe cambiar la segunda línea de acuerdo con su entorno de escritorio (o administrador de pantalla). Esta línea funciona bien para Ubuntu 16.04 que usa unity como escritorio y lightdm como administrador de pantalla.
(de esta publicación )
fuente