基于 Motif 的窗口管理器 ( Mwm
, Dtwm
, 4Dwm
, 5Dwm
) 允许将自定义菜单项(带有相应的回调)添加到应用程序的窗口菜单中(参见屏幕截图,此处提供要点)。应用程序本身也需要链接-lXm
(至少对于XmAddProtocols()
并且XmAddProtocolCallback()
可用)。
从X Window的角度来看,这是通过客户端设置的几个额外Atom
的 s 来实现的:
_MOTIF_WM_MESSAGES(ATOM) = _MOTIF_WM_OFFSET, CUSTOM_MENU_ACTION_A, CUSTOM_MENU_ACTION_B
WM_PROTOCOLS(ATOM): protocols WM_DELETE_WINDOW, _MOTIF_WM_MESSAGES
_MOTIF_WM_MENU(STRING) = "no-label f.separator\n
Custom\ Menu\ Title f.title\n
XTerm f.exec \"xterm &\"\n
Custom\ Menu\ Action\ A Shift Alt<Key>F1 f.send_msg 393\n
Custom\ Menu\ Action\ B Shift Alt<Key>F2 f.send_msg 394\n"
显然,任何现代EWMH兼容的窗口管理器都不支持此行为。此外,EWMH 规范似乎没有提供任何替代方案。
是否有任何非 Motif 跨 WM 方式来操作窗口菜单(GTK、Qt或Xlib)?