Encontrei uma solução melhor aqui: link .
É possível verificar no aplicativo se o menu será exibido na janela ou no painel (AppMenu)?
Posso verificar se o ambiente é Unity, mas algumas pessoas usam o AppMenu no KDE ou no GNOME clássico, então estou procurando uma maneira mais universal.
Eu prefiro uma maneira adequada para linguagem C e trabalhando no Ubuntu 11.10.
Encontrei uma solução melhor aqui: link .
Aqui está uma resposta mais completa que funciona em qualquer distribuição Linux:
static int menu_proxy = -1;
typedef void *(*KVoidPtoF)();
void *proxylib;
KVoidPtoF gtk_menu_proxy_get;
menu_proxy = 0;
proxylib = dlopen("libappmenu.so", RTLD_NOLOAD | RTLD_LAZY);
if (proxylib)
{
gtk_menu_proxy_get = (KVoidPtoF)dlsym(proxylib,
"ubuntu_menu_proxy_get");
if (gtk_menu_proxy_get && (*gtk_menu_proxy_get)() != 0)
menu_proxy = 1;
}
Não sei como verificar o módulo Qt especificamente. Para procurar o módulo GTK, você pode procurar a variável de ambiente UBUNTU_MENUPROXY. Se você quiser garantir que os menus apareçam nos aplicativos (e sejam exportados, se possível), você poderá definir APPMENU_DISPLAY_BOTH como 1. Se quiser ver se o host indicador-appmenu está usando menus, procure o nome bem conhecido. "com.canonical.AppMenu.Registrar" no DBus. Se existir, está hospedando menus.