Em geral, eu recomendo usar as maneiras suportadas pelo kit de ferramentas para colocar menus na barra de menu global ... mas, estou assumindo que é tarde demais para convencê-lo neste ponto :-) Além disso, vou observar que Mesmo achando que estamos usando o Dbusmenu e o registro em 12.04, o objetivo é passar para o GMenuModel e marcar a janela com seus menus por 14.04, então essa informação será datada. É claro, os plug-ins do kit de ferramentas serão atualizados ;-) (da última vez eu tentarei, prometo)
O princípio básico envolvido é que precisamos saber quais menus estão associados a qual janela. Nós rastreamos a janela usando seu XID e os menus são um caminho para o Servidor Dbusmenu no DBus. Você precisará dessas duas informações para se registrar. A interface de registro é bem simples em que você basicamente passa essas duas informações para o registrador. O nome conhecido do registrador no DBus é com.canonical.AppMenu.Registrar .
Para um exemplo de como isso pode funcionar, você pode olhar para o mock-json-app sample code que está em indicador-appmenu . Esta é uma pequena ferramenta que pegará a saída do arquivo JSON do dbusmenu-dumper (que está em libdbusmenu-tools ) e fazer uma janela que diz ter esse menu. Ele também lida com coisas como o appmenu falhando, o que pode não ser realmente necessário para a maioria das aplicações (embora seja realmente importante no desenvolvimento :-)).
Para criar um Servidor Dbusmenu basicamente você só precisa para alocar o objeto e dizer onde ele deve aparecer no DBus (para que você possa fornecer o local ao registrador). Para plugins como appmenu-gtk usamos um caminho gerado para que não haja conflito, mas se você estiver controlando o aplicativo, você pode provavelmente use um caminho fixo. Então você cria uma estrutura em árvore de objetos Dbusmenu Menuitem . A raiz não é mostrada, mas é passou para o Servidor Dbusmenu para iniciar os menus. O primeiro nível abaixo da raiz será mostrado como itens na barra de menus do Ubuntu .
Boa sorte, obrigado a todas as pessoas que me assediaram para responder a esta pergunta. Eu ainda acredito que você deveria usar o suporte do kit de ferramentas (eu menti sobre ser a última vez), mas boa sorte!