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