over-MUSTiness in the spec



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>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]