wm/wm [ command [ arg... ] ]
Wm is an inferno window manager, providing the control
mechanism for the user to manage to order and position of a dynamic
collection of application windows. When started, it runs command, (by
default wm/toolbar, see toolbar (1)) By itself, wm does
not provide any means for starting new applications; that facility must be
provided by an auxilliary program, wm/toolbar being one such
example.
Wm provides a control interface to programs running inside
it through the Wmcontext adt that can be obtained from the
Draw->Context that it passes to applications that it starts (see
draw-context (2)). Control messages it understands include:
- start
what
- Start input on what. What can be ptr (pointer
events), kbd (keyboard events) and control (window manager
control events, see below).
- key
charval
- Simulate a key event. Charval is the decimal value of the character
that has been pressed. The character will be sent exactly as if it had
been typed on the keyboard. This facility is used by
keyboard (1).
- !reshape tag reqid minx miny maxx maxy
[how]
- Reshape or create the window named tag. Reqid is ignored;
minx..maxy give the desired bounding rectangle of the new window.
If how is not given, or is exact, then wm will
attempt to satisfy the request exactly. Otherwise, how tells
wm how to determine the rectangle of the resulting image; it can be
one of place (choose some appropriate position and size on screen),
onscreen (modify the requested rectangle only so as to bring it on
screen), or max (request the maximum available rectangle).
- delete
tag
- Delete the window named by tag.
- raise
- Raise all windows for the current context above the others.
- lower
- Send all windows for the current context to the bottom.
- !move tag reqid startx starty
- Drag window tag interactively. Reqid is ignored.
Startx and starty give the location of the pointer when the
drag was initiated.
- !size tag reqid
- Interactively resize window tag.
- fixedorigin
- By default, if a window changes position but not size, wm changes
the origin of the window without creating a new image. Sending
fixedorigin caused wm always to create a new image in that
case.
- kbdfocus
[in]
- If the decimal integer in is non-zero, request the keyboard focus,
otherwise lose the keyboard focus.
Wm generates control messages to inform applications of
things that have happened. These include:
- rect minx miny maxx
maxy
- The screen rectangle has changed. minx..maxy gives the new bounding
box of the screen.
- haskbdfocus
in
- Informs an application of its current keyboard focus state. This message
is generated in response to pointer events, and due to kbdfocus
requests.
- exit
- The window manager is closing down.
The first application that starts under wm is given the
privilege of being able to control other applications running under the same
wm. If it sends a start control message, then it will also see
any control requests sent by applications that wm itself does not
understand and information about applications starting and leaving.
Wm accepts several other control messages from its controlling
application:
- ctl id
msg
- Send message msg to application id.
- endcontrol
- Relinquish controller status. The next application that starts will get
control status. This is used, for instance, to segue smoothly between
logon (1) and toolbar (1).
If the controlling application has started control messages,
wm sends it the following messages:
- newclient
id
- A new client has connected, identified by id.
- delclient
id
- Client id has left.
- request id
msg
- Client id sent the request msg to the window manager, which
it did not understand. This facility is used, for instance, by
toolbar (1) to implement the task and untask
requests.
- /chan/wmrect
- File holding current screen rectangle.