xub*_*tix 24 python unity appmenu application-development
我正在寻找关于如何向非 gtk、非 qt 应用程序添加全局菜单支持的良好文档(示例、教程或指南)。(在 gtk 中,它对主菜单“神奇地”工作......)。我想与它一起使用的工具包是kivy,它支持 glib-mainloop(例如用于 gstreamer),所以原则上都应该在那里工作。
我已经看到了Dbusmenu和这里的 API 参考,但这对理解机制不是很有帮助。
有一个简短的示例用于创建包含 dbus-menu的启动器快速列表,但不包含 global-menu / appmenu。
有一个wiki 页面不包含任何相关信息,除了“欢迎支持其他工具包上的应用程序菜单,但不是 DX 团队的优先事项,需要帮助。”
该图有一些来自指标应用菜单源代码的信息,但还不够,在 developer.ubuntu.com 上找不到,需要更多解释:

所以:
Ted*_*uld 14
一般来说,我建议使用工具包支持的方式将菜单放在全局菜单栏中......但是,我认为此时说服你为时已晚:-) 另外,我会注意到,即使认为我们'在 12.04 中使用 Dbusmenu 和注册目标是移动到 GMenuModel 并在 14.04 之前用其菜单标记窗口,因此这些信息将过时。当然,工具包插件会更新;-)(上次我会尝试,我保证)
涉及的基本原则是我们需要知道哪些菜单与哪些窗口相关联。我们使用 XID 跟踪窗口,菜单是 DBus 上 Dbusmenu 服务器的路径。您将需要这两条信息才能注册。注册界面非常简单,因为您基本上将这两条信息都传递给了注册商。注册商在DBus上的知名名称是com.canonical.AppMenu.Registrar。
对于如何能工作,你可以看看一个例子模拟JSON的应用示例代码是在指标的appmenu。这是一个小工具,它将获取 dbusmenu-dumper(在libdbusmenu-tools 中)输出的 JSON 文件,并创建一个声称拥有该菜单的窗口。它还处理诸如 appmenu 崩溃之类的事情,这对于大多数应用程序来说可能并不是真正需要的(尽管在开发中非常重要:-))。
要创建Dbusmenu 服务器,您基本上只需要分配对象并告诉它在DBus上出现的位置(这样您就可以将位置提供给注册商)。对于像appmenu-gtk这样的插件,我们使用生成的路径来避免冲突,但是如果您正在控制应用程序,您可能可以使用固定路径。然后创建Dbusmenu Menuitem对象的树结构。根目录未显示,但会传递到 Dbusmenu 服务器以启动菜单。根下面的第一级将显示为Ubuntu 菜单栏上的项目。
祝你好运,感谢所有骚扰我回答这个问题的人。我仍然相信您应该使用工具包支持(我撒谎说这是最后一次),但祝您好运!
| 归档时间: |
|
| 查看次数: |
4406 次 |
| 最近记录: |