我的应用程序仅使用纯 X11 API 编写,即没有 GTK、qt 或任何其他中间件。一切都是通过低级 Xlib API 完成的,例如 XCreateWindow() 等等。是否可以从纯 X11 应用程序向 Unity 的全局菜单栏添加项目,或者这是否会迫使我使用 GTK 之类的工具包进行所有窗口和事件循环处理?我真的很想坚持我当前的纯基于 X11 的实现,但如果能以某种方式为我的应用程序向 Unity 的全局菜单栏添加一些菜单项,那就太好了。
问问题
687 次
1 回答
2
要在每次聚焦某个顶级窗口时显示菜单,您需要调用com.canonical.AppMenu.Registrar.RegisterWindow
传递 /com/canonical/AppMenu/Registrar
窗口 id 和菜单路径的方法(您的字符串 id,这也是一个服务名称 - 通常使用一些路径和 win id 构建)。然后,您需要com.canonical.dbusmenu
在该服务名称上实现接口 - 即 、GetLayout
、GetGroupProperties
和Event
方法。AboutToShow
LayoutUpdated
我做了一个简单的库,使用node-dbus和node-x11库在 JavaScript 中实现所有这些。请参阅为其创建顶级窗口和统一菜单的示例(此处没有 glib / libdbus / libx11 依赖项,纯网络)
于 2014-06-19T12:01:15.813 回答