187 lines
4.8 KiB
HTML
187 lines
4.8 KiB
HTML
<HTML
|
|
><HEAD
|
|
><TITLE
|
|
>Window Managers</TITLE
|
|
><META
|
|
NAME="GENERATOR"
|
|
CONTENT="Modular DocBook HTML Stylesheet Version 1.63
|
|
"><LINK
|
|
REL="HOME"
|
|
TITLE="X Window System Architecture Overview HOWTO"
|
|
HREF="index.html"><LINK
|
|
REL="PREVIOUS"
|
|
TITLE="The X Window System Architecture: overview"
|
|
HREF="arch-overview.html"><LINK
|
|
REL="NEXT"
|
|
TITLE="Client Applications"
|
|
HREF="client-applications.html"></HEAD
|
|
><BODY
|
|
CLASS="SECT1"
|
|
BGCOLOR="#FFFFFF"
|
|
TEXT="#000000"
|
|
LINK="#0000FF"
|
|
VLINK="#840084"
|
|
ALINK="#0000FF"
|
|
><DIV
|
|
CLASS="NAVHEADER"
|
|
><TABLE
|
|
WIDTH="100%"
|
|
BORDER="0"
|
|
CELLPADDING="0"
|
|
CELLSPACING="0"
|
|
><TR
|
|
><TH
|
|
COLSPAN="3"
|
|
ALIGN="center"
|
|
>X Window System Architecture Overview HOWTO</TH
|
|
></TR
|
|
><TR
|
|
><TD
|
|
WIDTH="10%"
|
|
ALIGN="left"
|
|
VALIGN="bottom"
|
|
><A
|
|
HREF="arch-overview.html"
|
|
>Prev</A
|
|
></TD
|
|
><TD
|
|
WIDTH="80%"
|
|
ALIGN="center"
|
|
VALIGN="bottom"
|
|
></TD
|
|
><TD
|
|
WIDTH="10%"
|
|
ALIGN="right"
|
|
VALIGN="bottom"
|
|
><A
|
|
HREF="client-applications.html"
|
|
>Next</A
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
><HR
|
|
ALIGN="LEFT"
|
|
WIDTH="100%"></DIV
|
|
><DIV
|
|
CLASS="SECT1"
|
|
><H1
|
|
CLASS="SECT1"
|
|
><A
|
|
NAME="WINDOW-MANAGERS"
|
|
>4. Window Managers</A
|
|
></H1
|
|
><P
|
|
>However, we never mentioned how the X server handles
|
|
manipulation of the clients' on-screen display areas (called
|
|
windows). It's obvious, to anyone who's ever used a GUI, that you need
|
|
to have control over the "client windows". Typically you can move and
|
|
arrange them; change size, maximize or minimize windows. How, then,
|
|
does the X server handle these tasks? The answer is: it doesn't.</P
|
|
><P
|
|
>One of X's fundamental tenets is "we provide mechanism, but not
|
|
policy". So, while the X server provides a way (mechanism) for window
|
|
manipulation, it doesn't actually say how this manipulation behaves
|
|
(policy).</P
|
|
><P
|
|
>All that mechanism/policy weird stuff basically boils down to
|
|
this: it's another program's responsibility to manage the on-screen
|
|
space. This program decides where to place windows, gives mechanisms
|
|
for users to control the windows' appearance, position and size, and
|
|
usually provides "decorations" like window titles, frames and buttons,
|
|
that give us control over the windows themselves. This program, which
|
|
manages windows, is called (guess!) a "window manager".</P
|
|
><P
|
|
>"The window manager in X is just another client -- it is not
|
|
part of the X window system, although it enjoys special privileges --
|
|
and so there is no single window manager; instead, there are many,
|
|
which support different ways for the user to interact with windows and
|
|
different styles of window layout, decoration, and keyboard and
|
|
colormap focus."</P
|
|
><P
|
|
>The X architecture provides ways for a window manager to
|
|
perform all those actions on the windows; but it doesn't actually
|
|
provide a window manager.</P
|
|
><P
|
|
>There are, of course, a lot of window managers, because since
|
|
the window manager is an external component, it's (relatively) easy to
|
|
write one according to your preferences, how you want windows to look,
|
|
how you want them to behave, where do you want them to be, and so on.
|
|
Some window managers are simplistic and ugly (twm); some are flashy
|
|
and include everything but the kitchen sink (enlightenment); and
|
|
everything in between; fvwm, amiwm, icewm, windowmaker, afterstep,
|
|
sawfish, kwm, and countless others. There's a window manager for every
|
|
taste.</P
|
|
><P
|
|
>A window manager is a "meta-client", whose most basic mission is
|
|
to manage other clients. Most window managers provide a few additional
|
|
facilities (and some provide a lot of them). However one piece of
|
|
functionality that seems to be present in most window managers is a
|
|
way to launch applications. Some of them provide a command box where
|
|
you can type standard commands (which can then be used to launch
|
|
client applications). Others have a nice application launching menu of
|
|
some sort. This is not standardized, however; again, as X dictates no
|
|
policy on how a client application should be launched, this
|
|
functionality is to be implemented in client programs. While,
|
|
typically, a window manager takes on this task (and each one does it
|
|
differently), it's conceivable to have client applications whose sole
|
|
mission is to launch other client applications; think a program
|
|
launching pad. And of course, people have written large amounts of
|
|
"program launching" applications.</P
|
|
></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="arch-overview.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="client-applications.html"
|
|
>Next</A
|
|
></TD
|
|
></TR
|
|
><TR
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="left"
|
|
VALIGN="top"
|
|
>The X Window System Architecture: overview</TD
|
|
><TD
|
|
WIDTH="34%"
|
|
ALIGN="center"
|
|
VALIGN="top"
|
|
> </TD
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="right"
|
|
VALIGN="top"
|
|
>Client Applications</TD
|
|
></TR
|
|
></TABLE
|
|
></DIV
|
|
></BODY
|
|
></HTML
|
|
> |