Eu não sei como fazer isso com o dbus, mas ....
Você pode fazer isso editando os arquivos .desktop, as alterações são automaticamente selecionadas. Deve ser simples o suficiente escrever uma aula para escrever ou editar arquivos .desktop em ~ / .local / share / applications /
O lançador precisa de uma linha de ação em que os nomes da lista rápida sejam definidos, para cada um dos nomes, você precisa de um bloco [Desktop Action name] que contenha as linhas Name e Exec. Está documentado no seu link.
Você só pode ter um nível de profundidade, até onde eu saiba, e não consegui adicionar nada além de lançadores à lista rápida.
Isso tem a vantagem de garantir que os menus estejam disponíveis após a saída do seu programa e na reinicialização.
Aqui está um exemplo que lista vários hosts como itens de submenu do ícone do gnome-terminal.
[Desktop Entry]
Name=Terminal
Comment=Use the command line
Keywords=shell;prompt;command;commandline;
TryExec=gnome-terminal
Exec=gnome-terminal
Icon=utilities-terminal
Type=Application
X-GNOME-DocPath=gnome-terminal/index.html
X-GNOME-Bugzilla-Version=3.16.2
Categories=GNOME;GTK;System;TerminalEmulator;
StartupNotify=true
X-GNOME-SingleWindow=false
OnlyShowIn=GNOME;Unity;
Actions=New;host1;host2
X-Ubuntu-Gettext-Domain=gnome-terminal
[Desktop Action New]
Name=New Terminal
Exec=gnome-terminal
OnlyShowIn=Unity
[Desktop Action host1]
Name=SSH to HOST1
Exec=gnome-terminal -e 'ssh host1' -t 'SSH to host1'
OnlyShowIn=Unity
[Desktop Action host2]
Name=SSH to HOST2
Exec=gnome-terminal -e 'ssh host2' -t 'SSH to host2'
OnlyShowIn=Unity