我想将我的自定义命令添加到窗口系统菜单(通常位于标题栏左上角的菜单,通常包含最小化、最大化等),并在我的应用程序中响应它。在 ms windows 中可以做
HMENU hMenu = GetSystemMenu(hwnd, false);
AppendMenu(hMenu, MF_STRING, ...)
在 X11 下这样的事情可能吗?如果不是通用方法,也许是某些特定窗口管理器的解决方案?
我想将我的自定义命令添加到窗口系统菜单(通常位于标题栏左上角的菜单,通常包含最小化、最大化等),并在我的应用程序中响应它。在 ms windows 中可以做
HMENU hMenu = GetSystemMenu(hwnd, false);
AppendMenu(hMenu, MF_STRING, ...)
在 X11 下这样的事情可能吗?如果不是通用方法,也许是某些特定窗口管理器的解决方案?
好的,在您最后一次编辑之后,我的理解是您希望将自定义菜单添加到由Window Manager控制的窗口装饰上的菜单中。
我不认为这是可能的,尽管我不确定。我相信您应该阅读 ICCCM 和 EWMH 以了解这是否可行:
或者您可以向 wm-spec-list 发送电子邮件询问:
此外,在那里添加一个选项会使其非常隐藏,不是吗?我想大多数人从来没有点击过那个菜单……我什至不认为所有可能的窗口管理器上都存在这个菜单。您真的应该尝试将菜单放在应用程序的 Window 中,而不是 Window Manager 的装饰中。有些环境甚至没有窗口管理器:在这种情况下您的用户会做什么?
请注意,某些应用程序(如 Chromium 浏览器)不使用窗口管理器装饰:它们实现了自己的装饰,它们实现了自己的关闭/最大化/最小化按钮。这样,他们可以完全控制所有装饰按钮和菜单,但他们的装饰与桌面其余部分的“外观和感觉”不同。你可以考虑这样做,但我不鼓励这样做......你应该把你的菜单放在其他地方(它不是那么隐藏......)。
您的意思是要将您的应用程序添加到系统菜单中?
我相信大多数现代桌面环境都实现了 XDG 菜单标准: http ://standards.freedesktop.org/menu-spec/menu-spec-latest.html
您可能也必须学习其他标准:http: //standards.freedesktop.org/
它们都很短,因此阅读和学习的时间不会超过几个小时。