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