Comments on 1.0pre3, part 2



I guess I'm not the only one who feels that the current version of
the spec is still very weak when it comes to background and motivation.
In order to improve this, I have taken the time to write up a summary
of the WM features under discussion. I hope that with a little editing,
this can be transformed into an introduction or appendix of the spec.
Feel free to use it if you think it is suitable.

Matthias



1. Non-ICCCM features

There is a number of window management features or behaviours which are not
specified in the ICCCM, but are commonly met in modern WMs and DEs.


1.1 Additional States

The ICCCM allows WMs 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 WM 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.


1.1.1 Maximization

Maximization is a very old feature of WMs.  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 WM may have reserved certain areas for other
windows).  A WM is expected to remember the geometry of a maximized window
and restore it upon de-maximization.  Modern WMs typically allow separate
horizontal and vertical maximization.

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.


1.1.2 Shading

Some DEs 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.

In the spirit of the ICCCM, shaded windows should be in IconicState, i.e.
the
client window should be unmapped and the WM_STATE property updated
appropriately.


1.3 Modality

The WM_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 WMs offer support
for handling modality.


1.4 Large Desktops

The WM 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 WM may only allow to change the viewport position
in increments of the screen size (paging) or it may allow arbitrary
positions
(scrolling).


1.4.1 Implementation note

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.

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.

Both alternatives are completely ICCCM compliant, although the second one
may be somewhat problematic for clients trying to figure out the WM
decorations
around their toplevel windows and for clients trying to draw background
images on the root window.


1.5 Sticky windows

A WM 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.


1.6 Virtual Desktops

Most X servers have only a single screen.  The WM 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 1.4)
may
be independent or forced to be at the same position.

A WM 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.


1.6.1 Implementation note

There are at least two options for implementing virtual desktops.  The first
is to use multiple virtual roots (see 1.4.1) 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 1.4.1.

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.
This puts the clients in an undefined ICCCM state, since they are
unviewable,
but not iconic.  In practice, this seems to cause no problems and the ICCCM
compliant alternative to iconify all clients on non-current desktops
(without
showing their icons) is clearly not acceptable.


1.7 Pagers

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 WM actions by manipulating these
representations.  Typically offered actions are activation (see 1.9),
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.


1.8 Taskbars

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 WM 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.


1.9 Activation

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.


1.10 Animated iconification

Some WMs display some form of animation when (de-)iconfying 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.


2. Scope of the spec

This spec tries to address the following issues:

 o Allow clients to influence their initial state w.r.t. maximization,
   shading, stickyness, desktop.

 o Improve the WMs ability to vary window decorations by allowing clients
   to hint the WM about the type of their windows.

 o Enable pagers and taskbars to be implemented as separate clients and
   allow them to work with any compliant WM.

This spec doesn't cover any of the following:

 o Other IPC mechanisms like ICE, Corba.

 o WM configuration.

 o WM documentation.

 o Geometry between desktops.

 o Clients appearing on a proper subset of desktops.

The WM 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.

The spec offers a lot of external control about WM actions.  This is
intended
mainly to allow pagers, taskbars and similar WM 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).








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