Como detectar se appmenu está ativo?

2

É 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.

    
por Dmitry Shachnev 15.10.2011 / 08:17

3 respostas

1

Encontrei uma solução melhor aqui: link .

    
por Dmitry Shachnev 27.10.2011 / 19:36
2

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;
}
    
por dajoke 14.03.2013 / 01:04
0

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.

    
por Ted Gould 19.10.2011 / 19:19