Difference between revisions of "Window manager"
Line 28: | Line 28: | ||
=Window Level= | =Window Level= | ||
− | GNUstep needs arbitrary window levels. EWMH | + | GNUstep needs arbitrary window levels. EWMH defines these two: |
_NET_WM_STATE_ABOVE, ATOM | _NET_WM_STATE_ABOVE, ATOM | ||
_NET_WM_STATE_BELOW, ATOM | _NET_WM_STATE_BELOW, ATOM | ||
+ | |||
+ | The rest depends on the function of a window. To obtain good interoperability between different Desktop Environments, the following layered stacking order is recommended, from the bottom to the top: | ||
+ | # windows of type <tt>_NET_WM_TYPE_DESKTOP</tt> | ||
+ | # windows having state <tt>_NET_WM_STATE_BELOW</tt> | ||
+ | # windows not belonging in any other layer | ||
+ | # windows of type <tt>_NET_WM_TYPE_DOCK</tt> (unless they have state <tt>_NET_WM_TYPE_BELOW</tt>) and windows having state <tt>_NET_WM_STATE_ABOVE</tt> | ||
+ | # focused windows having state <tt>_NET_WM_STATE_FULLSCREEN</tt> |
Revision as of 06:39, 29 March 2007
In Windows and Mac OS X the window manager is tied into the OS. That's not the case for Linux or BSD. Window Maker is the recommended window manager for GNUstep, but a standard feature-set is needed. GNUstep-based applications have additional needs beyond traditional window managers, like handling the dock icon or the menus. Collecting the requirements here will lead to a specification, so any window manager can clearly state whether or not it is GNUstep-compliant.
Backend WM Attributes
Headers/x11/XGServerWindow.h defines
unsigned long flags unsigned long window_style unsigned long window_level unsigned long reserved Pixmap miniaturize_pixmap; // pixmap for miniaturize button Pixmap close_pixmap; // pixmap for close button. Pixmap miniaturize_mask; // miniaturize pixmap mask Pixmap close_mask; // close pixmap mask unsigned long extra_flags;
#define GSWindowStyleAttr (1<<0) #define GSWindowLevelAttr (1<<1) #define GSMiniaturizePixmapAttr (1<<3) #define GSClosePixmapAttr (1<<4) #define GSMiniaturizeMaskAttr (1<<5) #define GSCloseMaskAttr (1<<6) #define GSExtraFlagsAttr (1<<7) #define GSDocumentEditedFlag (1<<0) #define GSWindowWillResizeNotificationsFlag (1<<1) #define GSWindowWillMoveNotificationsFlag (1<<2) #define GSNoApplicationIconFlag (1<<5) #define WMFHideOtherApplications 10 #define WMFHideApplication 12
Window Level
GNUstep needs arbitrary window levels. EWMH defines these two:
_NET_WM_STATE_ABOVE, ATOM _NET_WM_STATE_BELOW, ATOM
The rest depends on the function of a window. To obtain good interoperability between different Desktop Environments, the following layered stacking order is recommended, from the bottom to the top:
- windows of type _NET_WM_TYPE_DESKTOP
- windows having state _NET_WM_STATE_BELOW
- windows not belonging in any other layer
- windows of type _NET_WM_TYPE_DOCK (unless they have state _NET_WM_TYPE_BELOW) and windows having state _NET_WM_STATE_ABOVE
- focused windows having state _NET_WM_STATE_FULLSCREEN