Eu acho que a necessidade aqui é realmente mais determinante da biblioteca python-appindicator estar presente. Se estiver presente, ele suportará todos os casos de fallback de que você precisa. Ele irá lidar com o XFCE, o KDE e o GNOME mais antigo apropriadamente. Bom exemplo de como fazer isso nesta resposta .
A biblioteca do appindicator usará o DBus para verificar se o processo de renderização do indicador do aplicativo está disponível. Este será o caso em Unity, ou se o indicador está em execução. Se estiver disponível, usará isso, se não, ele usará um GtkStatusIcon com o mesmo menu.
Infelizmente, acredito que você teria que manter os dois caminhos de código se quiser lidar com o caso da biblioteca não estar disponível. Porém, ficaríamos felizes em ajudar a obter a biblioteca em outras distros:)