Remove ancient 2yr old extended WM spec.

Adding the current draft of the WM spec, version 1.2 (August 19, 2002).

svn path=/trunk/kdebase/kwin/; revision=173009
This commit is contained in:
Karol Szwed 2002-08-21 07:37:55 +00:00
parent 35653960f1
commit 2aa01fd8d4
15 changed files with 4103 additions and 1624 deletions

View file

@ -4,12 +4,18 @@
>Extended Window Manager Hints</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.52"><LINK
CONTENT="Modular DocBook HTML Stylesheet Version 1.72
"><LINK
REL="NEXT"
TITLE="Root Window Properties (+Related Messages)"
HREF="x71.html"></HEAD
TITLE="Non-ICCCM features"
HREF="x24.html"></HEAD
><BODY
CLASS="ARTICLE"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="ARTICLE"
><DIV
@ -20,6 +26,26 @@ CLASS="TITLE"
NAME="AEN2"
>Extended Window Manager Hints</A
></H1
><DIV
CLASS="AUTHORGROUP"
><A
NAME="AEN3"
></A
><H3
CLASS="CORPAUTHOR"
> <A
HREF="http://www.freedesktop.org"
TARGET="_top"
>X Desktop Group</A
>
</H3
></DIV
><SPAN
CLASS="RELEASEINFO"
>DRAFT version 1.2<BR></SPAN
><SPAN
CLASS="DATE"
>August 19, 2002<BR></SPAN
><HR></DIV
><DIV
CLASS="TOC"
@ -29,35 +55,60 @@ CLASS="TOC"
>Table of Contents</B
></DT
><DT
><A
HREF="index.html#AEN5"
>1. <A
HREF="index.html#AEN9"
>Introduction</A
></DT
><DT
><A
HREF="x71.html"
>2. <A
HREF="x24.html"
>Non-ICCCM features</A
></DT
><DT
>3. <A
HREF="x107.html"
>Root Window Properties (+Related Messages)</A
></DT
><DT
><A
HREF="x123.html"
>4. <A
HREF="x208.html"
>Other Root Window Messages</A
></DT
><DT
><A
HREF="x137.html"
>5. <A
HREF="x225.html"
>Application Window Properties</A
></DT
><DT
><A
HREF="x207.html"
>6. <A
HREF="x340.html"
>Window Manager Protocols</A
></DT
><DT
><A
HREF="x216.html"
>7. <A
HREF="x351.html"
>Implementation notes</A
></DT
><DT
>8. <A
HREF="x479.html"
>References</A
></DT
><DT
>9. <A
HREF="x483.html"
>Copyright</A
></DT
><DT
>10. <A
HREF="x489.html"
>Contributors</A
></DT
><DT
>11. <A
HREF="x512.html"
>Change history</A
></DT
></DL
></DIV
><DIV
@ -65,19 +116,19 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="AEN5"
>Introduction</A
NAME="AEN9"
>1. Introduction</A
></H1
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN7"
>What is this spec?</A
NAME="AEN11"
>1.1. Version</A
></H2
><P
>This spec defines interactions between window managers, applications and the utilities that form part of a desktop environment. It builds on the ICCCM, which defines wm/client interactions at a lower level. It was born out of a need to replace the original Gnome WM specification, although this specification has been designed to be independent of any one desktop environment.
>This is DRAFT version 1.2 of the Extended Window Manager Hints (EWMH) spec, updated August 19, 2002.
</P
></DIV
><DIV
@ -85,8 +136,28 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN10"
>Language used in this specification</A
NAME="AEN14"
>1.2. What is this spec?</A
></H2
><P
>This spec defines interactions between window managers, applications,
and the utilities that form part of a desktop environment. It builds
on the ICCCM [2], which defines WM (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.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN17"
>1.3. Language used in this specification</A
></H2
><P
>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
@ -105,155 +176,15 @@ CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN14"
>Changes since 1.9d</A
NAME="AEN21"
>1.4. Prerequisites for adoption of this specification</A
></H2
><P
></P
><UL
><LI
><P
>Added _NET_VIRTUAL_ROOTS
</P
></LI
><LI
><P
>Added note about ICCCM compliant window moves.
</P
></LI
><LI
><P
>Added _NET_WM_HANDLED_ICONS
</P
></LI
><LI
><P
>Added _NET_SUPPORTING_WM_CHECK
</P
></LI
><LI
><P
>Removed degrees of activation
</P
></LI
></UL
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN27"
>Changes since 1.9c</A
></H2
><P
></P
><UL
><LI
><P
>Removed packaging of hints into 2 X properties. Jim Gettys points out that the
performance gains of fewer round trips can be better achieved using Xlib
routines.
</P
></LI
><LI
><P
>Clarified that _NET_DESKTOP_VIEWPORT is in pixels
</P
></LI
><LI
><P
>_NET_DESKTOP_VIEWPORT is now an array, one for each desktop, to allow for
different active viewports on different desktops
</P
></LI
><LI
><P
>_NET_WM_STRUT now only applies on desktops on which the client is visible
</P
></LI
><LI
><P
>Introduced RFC 2119 language, and attempted to clarify the roles of the Window
Manager, Pagers and Applications
</P
></LI
><LI
><P
>Added _NET_WM_NAME
</P
></LI
><LI
><P
>_NET_DESKTOP_NAMES now in UTF8
</P
></LI
><LI
><P
>Desktops now start from 0
</P
></LI
><LI
><P
>Added _NET_WM_PID
</P
></LI
><LI
><P
>Added _NET_WM_PING protocol
</P
></LI
><LI
><P
>Added _NET_WM_STATE_SKIP_TASKBAR
</P
></LI
></UL
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN52"
>Changes since 1.9b</A
></H2
><P
></P
><UL
><LI
><P
>Removed _NET_NUMBER_OF_DESKTOPS client message, as it overlaps unnecessarily with _NET_{INSERT/DELETE}_DESKTOP.</P
></LI
><LI
><P
>Replaced _NET_WM_LAYER and _NET_WM_HINTS with _NET_WM_WINDOW_TYPE functional hint.</P
></LI
><LI
><P
>Changed _NET_WM_STATE to a list of atoms, for extensibility.</P
></LI
><LI
><P
>Expanded description of _NET_WORKAREA and _NET_WM_STRUT.</P
></LI
><LI
><P
>Removed _NET_WM_SIZEMOVE_NOTIFY protocol. </P
></LI
><LI
><P
>Added degrees of activation to _NET_ACTIVE_WINDOW client message</P
></LI
><LI
><P
>Added _NET_WM_ICON</P
></LI
><LI
><P
>My comments are in [[ ]]. Comments from Marko's draft are in [[MM: ]]</P
></LI
></UL
>Window Managers and Clients which aim to fulfil this specification MUST adhere
to the ICCCM on which this specification builds. If this specification
explicitly modifies the ICCCM Window Managers and Clients MUST fulfil these
modifications.
</P
></DIV
></DIV
></DIV
@ -262,6 +193,7 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@ -282,7 +214,8 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x71.html"
HREF="x24.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@ -301,7 +234,7 @@ VALIGN="top"
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Root Window Properties (+Related Messages)</TD
>Non-ICCCM features</TD
></TR
></TABLE
></DIV

627
wm-spec/x107.html Normal file
View file

@ -0,0 +1,627 @@
<HTML
><HEAD
><TITLE
>Root Window Properties (+Related Messages)</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.72
"><LINK
REL="HOME"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Non-ICCCM features"
HREF="x24.html"><LINK
REL="NEXT"
TITLE="Other Root Window Messages"
HREF="x208.html"></HEAD
><BODY
CLASS="SECT1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
></TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x24.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x208.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="AEN107"
>3. Root Window Properties (+Related Messages)</A
></H1
><P
>Whenever this spec speaks about <SPAN
CLASS="QUOTE"
>"sending a message to the root
window"</SPAN
>, it is understood that the client is supposed to create
a ClientMessage event with the specified contents and send it by using
a SendEvent request with the following arguments:
<PRE
CLASS="PROGRAMLISTING"
>destination root
propagate False
event-mask (SubstructureNotify|SubstructureRedirect)
event the specified ClientMessage</PRE
>
</P
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN112"
>3.1. _NET_SUPPORTED</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>_NET_SUPPORTED, ATOM[]/32</PRE
><P
>This property MUST be set by the Window Manager to indicate which hints it
supports. For example: considering _NET_WM_STATE
both this atom and all supported states e.g. _NET_WM_STATE_MODAL,
_NET_WM_STATE_STICKY, would be listed. This assumes that backwards
incompatible changes will not be made to the hints (without being renamed).
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN116"
>3.2. _NET_CLIENT_LIST</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>_NET_CLIENT_LIST, WINDOW[]/32
_NET_CLIENT_LIST_STACKING, WINDOW[]/32</PRE
><P
>These arrays contain all X Windows managed by the Window Manager.
_NET_CLIENT_LIST has initial mapping order, starting with the oldest window.
_NET_CLIENT_LIST_STACKING has bottom-to-top stacking order. These properties
SHOULD be set and updated by the Window Manager.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN120"
>3.3. _NET_NUMBER_OF_DESKTOPS</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>_NET_NUMBER_OF_DESKTOPS, CARDINAL/32</PRE
><P
>This property SHOULD be set and updated by the Window Manager to indicate the
number of virtual desktops.
</P
><P
>A Pager can request change in the desktops number by sending a _NET_NUMBER_OF_DESKTOPS message to the root window:
</P
><PRE
CLASS="PROGRAMLISTING"
>_NET_NUMBER_OF_DESKTOPS
message_type = _NET_NUMBER_OF_DESKTOPS
format = 32
data.l[0] = new_number_of_desktops</PRE
><P
>The Window Manager is free to honor or reject this request. If request is honored _NET_NUMBER_OF_DESKTOPS MUST be set to the new number of desktops, _NET_VIRTUAL_ROOTS MUST be set to store the new number of desktop virtual root window IDs and _NET_DESKTOP_VIEWPORT and _NET_WORKAREA must also be changed accordingly. The _NET_DESKTOP_NAMES property MAY remain unchanged.
</P
><P
>
If the number of desktops is shrinking and _NET_CURRENT_DESKTOP is out of the new range of available desktops, then this MUST be set to the last available desktop from the new set. If number of desktops is shrinking then clients that are still present on desktops, that are out of the new range, MUST be moved to the very last desktop from the new set. For these _NET_WM_DESKTOP MUST be updated.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN128"
>3.4. _NET_DESKTOP_GEOMETRY</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>_NET_DESKTOP_GEOMETRY width, height, CARDINAL[2]/32</PRE
><P
>Array of two cardinals that defines the common size of all desktops.
This property SHOULD be set by the Window Manager.
</P
><P
>A Pager can request a change in the desktop geometry by sending a _NET_DESKTOP_GEOMETRY client
message to the root window:
</P
><PRE
CLASS="PROGRAMLISTING"
>_NET_DESKTOP_GEOMETRY
message_type = _NET_DESKTOP_GEOMETRY
format = 32
data.l[0] = new_width
data.l[1] = new_height</PRE
><P
>The Window Manager MAY choose to ignore this message, in which case _NET_DESKTOP_GEOMETRY property will remain unchanged.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN135"
>3.5. _NET_DESKTOP_VIEWPORT</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>_NET_DESKTOP_VIEWPORT x, y, CARDINAL[][2]/32</PRE
><P
>Array of pairs of cardinals that define the top left corner of each desktops
viewport. For Window Managers that don't support large desktops, this MUST
always be set to (0,0).
</P
><P
>A Pager can request to change the viewport for the current desktop by sending a
_NET_DESKTOP_VIEWPORT client message to the root window:
</P
><PRE
CLASS="PROGRAMLISTING"
>_NET_DESKTOP_VIEWPORT
message_type = _NET_DESKTOP_VIEWPORT
format = 32
data.l[0] = new_vx
data.l[1] = new_vy</PRE
><P
>The Window Manager MAY choose to ignore this message, in which case _NET_DESKTOP_VIEWPORT property will remain unchanged.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN142"
>3.6. _NET_CURRENT_DESKTOP</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>_NET_CURRENT_DESKTOP desktop, CARDINAL/32</PRE
><P
>The index of the current desktop. This is always an integer between 0 and
_NET_NUMBER_OF_DESKTOPS - 1. This MUST be set and updated by the Window
Manager If a Pager wants to switch to another virtual desktop, it MUST send
a _NET_CURRENT_DESKTOP client message to the root window:
</P
><PRE
CLASS="PROGRAMLISTING"
>_NET_CURRENT_DESKTOP
message_type = _NET_CURRENT_DESKTOP
format = 32
data.l[0] = new_index</PRE
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN147"
>3.7. _NET_DESKTOP_NAMES</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>_NET_DESKTOP_NAMES, UTF8_STRING[]</PRE
><P
>The names of all virtual desktops. This is a list of NULL-terminated strings in UTF-8 [1] encoding. This property MAY be changed by a Pager or the Window Manager at any time.
</P
><P
>Note: The number of names could be different from _NET_NUMBER_OF_DESKTOPS.
If it is less than _NET_NUMBER_OF_DESKTOPS - then the desktops with high
numbers are unnamed. If it is larger than _NET_NUMBER_OF_DESKTOPS, then the
excess names outside of the _NET_NUMBER_OF_DESKTOPS are considered to be
reserved in case number of desktops is increased.</P
><P
>Rationale: The name is not a necessary attribute of a virtual desktop. Thus
the availability or unavailability of names has no impact on virtual desktop
functionality. Since names are set by users and users are likely to preset
names for a fixed number of desktops, it doesn't make sense to shrink or grow
this list when the number of available desktops changes.</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN153"
>3.8. _NET_ACTIVE_WINDOW</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>_NET_ACTIVE_WINDOW, WINDOW/32</PRE
><P
>The window ID of the currently active window or None if no window has the focus.
This is a read-only property set by the
Window Manager. If a client (for example, a taskbar) wants to activate
another window, it MUST send a _NET_ACTIVE_WINDOW client message to the root
window:
</P
><PRE
CLASS="PROGRAMLISTING"
>_NET_ACTIVE_WINDOW
window = window to activate
message_type = _NET_ACTIVE_WINDOW
format = 32
data.l[0] = 0 /* may be used later */</PRE
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN158"
>3.9. _NET_WORKAREA</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>_NET_WORKAREA, x, y, width, height CARDINAL[][4]/32
</PRE
><P
>This property MUST be set by WM upon calculating the work area for
each desktop. Contains a geometry for each desktop. These geometries are
specified relative to the viewport on each desktop and specify an area that is
completely contained within the viewport.
Work area SHOULD be used by desktop applications to place desktop icons appropriately.
</P
><P
> The Window Manager SHOULD calculate this space by taking the current page minus space occupied by dock and panel windows, as indicated by the <A
HREF="x225.html#NETWMSTRUT"
>_NET_WM_STRUT</A
> property set on client windows.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN164"
>3.10. _NET_SUPPORTING_WM_CHECK</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>_NET_SUPPORTING_WM_CHECK, WINDOW/32</PRE
><P
>The Window Manager MUST set this property on the root window to be the ID of a
child window created by the WM, to indicate that a compliant WM is
active. The child window MUST also have the _NET_SUPPORTING_WM_CHECK
property set to the ID of the child window. The child window MUST also
have the _NET_WM_NAME property set to the name of the Window Manager.
</P
><P
>Rationale: The child window is used to distinguish an active Window Manager
from a stale _NET_SUPPORTING_WM_CHECK
property that happens to point to another window. If the
_NET_SUPPORTING_WM_CHECK window on the client window is missing
or not properly set, clients SHOULD assume that no conforming
Window Manager is present.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN169"
>3.11. _NET_VIRTUAL_ROOTS</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>_NET_VIRTUAL_ROOTS, WINDOW[]/32</PRE
><P
>To implement virtual desktops, some window managers reparent client windows to
a child of the root window. Window managers using this technique MUST set
this property to a list of IDs for windows that are acting as virtual root
windows. This property allows background setting programs to work with
virtual roots and allows clients to figure out the WM frame windows of their
windows.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN173"
>3.12. _NET_DESKTOP_LAYOUT</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>_NET_DESKTOP_LAYOUT, orientation, x, y, starting_corner CARDINAL[4]/32
#define _NET_WM_ORIENTATION_HORZ 0
#define _NET_WM_ORIENTATION_VERT 1
#define _NET_WM_TOPLEFT 0
#define _NET_WM_TOPRIGHT 1
#define _NET_WM_BOTTOMRIGHT 2
#define _NET_WM_BOTTOMLEFT 3</PRE
><P
> <SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>This property is set by a Pager, not by the Window
Manager.</I
></SPAN
>
When setting this property, the Pager must own a manager selection (as
defined in the ICCCM 2.8). The manager selection is called
<TT
CLASS="LITERAL"
>_NET_DESKTOP_LAYOUT_Sn</TT
> where
<TT
CLASS="LITERAL"
>n</TT
> is the screen number. The purpose of
this property is to allow the Window Manager to know the desktop
layout displayed by the Pager.
</P
><P
> <TT
CLASS="LITERAL"
>_NET_DESKTOP_LAYOUT</TT
> describes the layout of virtual
desktops relative to each other. More specifically, it describes the layout
used by the owner of the manager selection. The Window Manager may use
this layout information or may choose to ignore it.
The property contains four values: the Pager orientation, the number of
desktops in the X direction, the number in the Y direction, and the
starting corner of the Pager.
</P
><P
> Note: In order to interoperate with Pagers implementing an earlier
draft of this document, Window Managers should accept a
<TT
CLASS="LITERAL"
>_NET_DESKTOP_LAYOUT</TT
> property of length 3 and
use <TT
CLASS="LITERAL"
>_NET_WM_TOPLEFT</TT
> as the starting corner in this case.
</P
><P
> The virtual desktops are arranged in a rectangle
with X rows and Y columns. If X times Y does not match the total number of
desktops as specified by
<TT
CLASS="LITERAL"
>_NET_NUMBER_OF_DESKTOPS</TT
>, the highest-numbered
workspaces are assumed to be nonexistent. Either X or Y (but not
both) may be specified as 0 in which case its actual value will be
derived from <TT
CLASS="LITERAL"
>_NET_NUMBER_OF_DESKTOPS</TT
>.
</P
><P
> When the orientation is <TT
CLASS="LITERAL"
>_NET_WM_ORIENTATION_HORZ</TT
>
the desktops are layed out in rows, with the first desktop in the
specified starting corner. So a layout with X=4 and Y=3 starting in
the <TT
CLASS="LITERAL"
>_NET_WM_TOPLEFT</TT
> corner looks like this:
<PRE
CLASS="PROGRAMLISTING"
> +--+--+--+--+
| 0| 1| 2| 3|
+--+--+--+--+
| 4| 5| 6| 7|
+--+--+--+--+
| 8| 9|10|11|
+--+--+--+--+</PRE
>
With starting_corner <TT
CLASS="LITERAL"
>_NET_WM_BOTTOMRIGHT</TT
>, it looks like
this:
<PRE
CLASS="PROGRAMLISTING"
> +--+--+--+--+
|11|10| 9| 8|
+--+--+--+--+
| 7| 6| 5| 4|
+--+--+--+--+
| 3| 2| 1| 0|
+--+--+--+--+</PRE
>
</P
><P
>&#13; When the orientation is <TT
CLASS="LITERAL"
>_NET_WM_ORIENTATION_VERT</TT
>
the layout for X=4 and Y=3 starting in the <TT
CLASS="LITERAL"
>_NET_WM_TOPLEFT</TT
>
corner looks like:
<PRE
CLASS="PROGRAMLISTING"
> +--+--+--+--+
| 0| 3| 6| 9|
+--+--+--+--+
| 1| 4| 7|10|
+--+--+--+--+
| 2| 5| 8|11|
+--+--+--+--+</PRE
>
With starting_corner <TT
CLASS="LITERAL"
>_NET_WM_TOPRIGHT</TT
>, it looks like:
<PRE
CLASS="PROGRAMLISTING"
> +--+--+--+--+
| 9| 6| 3| 0|
+--+--+--+--+
|10| 7| 4| 1|
+--+--+--+--+
|11| 8| 5| 2|
+--+--+--+--+</PRE
>
</P
><P
> The numbers here are the desktop numbers, as for
<TT
CLASS="LITERAL"
>_NET_CURRENT_DESKTOP</TT
>.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN202"
>3.13. _NET_SHOWING_DESKTOP</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>_NET_SHOWING_DESKTOP desktop, CARDINAL/32</PRE
><P
> Some Window Managers have a "showing the desktop" mode in which windows
are hidden, and the desktop background is displayed and focused. If a
Window Manager supports the _NET_SHOWING_DESKTOP hint, it MUST set it
to a value of 1 if the Window Manager is in "showing the desktop" mode,
and a value of zero if the Window Manager is not in this mode.
</P
><P
> If a Pager wants to enter or leave the mode, it MUST
send a _NET_SHOWING_DESKTOP client message to the root window
requesting the change:
<PRE
CLASS="PROGRAMLISTING"
>_NET_SHOWING_DESKTOP
message_type = _NET_SHOWING_DESKTOP
format = 32
data.l[0] = boolean 0 or 1</PRE
>
The Window Manager may choose to ignore this client message.
</P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x24.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x208.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Non-ICCCM features</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Other Root Window Messages</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View file

@ -1,207 +0,0 @@
<HTML
><HEAD
><TITLE
>Other Root Window Messages</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.52"><LINK
REL="HOME"
TITLE="Extended Window Manager Hints"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Root Window Properties (+Related Messages)"
HREF="x71.html"><LINK
REL="NEXT"
TITLE="Application Window Properties"
HREF="x137.html"></HEAD
><BODY
CLASS="SECT1"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Extended Window Manager Hints</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x71.html"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x137.html"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="AEN123"
>Other Root Window Messages</A
></H1
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN125"
>_NET_CLOSE_WINDOW</A
></H2
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>_NET_CLOSE_WINDOW</PRE
></TD
></TR
></TABLE
><P
> Pagers wanting to close a window MUST send a _NET_CLOSE_WINDOW client message request to the root window (type _NET_ACTIVE_WINDOW, format 32, l[0]=0 /*may be used later*/, window should be set to the window to close). The Window Manager MUST then attempt to close the window specified.
</P
><P
> Rationale: A window manager might be more clever than the usual method (send WM_DELETE message if the protocol is selected, XKillClient otherwise). It might introduce a timeout, for example. Instead of duplicating the code, the Window Manager can easily do the job.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN130"
>_NET_WM_MOVERESIZE</A
></H2
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>_NET_WM_MOVERESIZE
window = target app window
message_type = _NET_WM_MOVERESIZE
format = 16
data.s[0] = x_root
data.s[1] = y_root
data.s[2] = direction</PRE
></TD
></TR
></TABLE
><P
> This message allows an application to initiate window movement or resizing. This allows the application to define its own move and size "grips", whilst letting the window manager control the actual move/resize. This means that all moves / resizes can happen in a consistent manner as defined by the WM.
</P
><P
> When sending this message, x_root and y_root SHOULD indicate the position of the mouse click [[PDW: with respect to what?]] and direction MUST indicate whether this is a move or resize event, and if it is a resize event, which edges of the window the size grip applies to.
</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>#define _NET_WM_MOVERESIZE_SIZE_TOPLEFT 0
#define _NET_WM_MOVERESIZE_SIZE_TOP 1
#define _NET_WM_MOVERESIZE_SIZE_TOPRIGHT 2
#define _NET_WM_MOVERESIZE_SIZE_RIGHT 3
#define _NET_WM_MOVERESIZE_SIZE_BOTTOMRIGHT 4
#define _NET_WM_MOVERESIZE_SIZE_BOTTOM 5
#define _NET_WM_MOVERESIZE_SIZE_BOTTOMLEFT 6
#define _NET_WM_MOVERESIZE_SIZE_LEFT 7
#define _NET_WM_MOVERESIZE_MOVE 8 /* Movement only */</PRE
></TD
></TR
></TABLE
><P
> [[PDW: Why do we need to indicate the direction? The WM could guess this from the click position - some WMs (eg. sawmill) have code for doing something similar when you hold eg. Meta + click in the client area... ]]
</P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x71.html"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x137.html"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Root Window Properties (+Related Messages)</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Application Window Properties</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View file

@ -1,562 +0,0 @@
<HTML
><HEAD
><TITLE
>Application Window Properties</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.52"><LINK
REL="HOME"
TITLE="Extended Window Manager Hints"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Other Root Window Messages"
HREF="x123.html"><LINK
REL="NEXT"
TITLE="Window Manager Protocols"
HREF="x207.html"></HEAD
><BODY
CLASS="SECT1"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Extended Window Manager Hints</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x123.html"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x207.html"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="AEN137"
>Application Window Properties</A
></H1
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN139"
>_NET_PROPERTIES</A
></H2
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>_NET_PROPERTIES, ATOM[]/32</PRE
></TD
></TR
></TABLE
><P
>Enables only use of listed properties on this windows. If this property is
set, the Window Manager MUST only handle (XGetWindowProperty) properties
listed here. This property MUST be set by the Client before any other _NET
hints can be used. If this property is set, it MUST also include any ICCCM
client-only (not WM_STATE) hints that are set by the client. If WM_PROTOCOLS
is not listed here, the Window Manager SHOULD assume that it contains exactly
WM_DELETE_WINDOW.
</P
><P
>This is a performance optimization. [[MM: I still have to do a benchmark.]]
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN144"
>_NET_WM_NAME</A
></H2
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>_NET_WM_NAME</PRE
></TD
></TR
></TABLE
><P
>The Client SHOULD set this to the title of the window in UTF8 encoding. If
set, the Window Manager should use this in preference to WM_NAME.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN148"
>_NET_WM_DESKTOP</A
></H2
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>_NET_WM_DESKTOP &#60;desktop&#62;, CARDINAL/32</PRE
></TD
></TR
></TABLE
><P
>Cardinal to determine the desktop the window is in (or wants to be) starting
with 0 for the first desktop. A Client MAY choose not to set this property,
in which case the Window Manager SHOULD place as it wishes. 0xFFFFFFFF
indicates that the window SHOULD appear on all desktops/workspaces.
</P
><P
>The Window Manager should honor _NET_WM_DESKTOP whenever a withdrawn window
requests to be mapped.
</P
><P
>A Client can request a change of desktop for a non-withdrawn window by sending
a _NET_WM_DESKTOP client message to the root window (window is the respective
window, type _NET_WM_DESKTOP, format 32, l[0]=&#60;desktop&#62;)
</P
><P
> The Window Manager MUST keep this property updated on all windows.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN155"
>_NET_WM_WINDOW_TYPE</A
></H2
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>_NET_WM_WINDOW_TYPE, ATOM[]/32</PRE
></TD
></TR
></TABLE
><P
>This MUST be set by the Client before mapping, to a list of atoms indicating
the functional type of the window. This property SHOULD be used by the window
manager in determining the decoration, stacking position and other behaviour
of the window. The Client SHOULD specify window types in order of preference
(the first being most preferable), but MUST include at least one of the basic
window type atoms from the list below. This is to allow for extension of the
list of types, whilst providing default behaviour for window managers that do
not recognise the extensions.
</P
><P
>Rationale: This hint is intend to replace the MOTIF hints. One of the
objections to the MOTIF hints is that they are a purely visual description of
the window decoration. By describing the function of the window, the window
manager can apply consistent decoration and behaviour to windows of the same
type. Possible examples of behaviour include keeping dock/panels on top or
allowing pinnable menus / toolbars to only be hidden when another window has
focus (NextStep style).
</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>_NET_WM_WINDOW_TYPE_DESKTOP, ATOM
_NET_WM_WINDOW_TYPE_DOCK, ATOM
_NET_WM_WINDOW_TYPE_TOOLBAR, ATOM
_NET_WM_WINDOW_TYPE_MENU, ATOM
_NET_WM_WINDOW_TYPE_DIALOG, ATOM
_NET_WM_WINDOW_TYPE_NORMAL, ATOM</PRE
></TD
></TR
></TABLE
><P
>_NET_WM_WINDOW_TYPE_DESKTOP indicates a desktop feature. This can include a
single window containing desktop icons with the same dimensions as the screen,
allowing the desktop environment to have full control of the desktop, without
the need for proxying root window clicks.
</P
><P
>_NET_WM_WINDOW_TYPE_DOCK indicates a dock or panel feature. Typically a
window manager would keep such windows on top of all other windows.
</P
><P
>_NET_WM_WINDOW_TYPE_TOOLBAR and _NET_WM_WINDOW_TYPE_MENU indicate toolbar and
pinnable menu windows, respectively.
</P
><P
>_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.
</P
><P
>_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 are set MUST
be taken as this type.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN166"
>_NET_WM_STATE</A
></H2
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>_NET_WM_STATE, ATOM[]</PRE
></TD
></TR
></TABLE
><P
>A list of hints describing the state window. The Window Manager SHOULD honor
_NET_WM_STATE whenever a withdrawn window requests to be mapped. A Client
wishing to change the state of a window MUST send a _NET_WM_STATE client
message to the root window (see below). The Window Manager MUST keep this
property updated to reflect the current state of the window.
</P
><P
>Possible atoms are:
</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>_NET_WM_STATE_MODAL, ATOM
_NET_WM_STATE_STICKY, ATOM
_NET_WM_STATE_MAXIMIZED_VERT, ATOM
_NET_WM_STATE_MAXIMIZED_HORZ, ATOM
_NET_WM_STATE_SHADED, ATOM
_NET_WM_STATE_SKIP_TASKBAR, ATOM</PRE
></TD
></TR
></TABLE
><P
>_NET_WM_STATE_MODAL indicates that this is a modal dialog box. The
WM_TRANSIENT_FOR hint MUST be set to indicate which window the dialog is a
modal for, or set to the root window if the dialog is a modal for its window
group.
</P
><P
>_NET_WM_STATE_STICKY indicates that the Window Manager SHOULD keep the
window's position fixed on the screen, even when the virtual desktop scrolls.
</P
><P
>_NET_WM_STATE_MAXIMIZED_{VERT,HORZ} indicates that the window is
{vertically,horizontally} maximised.
</P
><P
>_NET_WM_STATE_SHADED indicates that the window is shaded.
</P
><P
>_NET_WM_SKIP_TASKBAR indicates that a window should not be included on a
taskbar.
</P
><P
>To change the state of a mapped window, a Client MUST send a _NET_WM_STATE
client message to the root window (window is the respective window, type
_NET_WM_STATE, format 32, l[0]=&#60;the action, as listed below&#62;,
l[1]=&#60;First property to alter&#62;, l[2]=&#60;Second property to alter&#62;).
This message allows two properties to be changed simultaneously, specifically
to allow both horizontal and vertical maximisation to be altered together.
l[2] MUST be set to zero if only one property is to be changed. l[0], the
action, MUST be one of:
</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>_NET_WM_STATE_REMOVE 0 /* remove/unset property */
_NET_WM_STATE_ADD 1 /* add/set property */
_NET_WM_STATE_TOGGLE 2 /* toggle property */</PRE
></TD
></TR
></TABLE
><P
> See also the implementation notes on <A
HREF="x216.html#URGENCY"
>urgency</A
> and <A
HREF="x216.html#NORESIZE"
>fixed size windows</A
>.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN182"
>_NET_WM_STRUT</A
></H2
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>_NET_WM_STRUT, CARDINAL[4]/32</PRE
></TD
></TR
></TABLE
><P
>This property MUST be set by the Client if the window is to reserve space at
the edge of the screen. The property is a 4-tupel of cardinals, one for each
border of the screen. The order of the borders is left, right, top, bottom.
The client MAY change this property anytime, therefore the Window Manager MUST
watch out for property notify events.
</P
><P
>The purpose of struts is to reserve space at the borders of the desktop. This
is very useful for a docking area, a taskbar or a panel, for instance. The
window manager should know about this reserved space in order to be able to
preserve the space. Also maximized windows should not cover that reserved
space.
</P
><P
>Rationale: A simple "do not cover" hint is not enough for dealing with e.g.
auto-hide panels.
</P
><P
>Notes: An auto-hide panel SHOULD set the strut to be its minimum, hidden size.
A "corner" panel that does not extend for the full length of a screen border
SHOULD only set one strut.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN189"
>_NET_WM_ICON_GEOMETRY</A
></H2
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>_NET_WM_ICON_GEOMETRY, CARDINAL[4]</PRE
></TD
></TR
></TABLE
><P
>An array of x,y,w,h of type CARDINAL, format 32. This optional property MAY
be set by standalone tools like a taskbar or an iconbox. It specifies the
geometry of a possible icon in case the window is iconified.
</P
><P
>Rationale: This makes it possible for a window manager to display a nice
animation like morphing the window into its icon.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN194"
>_NET_WM_ICON</A
></H2
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>_NET_WM_ICON CARDINAL[][2+n]/32</PRE
></TD
></TR
></TABLE
><P
>This is an array of possible icons for the client. This specification does
not stipulate what size these icons should be, but individual desktop
environments or toolkits may do so. The Window Manager MAY scale any of these
icons to an appropriate size.
</P
><P
>This is an array of 32bit packed CARDINAL ARGB with high byte being A, low
byte being B. First two bytes are width, height. Data is in rows, left to
right and top to bottom.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN199"
>_NET_WM_PID</A
></H2
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>_NET_WM_PID CARDINAL/32</PRE
></TD
></TR
></TABLE
><P
>If set, this property MUST contain the process ID of the client owning this
window. This MAY be used by the Window Manager to kill windows which do not
respond to the _NET_WM_PING protocol.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN203"
>_NET_WM_HANDLED_ICONS</A
></H2
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>_NET_WM_HANDLED_ICONS</PRE
></TD
></TR
></TABLE
><P
>This property can be set by clients to indicate that the Window Manager need
not provide icons for iconified windows, for example if the client is a taskbar
and provides buttons for iconified windows.
</P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x123.html"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x207.html"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Other Root Window Messages</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Window Manager Protocols</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

225
wm-spec/x208.html Normal file
View file

@ -0,0 +1,225 @@
<HTML
><HEAD
><TITLE
>Other Root Window Messages</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.72
"><LINK
REL="HOME"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Root Window Properties (+Related Messages)"
HREF="x107.html"><LINK
REL="NEXT"
TITLE="Application Window Properties"
HREF="x225.html"></HEAD
><BODY
CLASS="SECT1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
></TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x107.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x225.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="AEN208"
>4. Other Root Window Messages</A
></H1
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN210"
>4.1. _NET_CLOSE_WINDOW</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>_NET_CLOSE_WINDOW</PRE
><P
> Pagers wanting to close a window MUST send a _NET_CLOSE_WINDOW client
message request to the root window:
</P
><PRE
CLASS="PROGRAMLISTING"
>_NET_CLOSE_WINDOW
window = window to close
message_type = _NET_CLOSE_WINDOW
format = 32
data.l[0] = 0 /* may be used later */</PRE
><P
>The Window Manager MUST then attempt to close the window specified.
</P
><P
> Rationale: A Window Manager might be more clever than the usual method (send WM_DELETE message if the protocol is selected, XKillClient otherwise). It might introduce a timeout, for example. Instead of duplicating the code, the Window Manager can easily do the job.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN217"
>4.2. _NET_WM_MOVERESIZE</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>_NET_WM_MOVERESIZE
window = window to be moved or resized
message_type = _NET_WM_MOVERESIZE
format = 32
data.l[0] = x_root
data.l[1] = y_root
data.l[2] = direction
data.l[3] = button</PRE
><P
> This message allows an application to initiate window movement or
resizing. This allows the application to define its own move and size
"grips", whilst letting the window manager control the actual operation.
This means that all moves/resizes can happen in a consistent manner as
defined by the WM.
</P
><P
> When sending this message in response to a button press event, button
SHOULD indicate the button which was pressed, x_root and y_root MUST
indicate the position of the button press with respect to the root
window and direction MUST indicate whether this is a move or resize
event, and if it is a resize event, which edges of the window the size
grip applies to. When sending this message in response to a key event,
the direction MUST indicate wether this this is a move or resize event
and the other fields are unused.
</P
><PRE
CLASS="PROGRAMLISTING"
>#define _NET_WM_MOVERESIZE_SIZE_TOPLEFT 0
#define _NET_WM_MOVERESIZE_SIZE_TOP 1
#define _NET_WM_MOVERESIZE_SIZE_TOPRIGHT 2
#define _NET_WM_MOVERESIZE_SIZE_RIGHT 3
#define _NET_WM_MOVERESIZE_SIZE_BOTTOMRIGHT 4
#define _NET_WM_MOVERESIZE_SIZE_BOTTOM 5
#define _NET_WM_MOVERESIZE_SIZE_BOTTOMLEFT 6
#define _NET_WM_MOVERESIZE_SIZE_LEFT 7
#define _NET_WM_MOVERESIZE_MOVE 8 /* movement only */
#define _NET_WM_MOVERESIZE_SIZE_KEYBOARD 9 /* size via keyboard */
#define _NET_WM_MOVERESIZE_MOVE_KEYBOARD 10 /* move via keyboard */</PRE
><P
> The Client MUST release all grabs prior to sending such message.
</P
><P
> The Window Manager can use the button field to determine the
events on which it terminates the operation initiated by the
_NET_WM_MOVERESIZE message. Since there is a race condition between
client sending the _NET_WM_MOVERESIZE message and the user releasing
the button, Window Managers are advised to offer some other means to
terminate the operation, e.g. by pressing the ESC key.
</P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x107.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x225.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Root Window Properties (+Related Messages)</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Application Window Properties</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View file

@ -1,231 +0,0 @@
<HTML
><HEAD
><TITLE
>Implementation notes</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.52"><LINK
REL="HOME"
TITLE="Extended Window Manager Hints"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Window Manager Protocols"
HREF="x207.html"></HEAD
><BODY
CLASS="SECT1"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Extended Window Manager Hints</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x207.html"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
>&nbsp;</TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="AEN216"
>Implementation notes</A
></H1
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN218"
>Desktop/workspace model</A
></H2
><P
>This spec assumes a desktop model that consists of one or more completely
independent desktops which may or may not be larger than the screen area.
When a desktop is larger than the screen it is left to the window manager if
it will implement scrolling or paging.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN221"
>File Manager desktop</A
></H2
><P
>This spec suggests implementing the file manager desktop by mapping a
desktop-sized window (no shape) to all desktops, with
_NET_WM_WINDOW_TYPE_DESKTOP. This makes the desktop focusable and greatly
simplifies implementation of the file manager. It is also faster than
managing lots of small shaped windows. The file manager draws the background
on this window. There should be a root property with a window handle for use
in applications that want to draw the background (xearth).
</P
><P
>Several GNOME file manager developers have accepted this model
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN225"
>Implementing enhanced support for application transient windows</A
></H2
><P
>If the WM_TRANSIENT_FOR property is set to None or Root window, the window
should be treated as a transient for all other windows in the same group. It
has been noted that this is a slight ICCCM violation, but as this behaviour is
pretty standard for many toolkits and window managers, and is extremely
unlikely to break anything, it seems reasonable to document it as standard.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="URGENCY"
>Urgency</A
></H2
><P
> Dialog boxes should indicate their urgency level (information or warning) using the urgency bit in the WM_HINTS.flags property, as defined in the ICCCM.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="NORESIZE"
>Fixed size windows</A
></H2
><P
> Windows can indicate that they are non-resizable by setting minheight = maxheight and minwidth = maxwidth in the ICCCM WM_NORMAL_HINTS property. The Window Manager MAY decorate such windows differently.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN234"
>Pagers and Taskbars</A
></H2
><P
> This specification attempts to make reasonable provisions for WM independant pagers and taskbars. Window Managers that require / desire additional functionality beyond what can be acheived using the mechanisms set out in this specification may choose to implement their own pagers, which communicates with the Window Manager using further, WM-specific hints, or some other means.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN237"
>Window Movement</A
></H2
><P
>According to the ICCCM, applications should not see unnecessary differences
between running with or without a window manager. Therefore window movements
for already mapped windows, such as ones requested by XMoveWindow(Display,
Window, X, Y) have to move the window Window to the coordinates (X, Y) and not
cause the window's window manager frame window to end up at (X, Y).
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN240"
>Window-in-Window MDI</A
></H2
><P
> The authors of this specification acknowledge that there is no standard method to allow the Window Manager to manage windows that a part of a Window-in-Window MDI application. Application authors are advised to use some other form of MDI, or to propose a mechanism to be included in the next revision of this specification.
</P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x207.html"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>&nbsp;</TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Window Manager Protocols</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>&nbsp;</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

720
wm-spec/x225.html Normal file
View file

@ -0,0 +1,720 @@
<HTML
><HEAD
><TITLE
>Application Window Properties</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.72
"><LINK
REL="HOME"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Other Root Window Messages"
HREF="x208.html"><LINK
REL="NEXT"
TITLE="Window Manager Protocols"
HREF="x340.html"></HEAD
><BODY
CLASS="SECT1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
></TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x208.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x340.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="AEN225"
>5. Application Window Properties</A
></H1
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN227"
>5.1. _NET_WM_NAME</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>_NET_WM_NAME, UTF8_STRING</PRE
><P
>The Client SHOULD set this to the title of the window in UTF-8 encoding. If
set, the Window Manager should use this in preference to WM_NAME.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN231"
>5.2. _NET_WM_VISIBLE_NAME</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>_NET_WM_VISIBLE_NAME, UTF8_STRING</PRE
><P
>If the Window Manager displays a window name other than _NET_WM_NAME the Window Manager MUST set this to the title displayed in UTF-8 encoding.
</P
><P
>Rationale: For window managers that display a title different from the _NET_WM_NAME or WM_NAME of the window (i.e. xterm &#60;1&#62;, xterm &#60;2&#62;, ... is shown, but _NET_WM_NAME / WM_NAME is still xterm for each window). This property allows taskbars / pagers to display the same title as the window manager.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN236"
>5.3. _NET_WM_ICON_NAME</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>_NET_WM_ICON_NAME, UTF8_STRING</PRE
><P
>The Client SHOULD set this to the title of the icon for this window in UTF-8
encoding. If set, the Window Manager should use this in preference to
WM_ICON_NAME.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN240"
>5.4. _NET_WM_VISIBLE_ICON_NAME</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>_NET_WM_VISIBLE_ICON_NAME, UTF8_STRING</PRE
><P
>If the Window Manager displays an icon name other than _NET_WM_ICON_NAME
the Window Manager MUST set this to the title displayed in UTF-8 encoding.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN244"
>5.5. _NET_WM_DESKTOP</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>_NET_WM_DESKTOP desktop, CARDINAL/32</PRE
><P
>Cardinal to determine the desktop the window is in (or wants to be) starting
with 0 for the first desktop. A Client MAY choose not to set this property,
in which case the Window Manager SHOULD place as it wishes. 0xFFFFFFFF
indicates that the window SHOULD appear on all desktops/workspaces.
</P
><P
>The Window Manager should honor _NET_WM_DESKTOP whenever a withdrawn window
requests to be mapped.
</P
><P
>The Window Manager should remove the property whenever
a window is withdrawn, but it should leave the property in place when it is
shutting down, e.g. in response to losing ownership of the WM_Sn manager
selection.
</P
><P
>Rationale: Removing the property upon window withdrawal helps legacy
applications which want to reuse withdrawn windows. Not removing the property
upon shutdown allows the next Window Manager to restore windows to their
previous desktops.
</P
><P
>A Client can request a change of desktop for a non-withdrawn window by sending
a _NET_WM_DESKTOP client message to the root window:
</P
><PRE
CLASS="PROGRAMLISTING"
>_NET_WM_DESKTOP
window = the respective client window
message_type = _NET_WM_DESKTOP
format = 32
data.l[0] = new_desktop</PRE
><P
> The Window Manager MUST keep this property updated on all windows.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN254"
>5.6. _NET_WM_WINDOW_TYPE</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>_NET_WM_WINDOW_TYPE, ATOM[]/32</PRE
><P
>This SHOULD be set by the Client before mapping, to a list of atoms indicating
the functional type of the window. This property SHOULD be used by the window
manager in determining the decoration, stacking position and other behaviour
of the window. The Client SHOULD specify window types in order of preference
(the first being most preferable), but MUST include at least one of the basic
window type atoms from the list below. This is to allow for extension of the
list of types, whilst providing default behaviour for window managers that do
not recognise the extensions.
</P
><P
>Rationale: This hint is intend to replace the MOTIF hints. One of the
objections to the MOTIF hints is that they are a purely visual description of
the window decoration. By describing the function of the window, the window
manager can apply consistent decoration and behaviour to windows of the same
type. Possible examples of behaviour include keeping dock/panels on top or
allowing pinnable menus / toolbars to only be hidden when another window has
focus (NextStep style).
</P
><PRE
CLASS="PROGRAMLISTING"
>_NET_WM_WINDOW_TYPE_DESKTOP, ATOM
_NET_WM_WINDOW_TYPE_DOCK, ATOM
_NET_WM_WINDOW_TYPE_TOOLBAR, ATOM
_NET_WM_WINDOW_TYPE_MENU, ATOM
_NET_WM_WINDOW_TYPE_UTILITY, ATOM
_NET_WM_WINDOW_TYPE_SPLASH, ATOM
_NET_WM_WINDOW_TYPE_DIALOG, ATOM
_NET_WM_WINDOW_TYPE_NORMAL, ATOM</PRE
><P
>_NET_WM_WINDOW_TYPE_DESKTOP indicates a desktop feature. This can include a
single window containing desktop icons with the same dimensions as the screen,
allowing the desktop environment to have full control of the desktop, without
the need for proxying root window clicks.
</P
><P
>_NET_WM_WINDOW_TYPE_DOCK indicates a dock or panel feature. Typically a
window manager would keep such windows on top of all other windows.
</P
><P
>_NET_WM_WINDOW_TYPE_TOOLBAR and _NET_WM_WINDOW_TYPE_MENU indicate toolbar and
pinnable menu windows, respectively (i.e. toolbars and menus "torn off" from
the main application). Windows of this type may set the WM_TRANSIENT_FOR
hint indicating the main application window.
</P
><P
>_NET_WM_WINDOW_TYPE_UTILITY indicates a small persistent utility window, such as
a palette or toolbox. It is distinct from type TOOLBAR because it does not
correspond to a toolbar torn off from the main application. It's distinct from
type DIALOG because it isn't a transient dialog, the user will probably keep it
open while they're working. Windows of this type may set the WM_TRANSIENT_FOR
hint indicating the main application window.
</P
><P
>_NET_WM_WINDOW_TYPE_SPLASH indicates that the window is a splash screen
displayed as an application is starting up.
</P
><P
>_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.
</P
><P
>_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 are set MUST
be taken as this type.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN267"
>5.7. _NET_WM_STATE</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>_NET_WM_STATE, ATOM[]</PRE
><P
>A list of hints describing the window state. Atoms present in the list MUST be
considered set, atoms not present in the list MUST be considered not set. The
Window Manager SHOULD honor
_NET_WM_STATE whenever a withdrawn window requests to be mapped. A Client
wishing to change the state of a window MUST send a _NET_WM_STATE client
message to the root window (see below). The Window Manager MUST keep this
property updated to reflect the current state of the window.
</P
><P
>The Window Manager should remove the property whenever
a window is withdrawn, but it should leave the property in place when it is
shutting down, e.g. in response to losing ownership of the WM_Sn manager
selection.
</P
><P
>Rationale: Removing the property upon window withdrawal helps legacy
applications which want to reuse withdrawn windows. Not removing the property
upon shutdown allows the next Window Manager to restore windows to their
previous state.
</P
><P
>Possible atoms are:
</P
><PRE
CLASS="PROGRAMLISTING"
>_NET_WM_STATE_MODAL, ATOM
_NET_WM_STATE_STICKY, ATOM
_NET_WM_STATE_MAXIMIZED_VERT, ATOM
_NET_WM_STATE_MAXIMIZED_HORZ, ATOM
_NET_WM_STATE_SHADED, ATOM
_NET_WM_STATE_SKIP_TASKBAR, ATOM
_NET_WM_STATE_SKIP_PAGER, ATOM
_NET_WM_STATE_HIDDEN, ATOM
_NET_WM_STATE_FULLSCREEN, ATOM
_NET_WM_STATE_FLOATING, ATOM</PRE
><P
>An implementation MAY add new atoms to this list. Implementations
without extensions MUST ignore any unknown atoms, effectively removing
them from the list. These extension atoms MUST NOT start with the prefix
_NET.
</P
><P
>_NET_WM_STATE_MODAL indicates that this is a modal dialog box. The
WM_TRANSIENT_FOR hint MUST be set to indicate which window the dialog is a
modal for, or set to the root window if the dialog is a modal for its window
group.
</P
><P
>_NET_WM_STATE_STICKY indicates that the Window Manager SHOULD keep the
window's position fixed on the screen, even when the virtual desktop scrolls.
</P
><P
>_NET_WM_STATE_MAXIMIZED_{VERT,HORZ} indicates that the window is
{vertically,horizontally} maximised.
</P
><P
>_NET_WM_STATE_SHADED indicates that the window is shaded.
</P
><P
>_NET_WM_STATE_SKIP_TASKBAR indicates that the window should not be
included on a taskbar. This hint should be requested by the
application, i.e. it indicates that the window by nature is never
in the taskbar. Applications should not set this hint if
_NET_WM_WINDOW_TYPE already conveys the exact nature of the
window.
</P
><P
>_NET_WM_STATE_SKIP_PAGER indicates that the window should not be
included on a Pager. This hint should be requested by the application,
i.e. it indicates that the window by nature is never in the
Pager. Applications should not set this hint if _NET_WM_WINDOW_TYPE
already conveys the exact nature of the window.
</P
><P
>_NET_WM_STATE_HIDDEN should be set by the window manager to indicate
that a window would not be visible on the screen if its
desktop/viewport were active and its coordinates were within the
screen bounds. The canonical example is that minimized windows should
be in the _NET_WM_STATE_HIDDEN state. Pagers and similar applications
should use _NET_WM_STATE_HIDDEN instead of WM_STATE to decide whether
to display a window in miniature representations of the windows on a
desktop.
<A
NAME="AEN283"
HREF="#FTN.AEN283"
>[1]</A
>
</P
><P
>_NET_WM_STATE_FULLSCREEN indicates that the window should fill the entire screen
and have no window decorations. For example, a presentation program would use
this hint.
</P
><P
>_NET_WM_STATE_FLOATING indicates that the window should be on top of other
windows of the same type. Applications should not set this hint
if _NET_WM_WINDOW_TYPE already conveys the exact nature of the window.
Windows in this state would typically appear above other windows of the same
_NET_WM_WINDOW_TYPE.
</P
><P
>To change the state of a mapped window, a Client MUST send a _NET_WM_STATE
client message to the root window (window is the respective window, type
_NET_WM_STATE, format 32, l[0]=&lt;the action, as listed below&gt;,
l[1]=&lt;First property to alter&gt;, l[2]=&lt;Second property to alter&gt;).
This message allows two properties to be changed simultaneously, specifically
to allow both horizontal and vertical maximisation to be altered together.
l[2] MUST be set to zero if only one property is to be changed. l[0], the
action, MUST be one of:
</P
><PRE
CLASS="PROGRAMLISTING"
>_NET_WM_STATE_REMOVE 0 /* remove/unset property */
_NET_WM_STATE_ADD 1 /* add/set property */
_NET_WM_STATE_TOGGLE 2 /* toggle property */</PRE
><P
> See also the implementation notes on <A
HREF="x351.html#URGENCY"
>urgency</A
> and <A
HREF="x351.html#NORESIZE"
>fixed size windows</A
>.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN292"
>5.8. _NET_WM_ALLOWED_ACTIONS</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>_NET_WM_ALLOWED_ACTIONS, ATOM[]</PRE
><P
>A list of atoms indicating user operations that the window manager supports for
this window. Atoms present in the list indicate allowed actions, atoms not
present in the list indicate actions that are not supported for this window.
The window manager MUST keep this property updated to reflect the
actions which are currently "active" or "sensitive" for a window.
Taskbars, Pagers, and other tools use _NET_WM_ALLOWED_ACTIONS to
decide which actions should be made available to the user.
</P
><P
>Possible atoms are:
</P
><PRE
CLASS="PROGRAMLISTING"
>_NET_WM_ACTION_MOVE, ATOM
_NET_WM_ACTION_RESIZE, ATOM
_NET_WM_ACTION_SHADE, ATOM
_NET_WM_ACTION_STICK, ATOM
_NET_WM_ACTION_MAXIMIZE_HORZ, ATOM
_NET_WM_ACTION_MAXIMIZE_VERT, ATOM
_NET_WM_ACTION_FULLSCREEN, ATOM
_NET_WM_ACTION_CHANGE_DESKTOP, ATOM
_NET_WM_ACTION_CLOSE, ATOM</PRE
><P
>An implementation MAY add new atoms to this list. Implementations
without extensions MUST ignore any unknown atoms, effectively removing
them from the list. These extension atoms MUST NOT start with the prefix
_NET.
</P
><P
>Note that the actions listed here are those that the <SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Window
Manager</I
></SPAN
> will honor for this window. The operations must still be
requested through the normal mechanisms outlined in this specification. For
example, _NET_WM_ACTION_CLOSE does not mean that clients can send a
WM_DELETE_WINDOW message to this window; it means that clients can use a
_NET_CLOSE_WINDOW message to ask the Window Manager to do so.
</P
><P
>Window Managers SHOULD ignore the value of _NET_WM_ALLOWED_ACTIONS when they
initially manage a window. This value may be left over from a previous window
manager with different policies.
</P
><P
>_NET_WM_ACTION_MOVE indicates that the window may be moved around the screen.
</P
><P
>_NET_WM_ACTION_RESIZE indicates that the window may be resized.
(Implementation note: window managers can identify a non-resizable
window because its minimum and maximum size in WM_NORMAL_HINTS will be the same.)
</P
><P
>_NET_WM_ACTION_SHADE indicates that the window may be shaded.
</P
><P
>_NET_WM_ACTION_STICK indicates that the window may have its sticky state
toggled (as for _NET_WM_STATE_STICKY). Note that this state has to do with
viewports, not desktops.
</P
><P
>_NET_WM_ACTION_MAXIMIZE_HORZ indicates that the window may be maximized horizontally.
</P
><P
>_NET_WM_ACTION_MAXIMIZE_VERT indicates that the window may be maximized vertically.
</P
><P
>_NET_WM_ACTION_FULLSCREEN indicates that the window may be brought to
fullscreen mode.
</P
><P
>_NET_WM_ACTION_CHANGE_DESKTOP indicates that the window may be moved between desktops.
</P
><P
>_NET_WM_ACTION_CLOSE indicates that the window may be closed (i.e. a WM_DELETE_WINDOW
message may be sent).
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN311"
>5.9. _NET_WM_STRUT</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>_NET_WM_STRUT, left, right, top, bottom, CARDINAL[4]/32</PRE
><P
>This property MUST be set by the Client if the window is to reserve space at
the edge of the screen. The property contains a 4 cardinals specifying the
width of the reserved area at each border of the screen.
The order of the borders is left, right, top, bottom.
The client MAY change this property anytime, therefore the Window Manager MUST
watch out for property notify events.
</P
><P
>The purpose of struts is to reserve space at the borders of the desktop. This
is very useful for a docking area, a taskbar or a panel, for instance. The
window manager should know about this reserved space in order to be able to
preserve the space. Also maximized windows should not cover that reserved
space.
</P
><P
>Rationale: A simple "do not cover" hint is not enough for dealing with e.g.
auto-hide panels.
</P
><P
>Notes: An auto-hide panel SHOULD set the strut to be its minimum, hidden size.
A "corner" panel that does not extend for the full length of a screen border
SHOULD only set one strut.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN318"
>5.10. _NET_WM_ICON_GEOMETRY</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>_NET_WM_ICON_GEOMETRY, x, y, width, height, CARDINAL[4]/32</PRE
><P
>This optional property MAY be set by standalone tools like a taskbar or an
iconbox. It specifies the geometry of a possible icon in case the window is iconified.
</P
><P
>Rationale: This makes it possible for a window manager to display a nice
animation like morphing the window into its icon.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN323"
>5.11. _NET_WM_ICON</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>_NET_WM_ICON CARDINAL[][2+n]/32</PRE
><P
>This is an array of possible icons for the client. This specification does
not stipulate what size these icons should be, but individual desktop
environments or toolkits may do so. The Window Manager MAY scale any of these
icons to an appropriate size.
</P
><P
>This is an array of 32bit packed CARDINAL ARGB with high byte being A, low
byte being B. First two cardinals are width, height. Data is in rows, left to
right and top to bottom.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN328"
>5.12. _NET_WM_PID</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>_NET_WM_PID CARDINAL/32</PRE
><P
>If set, this property MUST contain the process ID of the client owning this
window. This MAY be used by the Window Manager to kill windows which do not
respond to the _NET_WM_PING protocol.
</P
><P
>If _NET_WM_PID is set, the ICCCM-specified property WM_CLIENT_MACHINE
MUST also be set. While the ICCCM only requests that WM_CLIENT_MACHINE is set
<SPAN
CLASS="QUOTE"
>" to a string that forms the name of the machine running the client as
seen from the machine running the server"</SPAN
> conformance to this
specification requires that WM_CLIENT_MACHINE be set to the fully-qualified domain
name of the client's host.
</P
><P
>See also the implementation notes on <A
HREF="x351.html#KILLINGWINDOWS"
>killing hung processes</A
>.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN336"
>5.13. _NET_WM_HANDLED_ICONS</A
></H2
><PRE
CLASS="PROGRAMLISTING"
>_NET_WM_HANDLED_ICONS</PRE
><P
>This property can be set by clients to indicate that the Window Manager need
not provide icons for iconified windows, for example if the client is a taskbar
and provides buttons for iconified windows.
</P
></DIV
></DIV
><H3
CLASS="FOOTNOTES"
>Notes</H3
><TABLE
BORDER="0"
CLASS="FOOTNOTES"
WIDTH="100%"
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
WIDTH="5%"
><A
NAME="FTN.AEN283"
HREF="x225.html#AEN283"
>[1]</A
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
WIDTH="95%"
><P
>Implementation note: if an application asks to toggle
_NET_WM_STATE_HIDDEN the window manager should probably just ignore
the request, since _NET_WM_STATE_HIDDEN is a function of some other
aspect of the window such as minimization, rather than an independent
state.</P
></TD
></TR
></TABLE
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x208.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x340.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Other Root Window Messages</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Window Manager Protocols</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

496
wm-spec/x24.html Normal file
View file

@ -0,0 +1,496 @@
<HTML
><HEAD
><TITLE
>Non-ICCCM features</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.72
"><LINK
REL="HOME"
HREF="index.html"><LINK
REL="PREVIOUS"
HREF="index.html"><LINK
REL="NEXT"
TITLE="Root Window Properties (+Related Messages)"
HREF="x107.html"></HEAD
><BODY
CLASS="SECT1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
></TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="index.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x107.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="AEN24"
>2. Non-ICCCM features</A
></H1
><P
>There is a number of window management features or behaviours which are
not specified in the ICCCM, but are commonly met in modern Window Managers and Desktop Environments.</P
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN27"
>2.1. Additional States</A
></H2
><P
>The ICCCM allows Window Managers to implement additional window states, which will
appear to clients as substates of NormalState and IconicState. Two
commonly met examples are Maximized and Shaded. A Window Manager may implement these
as proper substates of NormalState and IconicState, or it may treat them
as independent flags, allowing e.g. a maximized window to be iconified
and to re-appear as maximized upon de-iconification.</P
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN30"
>2.1.1. Maximization</A
></H3
><P
>Maximization is a very old feature of Window Managers. There was even a ZoomedState
in early ICCCM drafts. Maximizing a window should give it as much of the
screen area as possible (this may not be the full screen area, but only
a smaller 'workarea', since the Window Manager may have reserved certain areas for other
windows). A Window Manager is expected to remember the geometry of a maximized window
and restore it upon de-maximization. Modern Window Managers typically allow separate
horizontal and vertical maximization.</P
><P
>With the introduction of the Xinerama extension in X11 R6.4, maximization
has become more involved. Xinerama allows a screen to span multiple
monitors in a freely configurable geometry. In such a setting, maximizing
a window would ideally not grow it to fill the whole screen, but only the
monitor it is shown on. There are of course borderline cases for windows
crossing monitor boundaries, and 'real' maximization to the full screen may
sometimes be useful.</P
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN34"
>2.1.2. Shading</A
></H3
><P
>Some Desktop Environments offer shading (also known as rollup) as an alternative to
iconfication. A shaded window typically shows only the titlebar, the client
window is hidden, thus shading is not useful for windows which are not
decorated with a titlebar.</P
></DIV
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN37"
>2.2. Modality</A
></H2
><P
>The Window Manager _TRANSIENT_FOR hint of the ICCCM allows clients to specify that a
toplevel window may be closed before the client finishes. A typical example
of a transient window is a dialog. Some dialogs can be open for a long time,
while the user continues to work in the main window. Other dialogs have to be
closed before the user can continue to work in the main window. This property
is called modality. While clients can implement modal windows in an ICCCM
compliant way using the globally active input model, some Window Managers offer support
for handling modality.</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="LARGEDESKS"
>2.3. Large Desktops</A
></H2
><P
>The Window Manager may offer to arrange the managed windows on a desktop that is
larger than the root window. The screen functions as a viewport on this large
desktop. Different policies regarding the positioning of the viewport on the
desktop can be implemented: The Window Manager may only allow to change the viewport
position in increments of the screen size (paging) or it may allow arbitrary
positions (scrolling).</P
><P
>To fulfill the ICCCM principle that clients should behave the same
regardless wether a Window Manager is running or not, Window Managers which
implement large desktops must interpret all client-provided geometries with
respect to the current viewport.</P
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="LARGEDESKSIMPL"
>2.3.1. Implementation note</A
></H3
><P
>There are two options for implementing a large desktop: The first is to
keep the managed windows (or, if reparenting, their frames) as children
of the root window. Moving the viewport is achieved by moving all managed
windows in the opposite direction.</P
><P
>The second alternative is to reparent all managed windows to a dedicated
large window (somewhat inappropriately called a 'virtual root'). Moving
the viewport is then achieved by moving the virtual root in the opposite
direction.</P
><P
>Both alternatives are completely ICCCM compliant, although the second one
may be somewhat problematic for clients trying to figure out the Window Manager decorations
around their toplevel windows and for clients trying to draw background
images on the root window.</P
></DIV
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN49"
>2.4. Sticky windows</A
></H2
><P
>A Window Manager which implements a large desktop typically offers a way for the user
to make certain windows 'stick to the glass', i.e. these windows will stay
at the same position on the screen when the viewport is moved.</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN52"
>2.5. Virtual Desktops</A
></H2
><P
>Most X servers have only a single screen. The Window Manager may virtualize this
resource and offer multiple so-called 'virtual desktops', of which only one
can be shown on the screen at a time. There is some variation among the
features of virtual desktop implementations. There may be a fixed number
of desktops, or new ones may be created dynamically. The size of the desktops
may be fixed or variable. If the desktops are larger than the root window,
their viewports (see <A
HREF="x24.html#LARGEDESKS"
>Section 2.3</A
>) may be independent or forced to be at the same
position.</P
><P
>A Window Manager which implements virtual desktops generally offers a way for the user
to move clients between desktops. Clients may be allowed to occupy more than
one desktop simultaneously.</P
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN57"
>2.5.1. Implementation note</A
></H3
><P
>There are at least two options for implementing virtual desktops.
The first is to use multiple virtual roots (see <A
HREF="x24.html#LARGEDESKSIMPL"
>Section 2.3.1</A
>) and change the current
desktop by manipulating the stacking order of the virtual roots. This is
completely ICCCM compliant, but has the issues outlined in <A
HREF="x24.html#LARGEDESKSIMPL"
>Section 2.3.1</A
></P
><P
>The second option is to keep all managed windows as children of the root
window and unmap the frames of those which are not on the current
desktop. Unmapped windows should be placed in IconicState, according to
the ICCCM. Windows which are actually iconified or minimized
should have the _NET_WM_STATE_HIDDEN property set, to
communicate to Pagers that the window should not be represented as
"onscreen."</P
></DIV
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN63"
>2.6. Pagers</A
></H2
><P
>A pager offers a different UI for window management tasks. It shows a
miniature view of the desktop(s) representing managed windows by small
rectangles and allows the user to initiate various Window Manager actions by manipulating
these representations. Typically offered actions are activation (see <A
HREF="x24.html#ACTIVATION"
>Section 2.8</A
>),
moving, restacking, iconification, maximization and closing. On a large
desktop, the pager may offer a way to move the viewport. On virtual desktops,
the pager may offer ways to move windows between desktops and to change the
current desktop.</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN67"
>2.7. Taskbars</A
></H2
><P
>A taskbar offers another UI for window management tasks. It typically
represents client windows as a list of buttons labelled with the window
titles and possibly icons. Pressing a button initiates a Window Manager action on the
represented window, typical actions being activation and iconification.
In environments with a taskbar, icons are often considered inappropriate,
since the iconified windows are already represented in the taskbar.</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="ACTIVATION"
>2.8. Activation</A
></H2
><P
>In the X world, activating a window means to give it the input focus.
This may not be possible if the window is unmapped, because it is on a
different desktop. Thus, activating a window may involve additional steps
like moving it to the current desktop (or changing to the desktop the window
is on), deiconifying it or raising it.</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN73"
>2.9. Animated iconification</A
></H2
><P
>Some Window Managers display some form of animation when (de-)iconifying a window.
This may be a line drawing connecting the corners of the window with
the corners of the icon or the window may be opaquely moved and resized
on some trajectory joining the window location and the icon location.</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN76"
>2.10. Window-in-window MDI</A
></H2
><P
>Window-in-window MDI is a multiple document interface known from MS
Windows platforms. Programs employing it have a single top-level window
which contains a workspace which contains the subwindows for the open
documents. These subwindows are decorated with Window Manager frames and can be
manipulated within their parent window just like ordinary top-level
windows on the root window.</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN79"
>2.11. Layered stacking order</A
></H2
><P
>Some Window Managers keep the toplevel windows not in a single linear stack,
but subdivide the stack into several layers. There is a lot of variation
among the features of layered stacking order implementations. The number of
layers may or may not be fixed. The layer of a toplevel window may be explicit
and directly modifyable or derived from other properties of the window, e.g.
the <SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>type</I
></SPAN
> of the window. The stacking order may or may not
be strict, i.e. not allow the user to raise or lower windows beyond their
layer.</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN83"
>2.12. Scope of this spec</A
></H2
><P
>This spec tries to address the following issues:</P
><P
></P
><UL
><LI
><P
>Allow clients to influence their initial state with respect
to maximization, shading, stickyness, desktop, stacking order.</P
></LI
><LI
><P
>Improve the Window Managers ability to vary window
decorations and maintain the stacking order by allowing clients to hint the
Window Manager about the type of their windows.</P
></LI
><LI
><P
>Enable pagers and taskbars to be implemented as separate
clients and allow them to work with any compliant Window Manager.</P
></LI
></UL
><P
>This spec doesn't cover any of the following:</P
><P
></P
><UL
><LI
><P
>Other IPC mechanisms like ICE or Corba.</P
></LI
><LI
><P
>Window Manager configuration.</P
></LI
><LI
><P
>Window Manager documentation.</P
></LI
><LI
><P
>Clients appearing on a proper subset of desktops.</P
></LI
><LI
><P
>Window-in-window MDI.</P
></LI
></UL
><P
>The Window Manager is supposed to be in charge of window management
policy, so that there is consistent behaviour on the user's screen no matter
who wrote the clients.</P
><P
>The spec offers a lot of external control about Window Manager actions.
This is intended mainly to allow pagers, taskbars and similar Window Manager
UIs to be implemented as separate clients. "Ordinary" clients shouldn't use
these except maybe in response to a direct user request (i.e. setting a
config option to start maximized or specifying a -desk n cmdline
argument).</P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x107.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Root Window Properties (+Related Messages)</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View file

@ -4,21 +4,27 @@
>Window Manager Protocols</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.52"><LINK
CONTENT="Modular DocBook HTML Stylesheet Version 1.72
"><LINK
REL="HOME"
TITLE="Extended Window Manager Hints"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Application Window Properties"
HREF="x137.html"><LINK
HREF="x225.html"><LINK
REL="NEXT"
TITLE="Implementation notes"
HREF="x216.html"></HEAD
HREF="x351.html"></HEAD
><BODY
CLASS="SECT1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@ -27,7 +33,7 @@ CELLSPACING="0"
><TH
COLSPAN="3"
ALIGN="center"
>Extended Window Manager Hints</TH
></TH
></TR
><TR
><TD
@ -35,7 +41,8 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x137.html"
HREF="x225.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@ -48,7 +55,8 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x216.html"
HREF="x351.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@ -61,16 +69,16 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="AEN207"
>Window Manager Protocols</A
NAME="AEN340"
>6. Window Manager Protocols</A
></H1
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN209"
>_NET_WM_PING</A
NAME="AEN342"
>6.1. _NET_WM_PING</A
></H2
><P
>This protocol allows the Window Manager to determine if the Client is still
@ -85,23 +93,14 @@ client window.
>A Window Manager can use this protocol at any time by sending a client message
as follows:
</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>type = ClientMessage
window = &#60;client window&#62;
window = the respective client window
message_type = WM_PROTOCOLS
format = 32
data.l[0] = _NET_WM_PING
data.l[1] = &#60;timestamp&#62;</PRE
></TD
></TR
></TABLE
data.l[1] = timestamp</PRE
><P
>A participating Client receiving this message MUST send it back to the root
window immediately, by setting window = root, and calling XSendEvent. The
@ -112,6 +111,12 @@ to uniquely identify the ping.
>The Window Manager MAY kill the Client (using _NET_WM_PID) if it fails to
respond to this protocol within a reasonable time.
</P
><P
>See also the implementation notes on <A
HREF="x351.html#KILLINGWINDOWS"
>killing hung processes</A
>.
</P
></DIV
></DIV
><DIV
@ -119,6 +124,7 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@ -129,7 +135,8 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x137.html"
HREF="x225.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@ -138,6 +145,7 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@ -145,7 +153,8 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x216.html"
HREF="x351.html"
ACCESSKEY="N"
>Next</A
></TD
></TR

648
wm-spec/x351.html Normal file
View file

@ -0,0 +1,648 @@
<HTML
><HEAD
><TITLE
>Implementation notes</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.72
"><LINK
REL="HOME"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Window Manager Protocols"
HREF="x340.html"><LINK
REL="NEXT"
TITLE="References"
HREF="x479.html"></HEAD
><BODY
CLASS="SECT1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
></TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x340.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x479.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="AEN351"
>7. Implementation notes</A
></H1
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN353"
>7.1. Desktop/workspace model</A
></H2
><P
>This spec assumes a desktop model that consists of one or more completely
independent desktops which may or may not be larger than the screen area.
When a desktop is larger than the screen it is left to the window manager if
it will implement scrolling or paging.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN356"
>7.2. File Manager desktop</A
></H2
><P
>This spec suggests implementing the file manager desktop by mapping a
desktop-sized window (no shape) to all desktops, with
_NET_WM_WINDOW_TYPE_DESKTOP. This makes the desktop focusable and greatly
simplifies implementation of the file manager. It is also faster than
managing lots of small shaped windows. The file manager draws the background
on this window. There should be a root property with a window handle for use
in applications that want to draw the background (xearth).
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN359"
>7.3. Implementing enhanced support for application transient windows</A
></H2
><P
>If the WM_TRANSIENT_FOR property is set to None or Root window, the window
should be treated as a transient for all other windows in the same group. It
has been noted that this is a slight ICCCM violation, but as this behaviour is
pretty standard for many toolkits and window managers, and is extremely
unlikely to break anything, it seems reasonable to document it as standard.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="URGENCY"
>7.4. Urgency</A
></H2
><P
> Dialog boxes should indicate their urgency level (information or warning) using the urgency bit in the WM_HINTS.flags property, as defined in the ICCCM.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="NORESIZE"
>7.5. Fixed size windows</A
></H2
><P
> Windows can indicate that they are non-resizable by setting minheight = maxheight and minwidth = maxwidth in the ICCCM WM_NORMAL_HINTS property. The Window Manager MAY decorate such windows differently.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN368"
>7.6. Pagers and Taskbars</A
></H2
><P
> This specification attempts to make reasonable provisions for WM independent pagers and taskbars. Window Managers that require / desire additional functionality beyond what can be achieved using the mechanisms set out in this specification may choose to implement their own pagers, which communicates with the Window Manager using further, WM-specific hints, or some other means.
</P
><P
> Pagers should decide whether to show a miniature version of a
window using the following guidelines:
<P
></P
><UL
><LI
><P
> If either _NET_WM_STATE_SKIP_PAGER or
_NET_WM_STATE_HIDDEN are set on a window, then the
pager should not show that window.
</P
></LI
><LI
><P
> The pager may choose not to display windows with
certain semantic types; this spec has no
recommendations, but common practice is to avoid
displaying _NET_WM_WINDOW_TYPE_DOCK for example.
</P
></LI
><LI
><P
> If the _NET_WM_STATE_SKIP_PAGER and
_NET_WM_STATE_HIDDEN hints are not present, and the
window manager claims to support _NET_WM_STATE_HIDDEN,
then the window should be shown if it's in either
NormalState or IconicState.
</P
></LI
><LI
><P
> For window managers that do not support
_NET_WM_STATE_HIDDEN, the pager should
not show windows in IconicState. These window
managers are probably using an older version
of this specification.
</P
></LI
></UL
>
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN381"
>7.7. Window Movement</A
></H2
><P
>Window manager implementors should refer to the ICCCM for definitive
specifications of how to handle MapRequest and ConfigureRequest events.
However, since these aspects of the ICCCM are easily misread, this
document offers the following clarifications:
</P
><P
></P
><UL
><LI
><P
>Window managers MUST honour the win_gravity field of WM_NORMAL_HINTS
for both MapRequest _and_ ConfigureRequest events [1]
</P
></LI
><LI
><P
>Applications are free to change their win_gravity setting at any time
</P
><P
>If application changes its gravity then Window manager should adjust the
reference point, so that client window will not move as the result.
For example if client's gravity was NorthWestGravity and reference point
was
at the top-left corner of the frame window, then after change of gravity to
the SouthEast reference point should be adjusted to point to the
lower-right
corner of the frame.
</P
></LI
><LI
><P
>When generating synthetic ConfigureNotify events, the position given
MUST be the top-left corner of the client window in relation to the
origin of the root window (i.e., ignoring win_gravity) [2]
</P
></LI
><LI
><P
>XMoveWindow(w,x,y) behaviour depends on the window gravity. Upon receiving a
request from client application the Window Manager calculates a new reference
point, based on the client window's own size, border width and gravity. For given client
window dimentions (width, height) and border width (bw), the reference point will be
placed at:
</P
><DIV
CLASS="INFORMALTABLE"
><A
NAME="AEN394"
></A
><P
></P
><TABLE
BORDER="1"
CLASS="CALSTABLE"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Gravity:</TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>ref_x:</TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>ref_y:</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
>StaticGravity</TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>x</TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>y</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
>NorthWestGravity</TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>x-bw</TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>y-bw</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
>NorthGravity</TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>x+(width/2)</TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>y-bw</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
>NorthEastGravity</TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>x+width+bw</TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>y-bw</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
>EastGravity</TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>x+width+bw</TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>y+(height/2)</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
>SouthEastGravity</TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>x+width+bw</TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>y+height+bw</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
>SouthGravity</TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>x+(width/2)</TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>y+height+bw</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
>SouthWestGravity</TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>x-bw</TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>y+height+bw</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
>WestGravity</TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>x-bw</TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>y+(height/2)</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
>CenterGravity</TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>x+(width/2)</TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>y+(height/2)</TD
></TR
></TBODY
></TABLE
><P
></P
></DIV
><P
>The Window manager will use the reference point as calculated above,
until next XMoveWindow request. The Window Manager will place frame decorations
in the following position, based on the window gravity :
</P
><P
>StaticGravity:
</P
><P
>window's left top corner will be placed at (ref_x,ref_y)
</P
><P
>NorthWestGravity:
</P
><P
>window frame's left top corner will be placed at (ref_x,ref_y)
</P
><P
>NorthGravity:
</P
><P
>window frame's top side's center will be placed at (ref_x,ref_y)
</P
><P
>NorthEastGravity:
</P
><P
>window frame's right top corner will be placed at (ref_x,ref_y)
</P
><P
>EastGravity:
</P
><P
>window frame's right side's center will be placed at (ref_x,ref_y)
</P
><P
>SouthWestGravity:
</P
><P
>window frame's left bottom corner will be placed at (ref_x,ref_y)
</P
><P
>SouthGravity:
</P
><P
>window frame's bottom side's center will be placed at (ref_x,ref_y)
</P
><P
>SouthEastGravity:
</P
><P
>window frame's right bottom corner will be placed at (ref_x,ref_y)
</P
><P
>WestGravity:
</P
><P
>window frame's left side's center will be placed at (ref_x,ref_y)
</P
><P
>CenterGravity:
</P
><P
>window frame's center will be placed at (ref_x,ref_y)
</P
></LI
><LI
><P
>Implementation Note for Application developers:
</P
><P
>When client window is resized - its reference point does not move.
So for example if window has SouthEastGravity and it is resized -
the bottom-right corner of its frame will not move but instead
top-left corner will be adjusted by the difference in size.
</P
></LI
><LI
><P
>Implementation Note for WM developers :
</P
><P
>when calculating reference point at the time of initial placement -
initial window's width should be taken into consideration, as if it
was the frame for this window.
</P
></LI
></UL
><P
>[1] ICCCM Version 2.0, &sect;4.1.2.3 and &sect;4.1.5
</P
><P
>[2] ICCCM Version 2.0, &sect;4.2.3
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN470"
>7.8. Window-in-Window MDI</A
></H2
><P
> The authors of this specification acknowledge that there is no standard
method to allow the Window Manager to manage windows that are part of a
Window-in-Window MDI application. Application authors are advised to
use some other form of MDI, or to propose a mechanism to be included in
a future revision of this specification.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="KILLINGWINDOWS"
>7.9. Killing Hung Processes</A
></H2
><P
>If processes fail to respond to the _NET_WM_PING protocol _NET_WM_PID may be
used in combination with the ICCCM specified WM_CLIENT_MACHINE to
attempt to kill a process.
</P
><P
>WM_CLIENT_MACHINE must be set to the fully-qualified domain name of the client's
host. This would normally be retrieved using gethostname(2). When gethostname()
is not available on the client's platform implementors may use the value of the
nodename field of struct utsname as returned by uname(2). An example of how to
retrieve a value for WM_CLIENT_MACHINE:
</P
><P
> <PRE
CLASS="PROGRAMLISTING"
>int net_get_hostname (char *buf, size_t maxlen)
{
#ifdef HAVE_GETHOSTNAME
if (buf == NULL) return 0;
gethostname (buf, maxlen);
buf [maxlen - 1] = '\0';
return strlen(buf);
#else
struct utsname name;
size_t len;
if (buf == NULL) return 0;
uname (&#38;name);
len = strlen (name.nodename);
if (len &#62;= maxlen) len = maxlen - 1;
strncpy (buf, name.nodename, len);
buf[len] = '\0';
return len;
#endif
}</PRE
>
</P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x340.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x479.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Window Manager Protocols</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>References</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

143
wm-spec/x479.html Normal file
View file

@ -0,0 +1,143 @@
<HTML
><HEAD
><TITLE
>References</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.72
"><LINK
REL="HOME"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Implementation notes"
HREF="x351.html"><LINK
REL="NEXT"
TITLE="Copyright"
HREF="x483.html"></HEAD
><BODY
CLASS="SECT1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
></TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x351.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x483.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="AEN479"
>8. References</A
></H1
><P
>[1] F. Yergeau,"UTF-8, a transformation format of ISO 10646", RFC 2279
</P
><P
>[2] David Rosenthal / Stuart W. Marks "Inter-Client Communication Conventions
Manual (Version 2.0)", X Consortium Standard, X Version 11, Release 6.3
</P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x351.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x483.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Implementation notes</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Copyright</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

166
wm-spec/x483.html Normal file
View file

@ -0,0 +1,166 @@
<HTML
><HEAD
><TITLE
>Copyright</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.72
"><LINK
REL="HOME"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="References"
HREF="x479.html"><LINK
REL="NEXT"
TITLE="Contributors"
HREF="x489.html"></HEAD
><BODY
CLASS="SECT1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
></TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x479.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x489.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="AEN483"
>9. Copyright</A
></H1
><P
>Copyright (C) 2000, 2001, 2002 See Contributors List
</P
><P
>
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or
sell copies of the Software, and to permit persons to whom
the Software is furnished to do so, subject to the following
conditions:
</P
><P
>
The above copyright notice and this permission notice shall
be included in all copies or substantial portions of the
Software.
</P
><P
>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
OR OTHER DEALINGS IN THE SOFTWARE.
</P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x479.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x489.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>References</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Contributors</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

178
wm-spec/x489.html Normal file
View file

@ -0,0 +1,178 @@
<HTML
><HEAD
><TITLE
>Contributors</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.72
"><LINK
REL="HOME"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Copyright"
HREF="x483.html"><LINK
REL="NEXT"
TITLE="Change history"
HREF="x512.html"></HEAD
><BODY
CLASS="SECT1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
></TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x483.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x512.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="AEN489"
>10. Contributors</A
></H1
><P
>Sasha Vasko</P
><P
>Bradley T. Hughes</P
><P
>Dominik Vogt</P
><P
>Havoc Pennington</P
><P
>Jeff Raven</P
><P
>Jim Gettys</P
><P
>John Harper</P
><P
>Julian Adams</P
><P
>Matthias Ettrich</P
><P
>Micheal Rogers</P
><P
>Nathan Clemons</P
><P
>Tim Janik</P
><P
>Tomi Ollila</P
><P
>Sam Lantinga</P
><P
>The Rasterman</P
><P
>Paul Warren</P
><P
>Owen Taylor</P
><P
>Marko Macek</P
><P
>Greg Badros</P
><P
>Matthias Clasen</P
><P
>David Rosenthal</P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x483.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x512.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Copyright</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Change history</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

763
wm-spec/x512.html Normal file
View file

@ -0,0 +1,763 @@
<HTML
><HEAD
><TITLE
>Change history</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.72
"><LINK
REL="HOME"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Contributors"
HREF="x489.html"></HEAD
><BODY
CLASS="SECT1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
></TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x489.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
>&nbsp;</TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="AEN512"
>11. Change history</A
></H1
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN514"
>11.1. Changes since 1.1</A
></H2
><P
></P
><UL
><LI
><P
> Changed WM_CLIENT_NAME(STRING) from suggested to required for _NET_WM_PID.
</P
></LI
><LI
><P
> Specification and sample code for the content of WM_CLIENT_NAME(STRING).
</P
></LI
><LI
><P
> Added _NET_WM_WINDOW_TYPE_SPLASH, _NET_WM_WINDOW_TYPE_UTILITY.
</P
></LI
><LI
><P
> Added _NET_WM_STATE_FULLSCREEN.
</P
></LI
><LI
><P
> Added _NET_WM_ALLOWED_ACTIONS.
</P
></LI
><LI
><P
> Added _NET_WM_STATE_HIDDEN and clarified purpose of
_NET_WM_STATE_SKIP_PAGER and _NET_WM_STATE_SKIP_TASKBAR. Changed
section on virtual desktop implementation to suggest ICCCM compliance
regarding IconicState, using _NET_WM_STATE_HIDDEN to avoid confusion.
Added implementation note for pagers on when to display a window.
</P
></LI
><LI
><P
> Added button field and new directions for keyboard-initiated actions
to the _NET_WM_MOVERESIZE message.
</P
></LI
><LI
><P
> Added advice on removing _NET_WM_STATE and _NET_WM_DESKTOP when a window
is withdrawn.
</P
></LI
><LI
><P
> Added _NET_DESKTOP_LAYOUT to allow a Pager to specify inter-desktop geometry.
</P
></LI
><LI
><P
> Added _NET_SHOWING_DESKTOP.
</P
></LI
><LI
><P
> Added _NET_WM_STATE_FLOATING.
</P
></LI
></UL
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN539"
>11.2. Changes since 1.0</A
></H2
><P
></P
><UL
><LI
><P
>Fix doctype, add author info, update data.
</P
></LI
><LI
><P
>Change specification description wording to be more inclusive, and to reflect the joint nature of the specification.
</P
></LI
><LI
><P
>Fix miscellaneous typographical, grammar and spelling errors.
</P
></LI
><LI
><P
>Clarified _NET_SUPPORTED to include ALL atoms, not just the property names.
</P
></LI
><LI
><P
>Various corrections to use of MUST and SHOULD.
</P
></LI
><LI
><P
>Fix problem in _NET_WM_ICON where 'bytes' should have been 'cardinals'
</P
></LI
><LI
><P
>Replaced ISO-8559-1 characters with entities.
</P
></LI
></UL
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN556"
>11.3. Changes since 1.0pre5</A
></H2
><P
></P
><UL
><LI
><P
>Change history moved to end.
</P
></LI
><LI
><P
>UTF-8 Reference updated.
</P
></LI
><LI
><P
>Window Gravity information updated.
</P
></LI
><LI
><P
>Copyright Added.
</P
></LI
><LI
><P
>Minor typo corrections.
</P
></LI
></UL
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN569"
>11.4. Changes since 1.0pre4</A
></H2
><P
></P
><UL
><LI
><P
>Clarified the interpretation of client-provided geometries on large desktops.
</P
></LI
><LI
><P
>Added more explanation for _NET_DESKTOP_NAMES.
</P
></LI
><LI
><P
>Added _NET_WM_ICON_NAME and _NET_WM_VISIBLE_ICON_NAME.
</P
></LI
><LI
><P
>Tried to improve the wording of _NET_WM_STRUT explanation.
</P
></LI
><LI
><P
>Changed _NET_WORKAREA to an array of viewport-relative geometries.
</P
></LI
><LI
><P
>Updated list of <SPAN
CLASS="QUOTE"
>"dependent"</SPAN
> properties for _NET_NUMBER_OF_DESKTOPS
to include _NET_WORKAREA and _NET_DESKTOP_VIEWPORT.
</P
></LI
><LI
><P
>Tidied formatting of all client messages.
</P
></LI
></UL
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN587"
>11.5. Changes since 1.0pre3</A
></H2
><P
></P
><UL
><LI
><P
>Added information about common non-ICCCM features.
</P
></LI
><LI
><P
>Added explanation of sending messages to the root window.
</P
></LI
><LI
><P
>Removed XA_ prefix from type names.
</P
></LI
><LI
><P
>Clarified that <SPAN
CLASS="QUOTE"
>"mapping order"</SPAN
> refers to inital mapping
and specify the directions of both orders.
</P
></LI
><LI
><P
>Clarified that desktops have a common size specified by _NET_DESKTOP_GEOMETRY.
</P
></LI
><LI
><P
>Rewrote explanation of _NET_DESKTOP_VIEWPORT.
</P
></LI
><LI
><P
>Tidied formatting of _NET_CURRENT_DESKTOP.
</P
></LI
><LI
><P
>Replaced <SPAN
CLASS="QUOTE"
>"window handle"</SPAN
> by <SPAN
CLASS="QUOTE"
>"window ID"</SPAN
>.
</P
></LI
><LI
><P
>Tidied formatting of _NET_WORKAREA.
</P
></LI
><LI
><P
>Rewrote the motivation for _NET_VIRTUAL_ROOTS.
</P
></LI
><LI
><P
>Added advice on Pointer grabs to _NET_WM_MOVERESIZE.
</P
></LI
><LI
><P
>Fixed typos in _NET_WM_STATE.
</P
></LI
><LI
><P
>Added _NET_WM_STATE_SKIP_PAGER.
</P
></LI
><LI
><P
>Tidied formatting of _NET_WM_STRUT.
</P
></LI
><LI
><P
>Tidied formatting of _NET_WM_ICON_GEOMETRY.
</P
></LI
></UL
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN623"
>11.6. Changes since 1.0pre2</A
></H2
><P
></P
><UL
><LI
><P
>_NET_SET_NUMBER_OF_DESKTOPS -&#62; _NET_NUMBER_OF_DESKTOPS for consistency.
</P
></LI
><LI
><P
>_NET_WM_VISIBLE_NAME_STRING -&#62; _NET_WM_VISIBLE_NAME for consistency.
</P
></LI
><LI
><P
>_NET_WM_STATE: added explanation of permitted extensions. Added explanation of
being set / not set.
</P
></LI
><LI
><P
>Spellchecked, corrected various typos.
</P
></LI
><LI
><P
>UTF8 -&#62; UTF-8 for consistency.
</P
></LI
><LI
><P
>added references to the ICCCM an UTF-8 (incomplete).
</P
></LI
><LI
><P
>added data and event formats where missing.
</P
></LI
><LI
><P
>clarified _NET_SUPPORTING_WM_CHECK.
</P
></LI
><LI
><P
>fixed formatting of _NET_CLOSE_WINDOW message.
</P
></LI
></UL
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN644"
>11.7. Changes since 1.0pre1</A
></H2
><P
></P
><UL
><LI
><P
>Removed implementation note concerning Gnome's (potential) file manager behaviour.
</P
></LI
><LI
><P
>The Window Movement section of the implementation notes has been revised.
</P
></LI
></UL
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN651"
>11.8. Changes since 1.9f</A
></H2
><P
></P
><UL
><LI
><P
>Revised revision number for first accepted release 1.9XX -&#62; 1.0preXX.
</P
></LI
><LI
><P
>Prerequisites for adoption of this specification added.
</P
></LI
><LI
><P
>Tidied formatting of _NET_CURRENT_DESKTOP for consistency.
</P
></LI
><LI
><P
>Tidied formatting of _NET_ACTIVE_WINDOW for consistency. Removed doubled text.
</P
></LI
><LI
><P
>Tidied formatting of _NET_WM_DESKTOP for consistency.
</P
></LI
><LI
><P
>Killing Hung Processes implementation note added. _NET_WM_PID and _NET_WM_PING now link to this.
</P
></LI
><LI
><P
>Clarified x_root and y_root meaning for _NET_WM_MOVERESIZE.
</P
></LI
><LI
><P
>Added contributor list.
</P
></LI
></UL
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN670"
>11.9. Changes since 1.9e</A
></H2
><P
></P
><UL
><LI
><P
>Added _NET_WM_VISIBLE_NAME_STRING
</P
></LI
><LI
><P
>Removed ambiguity from _NET_NUMBER_OF_DESKTOPS and _NET_DESKTOP_NAMES in combination.
</P
></LI
><LI
><P
>Set _NET_WM_MOVERESIZE format to 32 for consistency.
</P
></LI
><LI
><P
>Removed _NET_PROPERTIES.
</P
></LI
><LI
><P
>Removed comment from _NET_WM_MOVERESIZE.
</P
></LI
></UL
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN683"
>11.10. Changes since 1.9d</A
></H2
><P
></P
><UL
><LI
><P
>Added _NET_VIRTUAL_ROOTS
</P
></LI
><LI
><P
>Added note about ICCCM compliant window moves.
</P
></LI
><LI
><P
>Added _NET_WM_HANDLED_ICONS
</P
></LI
><LI
><P
>Added _NET_SUPPORTING_WM_CHECK
</P
></LI
><LI
><P
>Removed degrees of activation
</P
></LI
></UL
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN696"
>11.11. Changes since 1.9c</A
></H2
><P
></P
><UL
><LI
><P
>Removed packaging of hints into 2 X properties. Jim Gettys points out that the
performance gains of fewer round trips can be better achieved using Xlib
routines.
</P
></LI
><LI
><P
>Clarified that _NET_DESKTOP_VIEWPORT is in pixels
</P
></LI
><LI
><P
>_NET_DESKTOP_VIEWPORT is now an array, one for each desktop, to allow for
different active viewports on different desktops
</P
></LI
><LI
><P
>_NET_WM_STRUT now only applies on desktops on which the client is visible
</P
></LI
><LI
><P
>Introduced RFC 2119 language, and attempted to clarify the roles of the Window
Manager, Pagers and Applications
</P
></LI
><LI
><P
>Added _NET_WM_NAME
</P
></LI
><LI
><P
>_NET_DESKTOP_NAMES now in UTF8
</P
></LI
><LI
><P
>Desktops now start from 0
</P
></LI
><LI
><P
>Added _NET_WM_PID
</P
></LI
><LI
><P
>Added _NET_WM_PING protocol
</P
></LI
><LI
><P
>Added _NET_WM_STATE_SKIP_TASKBAR
</P
></LI
></UL
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN721"
>11.12. Changes since 1.9b</A
></H2
><P
></P
><UL
><LI
><P
>Removed _NET_NUMBER_OF_DESKTOPS client message, as it overlaps unnecessarily with _NET_{INSERT/DELETE}_DESKTOP.</P
></LI
><LI
><P
>Replaced _NET_WM_LAYER and _NET_WM_HINTS with _NET_WM_WINDOW_TYPE functional hint.</P
></LI
><LI
><P
>Changed _NET_WM_STATE to a list of atoms, for extensibility.</P
></LI
><LI
><P
>Expanded description of _NET_WORKAREA and _NET_WM_STRUT.</P
></LI
><LI
><P
>Removed _NET_WM_SIZEMOVE_NOTIFY protocol. </P
></LI
><LI
><P
>Added degrees of activation to _NET_ACTIVE_WINDOW client message</P
></LI
><LI
><P
>Added _NET_WM_ICON</P
></LI
><LI
><P
>My comments are in [[ ]]. Comments from Marko's draft are in [[MM: ]]</P
></LI
></UL
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x489.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>&nbsp;</TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Contributors</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>&nbsp;</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View file

@ -1,429 +0,0 @@
<HTML
><HEAD
><TITLE
>Root Window Properties (+Related Messages)</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.52"><LINK
REL="HOME"
TITLE="Extended Window Manager Hints"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Extended Window Manager Hints"
HREF="index.html"><LINK
REL="NEXT"
TITLE="Other Root Window Messages"
HREF="x123.html"></HEAD
><BODY
CLASS="SECT1"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Extended Window Manager Hints</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="index.html"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x123.html"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="AEN71"
>Root Window Properties (+Related Messages)</A
></H1
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN73"
>_NET_SUPPORTED</A
></H2
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>_NET_SUPPORTED, ATOM[]/32</PRE
></TD
></TR
></TABLE
><P
>This property MUST be set by the Window Manager to indicate which hints it
supports. This assumes that backwards incompatible changes will not be made
to the hints (without being renamed).
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN77"
>_NET_CLIENT_LIST</A
></H2
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>_NET_CLIENT_LIST, XA_WINDOW[]/32
_NET_CLIENT_LIST_STACKING, XA_WINDOW[]/32</PRE
></TD
></TR
></TABLE
><P
>An array of all X Windows managed by the Window Manager. _NET_CLIENT_LIST has
mapping order. _NET_CLIENT_LIST_STACKING has stacking order. This property
SHOULD be set and updated by the Window Manager.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN81"
>_NET_NUMBER_OF_DESKTOPS</A
></H2
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>_NET_NUMBER_OF_DESKTOPS, CARDINAL/32</PRE
></TD
></TR
></TABLE
><P
>This property SHOULD be set and updated by the Window Manager to indicate the
number of virtual desktops.
</P
><P
>A Pager can insert or delete a certain desktop by sending a
_NET_{INSERT/DELETE}_DESKTOP client message to the root window.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN86"
>_NET_DESKTOP_GEOMETRY</A
></H2
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>_NET_DESKTOP_GEOMETRY width,height, CARDINAL[2]/32</PRE
></TD
></TR
></TABLE
><P
>Array of two cardinals that defines the width and height of each desktop in
pixels. This property SHOULD be set by the Window Manager.
</P
><P
>A Pager can change the desktop geometry by sending a _NET_DESKTOP_GEOMETRY client
message to the root window
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN91"
>_NET_DESKTOP_VIEWPORT</A
></H2
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>_NET_DESKTOP_VIEWPORT x,y, CARDINAL[][2]/32</PRE
></TD
></TR
></TABLE
><P
>Array of two cardinals that define the top left corner of the current view in
pixel, for each desktop. For window managers that don't support paged
desktops, this MUST always be set to (0,0).
</P
><P
>A Pager can change the viewport for the current desktop by sending a
_NET_DESKTOP_VIEWPORT client message to the root window
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN96"
>_NET_CURRENT_DESKTOP</A
></H2
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>_NET_CURRENT_DESKTOP &#60;desktop&#62;, CARDINAL[1]/32</PRE
></TD
></TR
></TABLE
><P
>The index of the current desktop, starts with desktop 0. This MUST be set and
updated by the Window Manager If a Pager wants to switch to another virtual
desktop, it MUST send a _NET_CURRENT_DESKTOP client message to the root window
(type _NET_CURRENT_DESKTOP, format 32, l[0]=&#60;new index&#62;)
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN100"
>_NET_DESKTOP_NAMES</A
></H2
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>_NET_DESKTOP_NAMES</PRE
></TD
></TR
></TABLE
><P
>The names of all virtual desktops in UTF8 encoding. This property MAY be
changed by a Pager or the Window Mangaer at any time. When a desktop is added
or removed, the Window Manager MUST update this list.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN104"
>_NET_ACTIVE_WINDOW</A
></H2
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>_NET_ACTIVE_WINDOW, WINDOW/32</PRE
></TD
></TR
></TABLE
><P
>The window handle of the currently active window. This is a read-only
property set by the Window Manager. This is a read-only property set by the
window manager. If a client (for example, a taskbar) wants to activate
another window, it MUST send a _NET_ACTIVE_WINDOW client message to the root
window (type _NET_ACTIVE_WINDOW, format 32, l[0]=0
/* may be used later */, window is the respective client window)
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN108"
>_NET_WORKAREA</A
></H2
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>_NET_WORKAREA, CARDINAL[][4]/32
</PRE
></TD
></TR
></TABLE
><P
> This property MUST be set by WM upon calculating the work area for each desktop (the first quadruple = desktop 1). Contains the left, right, top, bottom co-ordinates for each desktop. Work area SHOULD be used by desktop applications to place desktop icons apropriately.
</P
><P
> The window manager SHOULD calculate this space by taking the current page minus space occupied by dock and panel windows, as indicated by the <A
HREF="x137.html#NETWMSTRUT"
>_NET_WM_STRUT</A
> property set on client windows.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN114"
>_NET_SUPPORTING_WM_CHECK</A
></H2
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>_NET_SUPPORTING_WM_CHECK, XA_WINDOW/32</PRE
></TD
></TR
></TABLE
><P
>The Window Manager MUST set this property on the root window to be the ID of a child window created by the WM, to indicate that a compliant WM is active. The child window MUST also have the _NET_SUPPORTING_WM_CHECK property set with the same value. The child window MUST also have the _NET_WM_NAME property set to the name of the Window Manager.
</P
><P
>Rationale: The child window is used to guard against stale properties being left on the root window by a crashed WM.
</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN119"
>_NET_VIRTUAL_ROOTS</A
></H2
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>_NET_VIRTUAL_ROOTS, XA_WINDOW[]/32</PRE
></TD
></TR
></TABLE
><P
>The Window Manager MUST set this to a list of IDs for windows that are acting as virtual root windows. To implement virtual desktops, some window managers reparent client windows to a child of the root window. The property is present so that Pagers can determine which windows to watch for substructure notifies.
</P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="index.html"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x123.html"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Extended Window Manager Hints</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Other Root Window Messages</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>