\fR]\fR \fI[\-r \fI\fR]\fR
.P
wmii \-v
.SH DESCRIPTION
.SS Overview
.P
\fBwmii\fR is a dynamic window manager for X11. In contrast to
static window management the user rarely has to think about how
to organize windows, no matter what he is doing or how many
applications are used at the same time. The window manager
adapts to the current environment and fits to the needs of the
user, rather than forcing him to use a preset, fixed layout and
trying to shoehorn all windows and applications into it.
.P
\fBwmii\fR supports classic and tiled window management with
extended keyboard and mouse control. The classic window
management arranges windows in a floating layer in which windows
can be moved and resized freely. The tiled window management is
based on columns which split up the screen horizontally. Each
column handles arbitrary windows and arranges them vertically in
a non\-overlapping way. They can then be moved and resized
between and within columns at will.
.P
\fBwmii\fR provides a virtual filesystem which represents the
internal state similar to the procfs of Unix operating systems.
Modifying this virtual filesystem results in changing the state
of the window manager. The virtual filesystem service can be
accessed through 9P\-capable client programs, like
wmiir(1). This allows simple and powerful remote control
of the core window manager.
.P
\fBwmii\fR basically consists of clients, columns, views, and
the bar, which are described in detail in the
\fBTerminology\fR section.
.SS Command Line Arguments
.TP
\-a \fI\fR
Specifies the address on which \fBwmii\fR should listen for
connections. The address takes the form
\fB\fI\fR!\fI\fR\fR. The default is of the form:
unix!/tmp/ns.\fB$USER\fR.\fB${DISPLAY\fR%.0\fB}\fR/wmii
which opens a unix socket per Plan 9 Port conventions. To
open a TCP socket, listening at port 4332 on the loopback
interface, use:
tcp!localhost!4332
\fB$WMII_NAMESPACE\fR is automatically set to this value.
.TP
\-r \fI\fR
Specifies which rc script to run. If \fI\fR consists of a
single argument, \fB$WMII_CONFPATH\fR is searched before \fB$PATH\fR.
Otherwise, it is passed to the shell for evaluation. The
environment variables \fB$WMII_ADDRESS\fR and \fB$WMII_CONFPATH\fR are
preset for the script.
== Terminology ==
.TP
Display
A running X server instance consisting of input
devices and screens.
.TP
Screen
A physical or virtual (Xinerama or Xnest(1))
screen of an X display. A screen displays a bar window
and a view at a time.
.TP
Window
A (rectangular) drawable X object which is
displayed on a screen, usually an application window.
.TP
Client
An application window surrounded by a frame window
containing a border and a titlebar.
.TP
Floating layer
A screen layer of \fBwmii\fR on top of
all other layers, where clients are arranged in a
classic (floating) way. They can be resized or moved
freely.
.TP
Managed layer
A screen layer of \fBwmii\fR behind the
floating layer, where clients are arranged in a
non\-overlapping (managed) way. Here, the window
manager dynamically assigns each client a size and
position. The managed layer consists of columns.
.TP
Tag
Alphanumeric strings which can be assigned to a
client. This provides a mechanism to group clients with
similar properties. Clients can have one tag, e.g.
\fIwork\fR, or several tags, e.g. \fIwork+mail\fR.
Tags are separated with the \fI+\fR character.
.TP
View
A set of clients containing a specific tag, quite
similar to a workspace in other window managers. It
consists of the floating and managed layers.
.TP
Column
A column is a screen area which arranges clients
vertically in a non\-overlapping way. Columns provide
three different modes, which arrange clients with equal
size, stacked, or maximized respectively. Clients can
be moved and resized between and within columns freely.
.TP
Bar
The bar at the bottom of the screen displays a label
for each view and allows the creation of arbitrary
user\-defined labels.
.TP
Event
An event is a message which can be read from a
special file in the filesystem of \fBwmii\fR, such as a
mouse button press, a key press, or a message written by
a different 9P\-client.
.SS Basic window management
.P
Running a raw \fBwmii\fR process without a wmiirc(1)
script provides basic window management capabilities already.
However, to use it effectively, remote control through its
filesystem interface is necessary. By default it is only usable
with the mouse in conjunction with the \fIMod1 (Alt)\fR
modifier key. Other interactions, such as customizing the style,
killing or retagging clients, and grabbing keys, cannot be
achieved without accessing the filesystem.
.P
The filesystem can be accessed by connecting to the
\fIaddress\fR of \fBwmii\fR with any 9P\-capable client, such
as wmiir(1)
.SS Actions
.P
An action is a shell script in the default setup, but it can
actually be any executable file. It is executed usually by
selecting it from the actions menu. You can customize an action
by copying it from the global action directory
\&'@CONFPREFIX@/wmii@CONFVERSION@' to '\fB$HOME\fR/.wmii@CONFVERSION@' and then
editing the copy to fit your needs. Of course you can also
create your own actions there; make sure that they are
executable.
.P
Here is a list of the default actions:
.TS
tab(^); ll.
quit^leave the window manager nicely
status^periodically print date and load average to the bar
welcome^display a welcome message that contains the wmii tutorial
wmiirc^configure wmii
.TE
.SS Default Key Bindings
.P
All of the provided \fBwmiirc\fR scripts accept at least the following key
bindings. They should also provide a \fBshowkeys\fR action to open a
key binding quick\-reference.
.SS Moving Around
.TS
tab(^); ll.
\fBKey\fR^\fBAction\fR
Mod\-h^Move to a window to the \fIleft\fR of the one currently focused
Mod\-l^Move to a window to the \fIright\fR of the one currently focused
Mod\-j^Move to the window \fIbelow\fR the one currently focused
Mod\-k^Move to a window \fIabove\fR the one currently focused
Mod\-space^Toggle between the managed and floating layers
Mod\-t \fI\fR^Move to the view of the given \fI\fR
Mod\-\fI\fI[0\-9]\fR\fR^Move to the view with the given number
.TE
.SS Moving Things Around
.TS
tab(^); ll.
\fBKey\fR^\fBAction\fR
Mod\-Shift\-h^Move the current window \fIwindow\fR to a column on the \fIleft\fR
Mod\-Shift\-l^Move the current window to a column on the \fIright\fR
Mod\-Shift\-j^Move the current window below the window beneath it.
Mod\-Shift\-k^Move the current window above the window above it.
Mod\-Shift\-space^Toggle the current window between the managed and floating layer
Mod\-Shift\-t \fI\fR^Move the current window to the view of the given \fI\fR
Mod\-Shift\-\fI\fI[0\-9]\fR\fR^Move the current window to the view with the given number
.TE
.SS Miscellaneous
.TS
tab(^); ll.
\fBKey\fR^\fBAction\fR
Mod\-m^Switch the current column to \fImax mode\fR
Mod\-s^Switch the current column to \fIstack mode\fR
Mod\-d^Switch the current column to \fIdefault mode\fR
Mod\-Shift\-c^\fBKill\fR the selected client
Mod\-p \fI\fR^\fBExecute\fR \fI\fR
Mod\-a \fI\fR^\fBExecute\fR the named \fR/ -> \fI\fR\fI[+\fI\fR]\fR*
.fi
Where,
.nf
\fI\fR := \fI\fR | \fI\fRpx
.fi
When a new column, \fI\fR, is created on a view whose name
matches \fI\fR, it is given the \fI\fRth supplied \fI\fR.
If there is no \fI\fRth width, it is given 1/\fI\fRth of the
screen.
.TP
tagrules
The \fItagrules\fR file contains a list of
rules similar to the colrules. These rules specify
the tags a client is to be given when it is created.
Rules are specified:
.nf
/\fI\fR/ -> \fI\fR\fI[+\fI\fR]\fR*
.fi
When a client's \fI\fR:\fI\fR:\fI\fR matches
\fI\fR, it is given the tagstring \fI\fR. There are
two special tags. \fB!\fR, which is deprecated, and identical
to \fIsel\fR, represents the current tag. \fB~\fR
represents the floating layer.
.TP
keys
The \fIkeys\fR file contains a list of keys which
\fBwmii\fR will grab. Whenever these key combinations
are pressed, the string which represents them are
written to '/event' as: Key \fI\fR
.TP
event
The \fIevent\fR file never returns EOF while
\fBwmii\fR is running. It stays open and reports events
as they occur. Included among them are:
.RS 8
.TP
\fI[Not]\fRUrgent \fI\fR \fI[Manager|Client]\fR
\fI\fR's urgent hint has been set or
unset. The second arg is \fI[Client]\fR if it's
been set by the client, and \fI[Manager]\fR if
it's been set by \fBwmii\fR via a control
message.
.TP
\fI[Not]\fRUrgentTag \fI\fR \fI[Manager|Client]\fR
A client on \fI\fR has had its urgent hint
set, or the last urgent client has had its
urgent hint unset.
.TP
Client\fI\fR \fI\fR \fI