Интересный вопрос. Существует нет официального API для обнаружения, изменилось ли меню сообщений в его состоянии. Вы можете сделать это, посмотрев интерфейс DBus службы индикаторов-сообщений. Способ сценария оболочки выглядит следующим образом:
$ gdbus call --session --dest com.canonical.indicator.messages --object-path /com/canonical/indicator/messages/service --method com.canonical.indicator.messages.service.AttentionRequested
Существует также сигнал «AttentionChanged». Вы можете отслеживать это, чтобы определить состояние при его обновлении.
Кроме того, если вас интересуют отдельные элементы меню обмена сообщениями, вся их информация экспортируется с использованием libindicate. Возможно, у DBus есть еще один слушатель libindicate, который получает всю информацию и сводит его по-другому.