New hints for compositing window managers



Hi,

I want to propose a new set of window manager hints that lets a client
specify that a compositing window manager should extend the window frame
behind the client window.

The _NET_WM_FRAME_OVERLAP hint is intentionally designed to be compatible
with the DwmExtendFrameIntoClientArea API on Windows, to make life easier
for cross platform toolkits and applications.

When I discussed this idea with Carsten Haitzler on IRC a while back,
he convinced me that a single rectangle might not be sufficient for all use
cases.

I've therefore included a _NET_WM_FRAME_CLIP hint for specifying multiple
rectangles. These two hints could be merged, but I think that the
expectations are slightly different. It's less reasonable for the window
manager to draw an inner frame around the rectangles specified in the
property, since they they may form a complex region. Even when they don't,
the client won't know how much space is needed between the rectangles in
order for the window manager to be able to draw the frame.

It's also unlikely that the client wouldn't need to update this property
each time the window is resized. So for these reasons I prefer keeping these
properties separate.

There's also a _NET_FRAME_TEXT_COLOR hint set on the window by the
window manager for use by the client.

These hints provide an interesting contrast to the hints just proposed by
Cody Russell, but they don't conflict or overlap.

Regards,
Fredrik

Index: wm-spec.xml
===================================================================
RCS file: /cvs/icccm-extensions/wm-spec/wm-spec.xml,v
retrieving revision 1.30
diff -u -3 -p -r1.30 wm-spec.xml
--- wm-spec.xml	17 Mar 2008 14:48:05 -0000	1.30
+++ wm-spec.xml	25 Nov 2009 06:25:13 -0000
@@ -1538,6 +1538,58 @@ window's frame.  left, right, top and bo
 respective borders added by the Window Manager.
 	</para>
 	</sect2>
+
+	<sect2><title>_NET_WM_FRAME_OVERLAP</title>
+	<programlisting><![CDATA[  
+_NET_WM_FRAME_OVERLAP, left, right, top, bottom, CARDINAL[4]/32
+]]></programlisting>
+	<para>
+This optional property MAY be set by the client to indicate that the Window
+Manager should extend the frame behind the client window, so that the frame
+can serve as the backdrop for the window contents.
+        </para>
+        <para>
+The four values indicate how far the frame should extend behind the window on
+each side. If all four values are set to -1, the Window Manager MUST extend
+the window frame behind the whole client window. Negative values MUST
+otherwise be interpreted by the Window Manager as if they were zero.
+        </para>
+        <para>
+The Window Manager MAY draw an inner frame around the inner rectangle.
+        </para>
+	</sect2>
+
+	<sect2><title>_NET_WM_FRAME_CLIP</title>
+	<programlisting><![CDATA[  
+_NET_WM_FRAME_CLIP, x, y, width, height, CARDINAL[][4]/32
+]]></programlisting>
+	<para>
+This optional property MAY be set by the client to indicate that the Window
+Manager should extend the window frame behind the whole client window,
+while leaving the rectangles specified in this property transparent.
+        </para>
+        <para>
+If both this property and the _NET_WM_FRAME_OVERLAP property are set,
+the Window Manager MUST ignore the _NET_WM_FRAME_OVERLAP property, and
+use the values in this property instead.
+        </para>
+        </sect2>
+
+        <sect2><title>_NET_FRAME_TEXT_COLOR</title>
+	<programlisting><![CDATA[  
+_NET_FRAME_TEXT_COLOR, CARDINAL/32
+]]></programlisting>
+	<para>
+This property MUST be set by the Window Manager if it supports the
+_NET_WM_FRAME_OVERLAP or _NET_WM_FRAME_CLIP properties.
+        </para>
+        <para>
+This property should be interpreted as an ARGB32 pixel value, and
+is intended to be used by the client as the text color in areas of
+the window where the window frame is used as the background.
+        </para>
+        </sect2>
+
 </sect1>
 <sect1>
 	<title>Window Manager Protocols</title>


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