如何在X下的窗口系统菜单中添加自定义菜单项?

时间:2012-04-30 11:42:31

标签: x11 window-managers

我想将自定义命令添加到窗口系统菜单(通常位于标题栏左上方,通常包含Minimize,Maximize等),并在我的应用程序中对其进行响应。 在ms窗口中,可以做

   HMENU hMenu = GetSystemMenu(hwnd, false);
   AppendMenu(hMenu, MF_STRING, ...)

在X11下是否可以这样?如果不是一般方法可能是某个特定窗口管理器的解决方案?

2 个答案:

答案 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/

他们都不知所措,所以他们不会花费超过几个小时来阅读和学习。