gpt4 book ai didi

c - 为纯 X11 应用程序向 Unity 的全局菜单栏添加项目

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:19:34 29 4
gpt4 key购买 nike

我的应用程序仅使用纯 X11 API 编写,即没有 GTK、qt 或任何其他中间件。一切都是通过低级 Xlib API 完成的,例如XCreateWindow() 等。是否可以从纯 X11 应用程序向 Unity 的全局菜单栏添加项目,或者这会迫使我使用像 GTK 这样的工具包来处理所有窗口和事件循环吗?我真的很想坚持我当前的纯基于 X11 的实现,但如果能够以某种方式为我的应用程序向 Unity 的全局菜单栏添加一些菜单项,那就太好了。

最佳答案

要在每次聚焦某个顶级窗口时显示菜单,您需要调用 /com/canonical/AppMenu/Registrarcom.canonical.AppMenu.Registrar.RegisterWindow 方法传递窗口 ID 和您的菜单路径(您的字符串 ID,这也是一个服务名称 - 通常使用一些路径和 win id 构建)。然后您需要在该服务名称上实现 com.canonical.dbusmenu 接口(interface) - 即 GetLayoutGetGroupPropertiesEventAboutToShowLayoutUpdated 方法。

我使用 node-dbus 在 JavaScript 中创建了一个简单的库来实现所有这些和 node-x11图书馆。参见 example为它创建顶层窗口和统一菜单(这里没有 glib/libdbus/libx11 依赖项,纯网络)

关于c - 为纯 X11 应用程序向 Unity 的全局菜单栏添加项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24293123/

29 4 0