メニューがウィンドウまたはパネル(AppMenu)に表示されるかどうかをアプリケーションから確認することはできますか?
もちろん、環境がUnityであるかどうかを確認することはできますが、KDEまたは従来のGNOMEでAppMenuを使用する人もいるため、より普遍的な方法を探しています。
私はC言語に適しており、Ubuntu11.10で作業する方法を好みます。
私はここでより良い解決策を見つけました: https://wiki.ubuntu.com/MenuBar#Advertising_the_presence_of_the_menu_bar 。
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;
}
Qtモジュールを具体的に確認する方法がわかりません。 GTKモジュールを探すには、環境変数UBUNTU_MENUPROXYを探すことができます。メニューがアプリケーションに表示される(そして可能であればエクスポートされる)ことを確認したい場合は、APPMENU_DISPLAY_BOTHを1に設定できます。indicator-appmenuホストがメニューを取得しているかどうかを確認したい場合は、既知の名前を探すことができます。 DBusの「com.canonical.AppMenu.Registrar」。存在する場合は、メニューをホストしています。