Re: Window History Placement
- From: Matthias Clasen <maclas gmx de>
- To: wm-spec-list gnome org
- Subject: Re: Window History Placement
- Date: 29 Jan 2003 02:50:16 +0100
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 —
+ 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]