Como posso registrar todas as ações de envio de notificação?

2

Eu continuo recebendo notificações muito estranhas que desaparecem antes que eu possa lê-las, elas são longas e aparecem aleatoriamente, a mais recente foi durante uma atualização do kernel, ele tinha um ícone estranho e era longo, mas eu não consegui ler porque estava na tela tão brevemente.

Então eu estou querendo saber se existe algum log que registra todas as chamadas para notify-send , que registra o programa chamando-o, e todos os parâmetros fornecidos? Ou se eu posso configurar esse log para descobrir o que essas notificações são sobre? Estou executando o Ubuntu GNOME 15.10 com o GNOME 3.18.

    
por Jacob Vlijm 10.05.2016 / 13:13

1 resposta

2

Mesmo não precisa de um roteiro completo ...
... mas coloque-o na forma de um script:

#!/bin/bash

file=

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 '{}' echo {} >> $file

Para executá-lo

  • Copie o "script" em um arquivo vazio, salve-o como keep_log.sh
  • Execute-o com o arquivo de log como argumento com o comando

    /bin/bash /path/to/keep_log.sh /path/to/log.txt
    

A resposta foi recuperada de uma resposta anterior (não uma dupe), na qual esta aplicação do método foi mencionada como um exemplo.

A resposta que dei lá, por sua vez, foi baseada em esta resposta muito legal, na qual é explicado que o método usa dbus-monitor para interceptar o conteúdo de notify-send. Ao editar o exemplo lá, podemos fazer com que ele grave notify-send messages em um arquivo (log).

Ou mais elegante

... seria adicionar a data ao arquivo de log, produzindo um arquivo de log como:

---di 10 mei 2016 17:37:20 CEST---
SOme kind of a message!
---di 10 mei 2016 17:37:20 CEST---
The last message was misspelled so here i9s another one

Nesse caso, o script seria:

#!/bin/bash

logfile=

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 '{}' \
printf "---$( date )---\n"{}"\n" >> $logfile
    
por Jacob Vlijm 10.05.2016 / 14:20