Pergunta interessante. Não existe uma API oficial para descobrir se o menu de mensagens mudou seu estado. Você pode fazer isso observando a interface DBus do indicador-messages-service. Um script de shell é assim:
$ gdbus call --session --dest com.canonical.indicator.messages --object-path /com/canonical/indicator/messages/service --method com.canonical.indicator.messages.service.AttentionRequested
Existe também um sinal " AttentionChanged
". Você pode acompanhar isso para determinar o estado conforme ele é atualizado.
Além disso, se você estiver interessado nos itens individuais no menu de mensagens, todas as informações serão exportadas usando libindicate . É possível ter outro ouvinte de biblioteca no DBus que obtenha todas as informações e agregue-as de uma maneira diferente.