大家都知道linux的菜单窗口在任务栏中是没有显示的,而诸如firefox的主窗口这类的窗口,在任务栏中又是可以显示的。这是为什么呢?这篇短文将尝试回答这个问题。首先,讨论3个问题。
1.窗口类型
在X window系统中,窗口的类型有如下几种(这是1.3版本,1.4版本的窗口类型不止这些。请看http://standards.freedesktop.org/wm-spec/1.4/ar01s05.html#id2568975):
DESKTOP
DOCK
TOOLBAR
MENU
UTILITY
SPLASH
DIALOG
NORMAL
可以通过_NET_WM_WINDOW_TYPE得到窗口的类型值,再将这个类型值与下例各值比较来得到窗口的类型。
_NET_WM_WINDOW_TYPE_DESKTOP, ATOM
_NET_WM_WINDOW_TYPE_DOCK, ATOM
_NET_WM_WINDOW_TYPE_TOOLBAR, ATOM
_NET_WM_WINDOW_TYPE_MENU, ATOM
_NET_WM_WINDOW_TYPE_UTILITY, ATOM
_NET_WM_WINDOW_TYPE_SPLASH, ATOM
_NET_WM_WINDOW_TYPE_DIALOG, ATOM
_NET_WM_WINDOW_TYPE_NORMAL, ATOM
2.瞬时窗口
WM