Como interceptar (matar) somente notificações específicas, usando dbus-monitor
Você pode matar automaticamente mensagens específicas se tiver uma cadeia de identificação específica, que ocorre no texto da notificação. Neste caso, "update" provavelmente fará.
Como configurar
-
Copie o script abaixo em um arquivo vazio:
#!/bin/bash
string=$1
match="update"
if [[ $string == *$match* ]]
then
pkill notify-osd
fi
Salve como killnot.sh
. Isso matará notify-osd
se uma determinada string ocorrer na notificação. Edite a linha match="update"
para refletir a string de identificação na (s) notificação (ões) que você deseja matar. Torne o script executável .
-
Copie o script abaixo em um arquivo vazio:
#!/bin/bash
scriptpath=/home/jacob/Bureaublad/killnot.sh
dbus-monitor "interface='org.freedesktop.Notifications'" | \
grep --line-buffered "string" | \
grep --line-buffered -e method -e ":" -e '""' -e urgency -e notify -v | \
grep --line-buffered '.*(?=string)|(?<=string).*' -oPi | \
grep --line-buffered -v '^\s*$' | \
xargs -I '{}' $scriptpath {}
Edite a linha scriptpath=/home/jacob/Bureaublad/killnot.sh
para refletir o caminho real para o script 1 ( killnot.sh
) e salve-o como monitor_notifs.sh
. Torne o script executável .
-
Teste a configuração pelo comando:
/path/to/monitor_notifs.sh
Para testar, execute em outro terminal o comando:
notify-send <identifying_string>
A montagem não deve aparecer.
-
Se tudo funcionar bem, adicione-o aos seus aplicativos de inicialização: Dash > Aplicativos de inicialização > Adicionar. Adicione o comando:
/path/to/monitor_notifs.sh
Notas / explicação
O script monitor_notifs.sh
usa dbus-monitor
da mesma forma que esta resposta . Executá-lo em segundo plano significa nada em seu sistema e só dispara notificações.
Essas notificações, quando ocorrem, são passadas como um argumento para o script killnot.sh
, que não faz nada, a menos que a string de identificação esteja no texto da notificação. Nesse caso, ele matará notify-osd
.
Com um pouco de edição do primeiro script, você pode fazer com que a configuração elimine as notificações em várias palavras-chave de uma só vez.
EDIT só executa o comando até que a bolha apareça
Se a notificação aparecer apenas após o login, como você mencionou na sua pergunta, você pode "aperfeiçoar" a solução para matar-se após interceptar o aviso de atualização:
Se você nomeou os scripts na configuração exatamente como indicado, adicione uma linha ao killnot.sh
sript:
pkill -P "$( pgrep -f run_intercept )"
O script então se torna:
#!/bin/bash
string=$1
match="update"
if [[ $string == *$match* ]]
then
pkill notify-osd
pkill -P "$( pgrep -f run_intercept )"
fi
O script principal, run_intercept
, será então eliminado depois que ele fizer seu trabalho e você não tiver mais nenhum script de segundo plano em execução.
Mais perto de limpar você não pode entrar nessa situação.