答案1
是的,尽管手工构建的绑定不会公开它,但您必须使用 GObject Introspected 绑定才能做到这一点。不幸的是,目前还没有使用这些的教程。
为此,您需要获取 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()
。还有DbusMenu 的 API 文档。
答案2
您始终可以获取桌面文件来运行脚本,然后使用该脚本根据某些已保存的文件或其他指示来选择所需的操作。