Re: Interaction between applications and compositing managers
- From: Soeren Sandmann <sandmann daimi au dk>
- To: Olivier Chapuis <olivier chapuis free fr>
- Cc: wm-spec-list gnome org, keith packard intel com
- Subject: Re: Interaction between applications and compositing managers
- Date: 06 Apr 2006 21:20:07 +0200
Olivier Chapuis <olivier chapuis free fr> writes:
> Yes maybe. But IMHO override-redirect window should not be used for
> notification or I do not understand the type of notification
> you talk about. Any way this is not important for a preliminary
> discussion.
The notifications I am talking are the bubbles that might emerge from
the panel to inform you that the battery is dying, or that the printer
is out of paper etc., etc.,
I have attached a draft extension to the wm-spec, in the form of a
patch agains CVS HEAD.
Overview:
- New _NET_WM_UNMANAGED_WINDOW_TYPE property
- New _NET_WM_CM_Sn manager selection for compositing managers
- A recommendation that clients also set WM_TRANSIENT_FOR on override
redirect windows.
Comments appreciated.
Soren
? specdiff
? wm-spec.tex
Index: wm-spec.xml
===================================================================
RCS file: /cvs/icccm-extensions/wm-spec/wm-spec.xml,v
retrieving revision 1.24
diff -u -p -u -r1.24 wm-spec.xml
--- wm-spec.xml 4 Jan 2006 21:25:33 -0000 1.24
+++ wm-spec.xml 6 Apr 2006 19:18:04 -0000
@@ -29,16 +29,16 @@ versions.
<sect2>
<title>What is this spec?</title>
<para>
-This spec defines interactions between window managers, applications,
-and the utilities that form part of a desktop environment. It builds
-on the Inter-Client Communication Conventions Manual <citation><link
- linkend="ICCCM">ICCCM</link></citation>, which defines
-window manager interactions at a lower level. The ICCCM does not provide ways
-to implement many features that modern desktop users expect. The GNOME and KDE
-desktop projects originally developed their own extensions to the ICCCM to
-support these features; this spec replaces those custom extensions
-with a standardized set of ICCCM additions that any desktop
-environment can adopt.
+This spec defines interactions between window managers, compositing
+managers, applications, and the utilities that form part of a desktop
+environment. It builds on the Inter-Client Communication Conventions
+Manual <citation><link linkend="ICCCM">ICCCM</link></citation>, which
+defines window manager interactions at a lower level. The ICCCM does
+not provide ways to implement many features that modern desktop users
+expect. The GNOME and KDE desktop projects originally developed their
+own extensions to the ICCCM to support these features; this spec
+replaces those custom extensions with a standardized set of ICCCM
+additions that any desktop environment can adopt.
</para>
</sect2>
<sect2>
@@ -222,6 +222,20 @@ manipulated within their parent window j
windows on the root window.</para>
</sect2>
<sect2>
+ <title>Override-redirect windows</title>
+ <para>
+Override-redirect windows are ignored by traditional window managers,
+but not by compositing managers. Compositing managers are responsible
+for painting all windows to the screen, including override-redirect
+windows.
+</para>
+ <para>
+To enable compositing managers to decorate override-redirect window
+properly, for example by making them translucent or by changing the
+shape of the windows, this spec allows clients to set properties on
+override-redirect windows indicating the function of the windows.
+</sect2>
+<sect2>
<title>Layered stacking order</title>
<para>
Some window managers keep the toplevel windows not in a single linear stack,
@@ -240,9 +254,11 @@ layer.
<itemizedlist>
<listitem><para>Allow clients to influence their initial state with respect
to maximization, shading, stickiness, desktop, stacking order.</para></listitem>
-<listitem><para>Improve the window managers ability to vary window
+<listitem><para>Improve the window manager's ability to vary window
decorations and maintain the stacking order by allowing clients to hint the
window manager about the type of their windows.</para></listitem>
+<listitem><para>Improve the compositing manager's ability to apply
+decorations and effects to override-redirect 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>
</itemizedlist>
@@ -990,13 +1006,13 @@ displayed as an application is starting
</para>
<para>
_NET_WM_WINDOW_TYPE_DIALOG indicates that this is a dialog window. If
-_NET_WM_WINDOW_TYPE is not set, then windows with WM_TRANSIENT_FOR set MUST
-be taken as this type.
+_NET_WM_WINDOW_TYPE is not set, then managed windows with
+WM_TRANSIENT_FOR set MUST be taken as this type.
</para>
<para>
-_NET_WM_WINDOW_TYPE_NORMAL indicates that this is a normal, top-level window.
-Windows with neither _NET_WM_WINDOW_TYPE nor WM_TRANSIENT_FOR set MUST
-be taken as this type.
+_NET_WM_WINDOW_TYPE_NORMAL indicates that this is a normal, top-level
+window. Managed windows with neither _NET_WM_WINDOW_TYPE nor
+WM_TRANSIENT_FOR set MUST be taken as this type.
</para>
</sect2>
<sect2>
@@ -1532,6 +1548,128 @@ window.
</para>
</sect2>
</sect1>
+
+<sect1>
+ <title>Compositing Managers</title>
+ <para>
+A compositing manager is an X client using the Composite extension to
+redirect all windows to offscreen pixmaps, and the Damage extension to
+track when painting occur on those offscreen pixmaps. It is then the
+responsibility of the compositing manager to paint the pixmaps on the
+screen, possibly adding effects like translucency or deformations.
+</para>
+
+ <para>
+This section specifies interactions between compositing managers
+and applications.
+</para>
+ <sect2>
+ <title>_NET_WM_CM_S<literal>n</literal> Manager Selection</title>
+ <para>
+For each screen they manage, compositing manager MUST acquire
+ownership of a selection named _NET_WM_CM_S<literal>n</literal>, where
+<literal>n</literal> is the screen number. Compositing managers MUST
+comply with the conventions for "Manager Selections" described in
+section 2.8 of the <citation><link linkend="ICCCM">ICCCM</link></citation>.
+</para>
+ </sect2>
+ <sect2>
+ <title>WM_TRANSIENT_FOR for override-redirect windows</title>
+ <para>
+The WM_TRANSIENT_FOR property is defined by the <citation><link
+linkend="ICCCM">ICCCM</link></citation>.for managed windows. This
+specification extends the use of the property to override-redirect
+windows. If an override-redirect is a pop-up on behalf of another
+window, then the Client SHOULD set WM_TRANSIENT_FOR on the
+override-redirect to this other window.
+ </para>
+ <para>
+As an example, a Client should set WM_TRANSIENT_FOR on dropdown menus
+to the toplevel application window containing the menubar.
+ </para>
+ </sect2>
+ <sect2>
+ <title>_NET_WM_UNMANAGED_WINDOW_TYPE window property</title>
+ <programlisting><![CDATA[
+_NET_WM_UNMANAGED_WINDOW_TYPE, ATOM[]/32
+]]></programlisting>
+ <para>
+The _NET_WM_UNMANAGED_WINDOW_TYPE hint is similar to
+_NET_WM_WINDOW_TYPE, but intended to be used on override-redirect
+windows. It SHOULD be set by the Client before mapping the window to
+a list of atoms indicating the functional type. This property SHOULD
+be used by the compositing manager to determine the visual decorations
+applied to the window. The Client SHOULD specify window types in order
+of preference (the first thing being most preferable) but MUST set at
+least one of basic window type atoms from the list below. This is to
+allow for extension of the list of types whilst providing default
+behavior for compositing managers that do not recognize the
+extensions.
+ </para>
+ <para>
+Rationale: Compositing managers are responsible for compositing both
+normal and override-redirect windows onto the screen. For normal
+windows the _NET_WM_WINDOW_TYPE hint describes the type of the window,
+but that hint doesn't apply to override-redirect windows. This hint is
+intended to communicate the function of override-redirect windows so
+that the compositing manager can apply consistent decorations to
+windows of the same type. Possible examples of behavior include
+drawing animations when tooltips are displayed, or making menus
+translucent.
+ </para>
+ <programlisting><![CDATA[
+_NET_WM_UNMANAGED_WINDOW_TYPE_HINT_DROPDOWN_MENU
+_NET_WM_UNMANAGED_WINDOW_TYPE_HINT_POPUP_MENU
+_NET_WM_UNMANAGED_WINDOW_TYPE_HINT_TOOLTIP
+_NET_WM_UNMANAGED_WINDOW_TYPE_HINT_NOTIFICATION
+_NET_WM_UNMANAGED_WINDOW_TYPE_HINT_COMBO
+_NET_WM_UNMANAGED_WINDOW_TYPE_HINT_DND
+_NET_WM_UNMANAGED_WINDOW_TYPE_HINT_NORMAL
+]]></programlisting>
+ <para>
+_NET_WM_UNMANAGED_WINDOW_TYPE_HINT_DROPDOWN_MENU indicates that the
+window in question is a dropdown menu, ie., the kind of menu that
+typically appears when the user clicks on amenubar, as opposed to a
+popup menu which typically appears when the user right clicks on an
+object.
+ </para>
+ <para>
+_NET_WM_UNMANAGED_WINDOW_TYPE_HINT_POPUP_MENU indicates that the
+window in question is a popup menu, ie., the kind of menu that
+typically appears when the user right clicks on an object, as opposed
+to a dropdown menu which typically appears when the user clicks on a
+menubar.
+ </para>
+ <para>
+_NET_WM_UNMANAGED_WINDOW_TYPE_HINT_TOOLTIP indicates that the window
+in question is a tooltip, ie., a short piece of explanatory text that
+typically appear after the mouse cursor hovers over an object for a
+while.
+ </para>
+ <para>
+_NET_WM_UNMANAGED_WINDOW_TYPE_HINT_NOTIFICATION indicates a
+notification. An example of a notification would be a bubble appearing
+with informative text such as "Your laptop is running out of power"
+etc.
+ </para>
+ <para>
+_NET_WM_UNMANAGED_WINDOW_TYPE_COMBO should be used on the windows that
+are popped up by combo boxes. An example is a window that appears
+below a text field with a list of suggested completions.
+ </para>
+ <para>
+_NET_WM_UNMANAGED_WINDOW_TYPE_DND indicates that the window is being
+dragged. Clients should set this hint when the window in question
+contains a representation of an object being dragged from one place to
+another. An example would be a window containing an icon that is being
+dragged from one file manager window to another.
+ </para>
+ <para>
+_NET_WM_UNMANAGED_WINDOW_TYPE_HINT_NORMAL should be used when none of
+the other hints apply.
+ </para>
+ </sect2>
+</sect1>
<sect1>
<title>Implementation notes</title>
<sect2>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]