.TH RIO 1
.SH NAME
rio \- rio-like Window Manager for X
.SH SYNOPSIS
.B rio
[
.B \-font
.I fontname
]
[
.B \-grey
]
[
.B \-s
]
[
.B \-term
.I termprog
]
[
.B \-version
]
[
.B \-virtuals
.I num
]
[
.B exit
|
.B restart
]
.SH DESCRIPTION
.if t .ds 85 8\(12
.if n .ds 85 8-1/2
.I Rio
is a window manager for X which attempts to emulate the window management
policies of Plan 9's 
.I rio
window manager.
Rio is derived from David Hogan's \*(85.
.PP
The
.B \-grey
option makes the background stippled grey, the default X11 background,
instead of solid grey, the Plan 9 background.
.PP
The
.B \-font
option
sets the font in
.IR rio 's
menu to
.IR fname ,
overriding the default.
Unlike the other programs in the Plan 9 ports, rio expects this
font to be an X11 font rather than a Plan 9 font.
.PP
The
.B \-term
option
specifies an alternative program to run when the
.I New
menu item is selected.
The default is to try
.IR 9term (1)
and then to fall back to
.IR xterm (1).
The
.B \-s
option causes
.I rio
to add
.B -s
to
.IR 9term 's
command-line, starting the window in scrolling mode.
.PP
The
.B \-version
option
prints the current version on standard error, then exits.
.PP
The
.B \-virtuals
option sets the number of virtual screens (the default is 1,
and the maximum is 12).
.PP
If the argument
.B exit
or
.B restart
is given,
it is sent to an already-running
.IR rio ,
causing the extant
.I rio
to exit or restart.
.SS Using rio
.PP
One window is
.IR current ,
and is indicated with a dark border and text;
characters typed on the keyboard are available in the
.B /dev/cons
file of the process in the current window.
Characters written on
.B /dev/cons
appear asynchronously in the associated window whether or not the window
is current.
.PP
Windows are created, deleted and rearranged using the mouse.
Clicking (pressing and releasing) mouse button 1 in a non-current
window makes that window current and brings it in front of
any windows that happen to be overlapping it.
When the mouse cursor points to the background area or is in
a window that has not claimed the mouse for its own use,
pressing mouse button 3 activates a
menu of window operations provided by
.IR rio .
Releasing button 3 then selects an operation.
At this point, a gunsight or cross cursor indicates that
an operation is pending.
The button 3 menu operations are:
.TF Resize
.TP
.B New
Create a window.
Press button 3 where one corner of the new rectangle should
appear (cross cursor), and move the mouse, while holding down button 3, to the
diagonally opposite corner.
Releasing button 3 creates the window, and makes it current.
Very small windows may not be created.
The new window is created running
.IR termprog ,
by default
.IR 9term (1)
or, if 
.I 9term
is not available,
.IR xterm (1).
.TP
.B Resize
Change the size and location of a window.
First click button 3 in the window to be changed
(gunsight cursor).
Then sweep out a window as for the
.B New
operation.
The window is made current.
.TP
.B Move
Move a window to another location.
After pressing and holding button 3 over the window to be moved (gunsight cursor),
indicate the new position by dragging the rectangle to the new location.
The window is made current.
Windows may be moved partially off-screen.
.TP
.B Delete
Delete a window.  Click in the window to be deleted (gunsight cursor).
Deleting a window causes a
.L hangup
note to be sent to all processes in the window's process group
(see
.IR notify (3)).
.TP
.B Hide
Hide a window.  Click in the window to be hidden (gunsight cursor);
it will be moved off-screen.
Each hidden window is given a menu entry in the button 3 menu
according to its current window system label.
.TP
.I label
Restore a hidden window.
.PD
.PP
Windows may also be arranged by dragging their borders.
Pressing button 1 or 2 over a window's border allows one to
move the corresponding edge or corner, while button 3
moves the whole window.
.PP
When the mouse cursor points to the background area
and
.I rio
has been started with multiple virtual screens using the
.B \-virtuals
option,
clicking button 2 brings up a menu to select a virtual screen to view.
Scrolling the mouse wheel while the cursor points at the background
will cycle through the virtual screens.
.SH BUGS
In
Plan 9's
.IR rio ,
clicking button 2 or button 3 to select a window also sends that
event to the window itself.  This
.I rio
does not.
.PP
The command-line syntax is non-standard.
.PP
In Plan 9's
.IR rio ,
newly started applications take over the current window.
This
.I rio
starts a new window for each program.
(In X11, it appears to be impossible to know which window
starts a particular program.)
.PP
There is a currently a compiled-in limit of 128 hidden windows.
.SH "SEE ALSO"
.IR 9term (1),
.IR xterm (1)
