Re: Window History Placement



In an attempt to get anywhere wrt. to History Placement, I tried to
figure out what, if anything needs to be added to the EWMH. Is this
agreeable ?

Matthias
Index: wm-spec.sgml
===================================================================
RCS file: /home/freedesktop/wm-spec/wm-spec.sgml,v
retrieving revision 1.28
diff -u -b -B -p -r1.28 wm-spec.sgml
--- wm-spec.sgml	3 Jan 2003 20:29:28 -0000	1.28
+++ wm-spec.sgml	29 Jan 2003 00:36:44 -0000
@@ -234,6 +234,23 @@ layer.
 </para>
 </sect2>
 <sect2>
+<title>Placement Policies</title>
+<para>
+Placement of newly-mapped windows is an area where Window Managers
+have traditionally offered a wide range of policies. Simple policies
+like always using the provided geometry or interactive placement are
+already (partially) covered by the ICCCM. Beyond this most Window
+Managers offer automatic policies like tiling, stacking or various 
+best-fit algorithms. 
+</para>
+<para id="HISTORY">
+More recently, "history placement", i.e. restoring the window to it's last
+known position has been introduced. Unlike most other placement policies, 
+history placement needs a bit of cooperation from the Client to identify 
+which windows are to be considered `the same'. 
+</para>
+</sect2>
+<sect2>
 <title>Scope of this spec</title>
 <para>This spec tries to address the following issues:</para>
 <itemizedlist>
@@ -244,6 +261,7 @@ decorations and maintain the stacking or
 window manager about the type of their windows.</para></listitem>
 <listitem><para>Enable pagers and taskbars to be implemented as separate 
 clients and allow them to work with any compliant window manager.</para></listitem>
+<listitem><para>Support history placement.</para></listitem>
 </itemizedlist>
 <para>This spec doesn't cover any of the following:</para>
 <itemizedlist>
@@ -1205,6 +1223,20 @@ _NET_WM_HANDLED_ICONS
 	for iconified windows. 
 	</para>
     </sect2>
+    <sect2><title>_NET_WM_SAVE_ID</title>
+	<programlisting><![CDATA[
+_NET_WM_SAVE_ID, UTF8_STRING
+]]></programlisting>
+	<para>
+	If this property is set to a non-empty string, the Window Manager
+	will use it to identify this window for the purpose of 
+        <link linkend="HISTORY">history placement</link>. If it is not set,
+	the Window Manager may identify the window by other means (see 
+	<xref linkend="PLACEMENT">).
+	If it is set to the empty string, the Window Manager should not store
+	the location of this window for history placement.
+        </para>
+     </sect2>
 </sect1>
 <sect1>
 	<title>Window Manager Protocols</title>
@@ -1613,6 +1645,28 @@ int net_get_hostname (char *buf, size_t 
 	focus.
       </para>
     </sect2>
+	<sect2 id="PLACEMENT">
+      <title>Placement policies</title>
+      <para>
+	Placement policies must not be applied if the Client specified 
+        USPosition in the WM_NORMAL_HINTS property or if the geometry is
+	restored from a saved session.
+      </para>
+      <para>
+	To identify a window without _NET_WM_SAVE_ID for the purpose of
+        history placement, the Window Manager may use the combination of 
+        WM_CLASS, WM_NAME and WM_WINDOW_ROLE plus an additional tag to
+	differentiate between windows with the same (WM_CLASS, WM_NAME,
+	WM_WINDOW_ROLE) combination. One possibility to generate the tag is to 
+	count the windows with the same combination.
+      </para>
+      <para>
+	Note that restoring a window's size (from history or a saved session)
+        requires to also restore its maximization and fullscreen state &mdash;
+	otherwise maximized windows will be restored to screen-size normal 
+	windows.   
+      </para> 
+      </sect2>
 	</Sect1>
   <Sect1>
     <title>References</title>
@@ -1715,6 +1769,10 @@ and renamed them to columns and row for 
 Change the description of _NET_WM_STATE_MODAL to no longer require apps to 
 break the ICCCM for group-modal windows, but still support the 
 WM_TRANSIENT_FOR=root dialect.
+ 			</para></listitem>
+ 			<listitem><para>
+Added _NET_WM_SAVE_ID to support history placement, together with an
+introductory section and implemenation notes on placement policies.
  			</para></listitem>
 	        </itemizedlist>
             </sect2>


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