如何解决如何将我程序的菜单栏注册到 KDE Plasma 的全局菜单小部件?
在 Windows 和 macOS 中;我们可以使用操作系统 API 来创建一个窗口并在其上放置一些诸如菜单栏之类的东西。
菜单栏,我的意思是这样的:
现在问题来了:
在 Windows 和 macOS 上;操作系统可以处理渲染和与菜单栏的交互。默认情况下,Windows 在窗口的标题栏下呈现它,而 macOS 默认在顶部栏中呈现它。
在基于 Linux 的操作系统上;我们使用 X11(和wayland)来创建一个窗口。 X11 API 只能创建窗口。因此,我们应该使用 GUI 工具包或从头开始从客户端渲染菜单栏。这意味着窗口管理器和桌面环境对我们的菜单栏一无所知。
但在 KDE plasma 上;有一个 Global Menu
小部件,当它启用时;大多数(不是全部)应用程序不会呈现客户端菜单栏,而是;菜单栏显示在该小部件中。甚至一些非 GTK 和非 QT 应用程序也会这样做,例如 Google Chrome 和 VSCode,它们都基于 Chromium。
我还有一个使用 OpenGL 呈现菜单栏的程序(因为它是一个使用硬件加速 GUI 的游戏编辑器),但我不知道如何将我的菜单栏注册到 KDE plasma 并询问它Will you render menubar and pass interaction events to me or should I do that on my own?
经过一番研究,我发现 Global Menu
正在使用 dbus
传输有关菜单栏的数据。
但我不知道如何从我的程序中做到这一点。
它几乎是从零开始用 C++17 编写的,GUI 由 Dear Imgui Library 提供支持
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。