Aqui está o que eu finalmente tive que recorrer para várias distribuições e a possibilidade de o usuário ter definido uma exceção:
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;
}