Я являюсь разработчиком Unity Mail , и мне интересно, можно ли добавить ярлык в меню сообщений из приложения (написано на Python).
Мне нужно подключить его user-display
к функции в приложении. Например, это необходимо для команды «Пометить все как прочитанное».
В спецификации говорится только о статических ярлыках, которые добавляются в файл .desktop:
В самом файле
BLOCKQUOTE>.desktop
приложение может указывать ярлык действия , которые могут быть вызваны независимо от того, запущена ли программа. Синтаксис этих действий определен в ApplicationShortcuts .
Вы всегда можете получить файл рабочего стола для запуска сценария, который вы используете для выбора необходимого действия на основе какого-либо сохраненного файла или другого указания.
Да, хотя созданные вручную привязки не раскрывают его, вам придется использовать для этого интроспективные привязки GObject. К сожалению, пока нет учебника, который бы их использовал.
Для этого вам нужно получить свой IndicateServer и вызвать для него set_menu. Который принимает в качестве параметра Dbusmenu, который вы хотели бы предоставить. Есть много способов сделать это, но позвольте мне дать вам небольшой псевдокод (поскольку я не бегло говорю на Python). Надеемся, что кто-то с правами доступа может помочь.
menuserver = Dbusmenu.Server("/my/unique/path")
root = Dbusmenu.Menuitem()
menuserver.set_root(root)
first = Dbusmenu.Menuitem()
first.property_set("label", "First")
first.connect("item-activated", call_me_on_click)
root.child_append(first)
second = Dbusmenu.Menuitem()
second.property_set("label", "Second")
root.append_child(second)
indicateserver.set_menu(menuserver)
Существуют и другие свойства, которые можно установить в пунктах меню, чтобы делать практически все, что вы хотите. Вы также можете создавать их из меню GTK, если вам удобнее использовать DbusmenuGtk.parse_menu_structure()
. Существует также Документация API для DbusMenu .