In a bunch of places, the spec says things like: > If a Pager wants to switch to another virtual desktop, it MUST send > a _NET_CURRENT_DESKTOP client message to the root window:
The use of "MUST" here places severe and unnecessary restrictions on the sorts of extra-EWMH behavior a Pager can implement. It says that a Pager is automatically in violation of the EWMH if it uses any method other than _NET_CURRENT_DESKTOP to switch virtual desktops, even if it knows with absolute certainty that the currently-running Window Manager supports this alternate method. The attached patch changes a number of such "MUST"s and "SHOULD"s to "can". (It also fixes one "SHOULD not" to "SHOULD NOT".) -- Dan
Index: wm-spec.xml =================================================================== RCS file: /cvs/icccm-extensions/wm-spec/wm-spec.xml,v retrieving revision 1.25 diff -u -r1.25 wm-spec.xml --- wm-spec.xml 13 Apr 2006 18:53:08 -0000 1.25 +++ wm-spec.xml 17 Apr 2006 15:49:09 -0000 @@ -403,7 +403,7 @@ <para> The index of the current desktop. This is always an integer between 0 and _NET_NUMBER_OF_DESKTOPS - 1. This MUST be set and updated by the Window -Manager. If a Pager wants to switch to another virtual desktop, it MUST send +Manager. If a Pager wants to switch to another virtual desktop, it can send a _NET_CURRENT_DESKTOP client message to the root window: </para> <programlisting><![CDATA[ @@ -449,7 +449,7 @@ The window ID of the currently active window or None if no window has the focus. This is a read-only property set by the Window Manager. If a Client wants to activate -another window, it MUST send a _NET_ACTIVE_WINDOW client message to the root +another window, it can send a _NET_ACTIVE_WINDOW client message to the root window: </para> <programlisting><![CDATA[ @@ -650,7 +650,7 @@ and a value of zero if the Window Manager is not in this mode. </para> <para> - If a Pager wants to enter or leave the mode, it MUST + If a Pager wants to enter or leave the mode, it can send a _NET_SHOWING_DESKTOP client message to the root window requesting the change: <programlisting><![CDATA[ @@ -672,7 +672,7 @@ _NET_CLOSE_WINDOW ]]></programlisting> <para> - Pagers wanting to close a window MUST send a _NET_CLOSE_WINDOW client + Pagers wanting to close a window can send a _NET_CLOSE_WINDOW client message request to the root window: </para> <programlisting><![CDATA[ @@ -800,7 +800,7 @@ _NET_RESTACK_WINDOW ]]></programlisting> <para> - Pagers wanting to restack a window SHOULD send a _NET_RESTACK_WINDOW client + Pagers wanting to restack a window can send a _NET_RESTACK_WINDOW client message request to the root window: </para> <programlisting><![CDATA[ @@ -833,7 +833,7 @@ <para> A Client whose window has not yet been mapped can request of the Window Manager an estimate of the frame extents it will be given upon -mapping. To retrieve such an estimate, the Client MUST send a +mapping. To retrieve such an estimate, the Client can send a _NET_REQUEST_FRAME_EXTENTS message to the root window. The Window Manager MUST respond by estimating the prospective frame extents and setting the window's _NET_FRAME_EXTENTS property accordingly. The @@ -1084,7 +1084,8 @@ considered set, atoms not present in the list MUST be considered not set. The Window Manager SHOULD honor _NET_WM_STATE whenever a withdrawn window requests to be mapped. A Client -wishing to change the state of a window MUST send a _NET_WM_STATE client +wishing to change the state of a window MUST NOT change this property +directly, but should instead send a _NET_WM_STATE client message to the root window (see below). The Window Manager MUST keep this property updated to reflect the current state of the window. </para> @@ -1206,7 +1207,7 @@ </para> <para> -To change the state of a mapped window, a Client MUST send a _NET_WM_STATE +To change the state of a mapped window, a Client can send a _NET_WM_STATE client message to the root window: </para> <programlisting><![CDATA[ @@ -1342,7 +1343,7 @@ bottom_end_x,CARDINAL[12]/32 ]]></programlisting> <para> -This property MUST be set by the Client if the window is to reserve space at the +This property can be set by the Client to reserve space for the window at the edge of the screen. The property contains 4 cardinals specifying the width of the reserved area at each border of the screen, and an additional 8 cardinals specifying the beginning and end corresponding to each of the four struts. The @@ -1593,7 +1594,7 @@ <para> By using either the Alarm or the Await mechanisms of the XSync extension, the window manager can know when the client has finished -handling the ConfigureNotify events. The window manager SHOULD not +handling the ConfigureNotify events. The window manager SHOULD NOT resize the window faster than the client can keep up. </para> <para>
_______________________________________________ wm-spec-list mailing list wm-spec-list@gnome.org http://mail.gnome.org/mailman/listinfo/wm-spec-list