From bc84ce20c028d238da65f42fecb8494c4d8b5585 Mon Sep 17 00:00:00 2001 From: matthiasc Date: Fri, 6 Sep 2002 23:21:51 +0000 Subject: New draft. --- wm-spec/wm-spec.sgml | 165 +++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 126 insertions(+), 39 deletions(-) (limited to 'wm-spec') diff --git a/wm-spec/wm-spec.sgml b/wm-spec/wm-spec.sgml index 1727454..0961ce4 100644 --- a/wm-spec/wm-spec.sgml +++ b/wm-spec/wm-spec.sgml @@ -1,6 +1,6 @@ - + ]>
@@ -26,10 +26,11 @@ This is &version; of the Extended Window Manager Hints (EWMH) spec, updated &dat This spec defines interactions between window managers, applications, and the utilities that form part of a desktop environment. It builds -on the ICCCM [2], which defines WM (window manager) interactions at a -lower level. The ICCCM does not provide ways to implement many -features that modern desktop users expect. The GNOME and KDE desktop -projects originally developed their own extensions to the ICCCM to +on the Inter-Client Communication Conventions Manual ICCCM, which defines +window manager interactions at a lower level. The ICCCM does not provide ways +to implement many features that modern desktop users expect. The GNOME and KDE +desktop projects originally developed their own extensions to the ICCCM to support these features; this spec replaces those custom extensions with a standardized set of ICCCM additions that any desktop environment can adopt. @@ -46,7 +47,7 @@ interpreted as described in RFC 2119. The key words "Window Manager" refer to a window manager which is adopting this specification. "Pager" refers to desktop utility applications, including pagers and taskbars. "Application" refers to other clients. "Clients" refers -to Pagers + Applications ie. all X clients, except for the Window Manager. +to Pagers and Applications ie. all X clients, except for the Window Manager. @@ -260,7 +261,7 @@ argument). - Root Window Properties (+Related Messages) + Root Window Properties (and Related Messages) Whenever this spec speaks about sending a message to the root window, it is understood that the client is supposed to create @@ -390,7 +391,9 @@ _NET_CURRENT_DESKTOP _NET_DESKTOP_NAMES, UTF8_STRING[] ]]> -The names of all virtual desktops. This is a list of NULL-terminated strings in UTF-8 [1] encoding. This property MAY be changed by a Pager or the Window Manager at any time. +The names of all virtual desktops. This is a list of NULL-terminated strings in + UTF-8 encoding UTF8. This property MAY be + changed by a Pager or the Window Manager at any time. Note: The number of names could be different from _NET_NUMBER_OF_DESKTOPS. @@ -631,7 +634,37 @@ The Window Manager MUST then attempt to close the window specified. Rationale: A Window Manager might be more clever than the usual method (send WM_DELETE message if the protocol is selected, XKillClient otherwise). It might introduce a timeout, for example. Instead of duplicating the code, the Window Manager can easily do the job. - _NET_WM_MOVERESIZE + + _NET_MOVERESIZE_WINDOW + + + Pagers wanting to move or resize a window may send a + _NET_MOVERESIZE_WINDOW client message request to the root window + instead of using a ConfigureRequest. + + + Window Managers should treat a _NET_MOVERESIZE_WINDOW message exactly + like a ConfigureRequest (in particular, adhere to the ICCCM rules about + synthetic ConfigureNotify events), except that they should use the + gravity specified in the message. + + + Rationale: Using a _NET_MOVERESIZE_WINDOW message with StaticGravity + allows Pagers to exactly position and resize a window including its + decorations without knowing the size of the decorations. + + + _NET_WM_MOVERESIZE An implementation MAY add new atoms to this list. Implementations @@ -930,27 +964,34 @@ be in the _NET_WM_STATE_HIDDEN state. Pagers and similar applications should use _NET_WM_STATE_HIDDEN instead of WM_STATE to decide whether to display a window in miniature representations of the windows on a desktop. - + -Implementation note: if an application asks to toggle -_NET_WM_STATE_HIDDEN the window manager should probably just ignore +Implementation note: if an Application asks to toggle +_NET_WM_STATE_HIDDEN the Window Manager should probably just ignore the request, since _NET_WM_STATE_HIDDEN is a function of some other aspect of the window such as minimization, rather than an independent state. - - -_NET_WM_STATE_FULLSCREEN indicates that the window should fill the entire screen -and have no window decorations. For example, a presentation program would use -this hint. +_NET_WM_STATE_FULLSCREEN indicates that the window should fill the entire + screen and have no window decorations. For example, a presentation + program would use this hint. -_NET_WM_STATE_FLOATING indicates that the window should be on top of other -windows of the same type. Applications should not set this hint -if _NET_WM_WINDOW_TYPE already conveys the exact nature of the window. -Windows in this state would typically appear above other windows of the same -_NET_WM_WINDOW_TYPE. +_NET_WM_STATE_ABOVE indicates that the window should be on top of most +windows (see for details). + + + +_NET_WM_STATE_BELOW indicates that the window should be below most +windows (see for details). + + + + _NET_WM_STATE_ABOVE and _NET_WM_STATE_BELOW are mainly meant for user + preferences and should not be used by applications e.g. for drawing + attention to their dialogs (the Urgency + hint should be used in that case, see ).' @@ -993,6 +1034,7 @@ Possible atoms are: +_NET_WM_ACTION_MINIMIZE indicates that the window may be iconified. + + _NET_WM_ACTION_SHADE indicates that the window may be shaded. @@ -1044,7 +1089,7 @@ _NET_WM_ACTION_MAXIMIZE_VERT indicates that the window may be maximized vertical _NET_WM_ACTION_FULLSCREEN indicates that the window may be brought to - fullscreen mode. + fullscreen state. _NET_WM_ACTION_CHANGE_DESKTOP indicates that the window may be moved between desktops. @@ -1287,7 +1332,8 @@ document offers the following clarifications: Window managers MUST honour the win_gravity field of WM_NORMAL_HINTS - for both MapRequest _and_ ConfigureRequest events [1] + for both MapRequest _and_ ConfigureRequest events (ICCCM Version 2.0, + §4.1.2.3 and §4.1.5) Applications are free to change their win_gravity setting at any time @@ -1305,7 +1351,7 @@ corner of the frame. When generating synthetic ConfigureNotify events, the position given MUST be the top-left corner of the client window in relation to the - origin of the root window (i.e., ignoring win_gravity) [2] + origin of the root window (i.e., ignoring win_gravity) (ICCCM Version 2.0, §4.2.3) XMoveWindow(w,x,y) behaviour depends on the window gravity. Upon receiving a @@ -1460,12 +1506,6 @@ initial window's width should be taken into consideration, as if it was the frame for this window. - -[1] ICCCM Version 2.0, §4.1.2.3 and §4.1.5 - - -[2] ICCCM Version 2.0, §4.2.3 - Window-in-Window MDI @@ -1522,16 +1562,56 @@ int net_get_hostname (char *buf, size_t maxlen) ]]> + + + Stacking order + + To obtain good interoperability between different Desktop Environments, + the following layered stacking order is recommended, from the bottom: + + 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 + + + + Windows that are transient for another window should be kept + above this window. + + + The window manager may choose to put some windows in different + stacking position, for example to allow user to bring currently active + window to the top and return it back when the window looses focus. + + References - -[1] F. Yergeau,"UTF-8, a transformation format of ISO 10646", RFC 2279 + + + [UTF8] + + + F. Yergeau,"UTF-8, a transformation format of ISO 10646", RFC 2279 - -[2] David Rosenthal / Stuart W. Marks "Inter-Client Communication Conventions - Manual (Version 2.0)", X Consortium Standard, X Version 11, Release 6.3 + + + + [ICCCM] + + + David Rosenthal and Stuart W. Marks, "Inter-Client Communication + Conventions Manual (Version 2.0)", X Consortium Standard, X Version 11, + Release 6.3 + + + Copyright @@ -1632,8 +1712,15 @@ OR OTHER DEALINGS IN THE SOFTWARE. Added _NET_SHOWING_DESKTOP. - Added _NET_WM_STATE_FLOATING. - + Added _NET_WM_STATE_ABOVE and _NET_WM_STATE_BELOW and a recommended layered + stacking order. + + + Added _NET_MOVERESIZE_WINDOW. + + + Improve markup of citations. + -- cgit v1.2.3-70-g09d2