Olivier Chapuis <[EMAIL PROTECTED]> 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>
_______________________________________________ wm-spec-list mailing list wm-spec-list@gnome.org http://mail.gnome.org/mailman/listinfo/wm-spec-list