Uso o Linux Mint 13 MATE e estou tentando configurar notificações ao conectar / desconectar dispositivos.
Primeiro, encontrei o pacote udev-notify , mas infelizmente ele quase não funciona para mim: funciona por muito pouco tempo (1-2 minutos) e, em seguida, se eu conectar / desconectar qualquer dispositivo, ele trava:
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
Não encontrei nenhuma solução, então tive que removê-la. ( relatório de bug arquivado também)
Surpreendentemente, não há utilitários semelhantes que encontrei até agora. Então tentei escrever regras do udev que deveriam corresponder a todos os dispositivos. Eu adicionei um novo arquivo /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"
E dois scripts:
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, mas funciona muito burro. Minhas perguntas são:
- Como obter o título real do dispositivo conectado, o mesmo que posso ver na
lsusb
saída? No momento, recebi notificações como "plugado" e "não conectado" e não consigo encontrar como recuperar o nome do dispositivo na minha regra do udev (se eu puder, o passaria para o meu script como um parâmetro) - Atualmente, muitas notificações estão ativadas. Digamos, quando eu conecto meu pendrive, recebo cerca de 15 notificações! Mas, se eu executar
lsusb
, o pendrive USB é exibido como apenas um dispositivo. Então, parece que devo adicionar mais algum argumento ao filtro de regras, mas não consigo descobrir. - Provavelmente, existe alguma solução melhor para notificações de plugues / desconectados de dispositivos? Por favor, sugira se você souber alguma coisa.
fonte
pyudev
para ser notificado e não requer scripts extras/etc/udev
.Adicione as seguintes linhas antes das suas linhas de notificação visual, para dar ao script uma idéia sobre em qual tela X ele deve executar o
notify-send
(ou qualquer outro aplicativo X):Obviamente, você deve alterar a segunda linha de acordo com o ambiente da área de trabalho (ou gerenciador de exibição). Essa linha funciona bem para o Ubuntu 16.04 que usa a unidade como desktop e o lightdm como gerenciador de exibição.
( deste post )
fonte