.\" @(#)$Id: vmh.rf,v 1.6 1992/05/12 22:23:34 jromine Exp $
vmh \- visual front-end to MH
\%[\-prompt\ string]
\%[\-vmhproc\ program] \%[\-novmhproc]
\%[switches\ for\ \fIvmhproc\fR]
\fIvmh\fR is a program which implements the server side of
the \fIMH\fR window management protocol
and uses \fIcurses\fR\0(3) routines to maintain a split\-screen interface to
any program which implements the client side of the protocol.
This latter program, called the \fIvmhproc\fR,
is specified using the `\-vmhproc\ program' switch.

The upshot of all this is that one can run \fImsh\fR on a display terminal
and get a nice visual interface.
To do this, for example, just add the line

.ti +.5i
mshproc: vmh

to your \&.mh\(ruprofile.
(This takes advantage of the fact that
\fImsh\fR is the default \fIvmhproc\fR for \fIvmh\fR.)

In order to facilitate things,
if the `\-novmhproc' switch is given,
and \fIvmh\fR can't run on the user's terminal,
the \fIvmhproc\fR is run directly without the window management protocol.

After initializing the protocol,
\fIvmh\fR prompts the user for a command to be given to the client.
Usually, this results in output being sent to one or more windows.
If a output to a window would cause it to scroll,
\fIvmh\fR prompts the user for instructions,
roughly permitting the capabilities of \fIless\fR or \fImore\fR
(e.g., the ability to scroll backwards and forwards):

.in +.5i
.ta \w'RETURN  'u +\w'*  'u
SPACE		advance to the next windowful
RETURN	*	advance to the next line
y	*	retreat to the previous line
d	*	advance to the next ten lines
u	*	retreat to the previous ten lines
g	*	go to an arbitrary line
		(preceed g with the line number)
G	*	go to the end of the window
		(if a line number is given, this acts like `g')
CTRL\-L		refresh the entire screen
h		print a help message
q		abort the window
.in -.5i

(A `*' indicates that a numeric prefix is meaningful for this command.)

Note that if a command resulted in more than one window's worth of
information being displayed,
and you allow the command which is generating information for the window to
gracefully finish
(i.e., you don't use the `q' command to abort information being sent to the
then \fIvmh\fR will give you one last change to peruse the window.
This is useful for scrolling back and forth.
Just type `q' when you're done.

To abnormally terminate \fIvmh\fR (without core dump),
use <QUIT> (usually CTRL\-\\).
For instance,
this does the \*(lqright\*(rq thing with \fIbbc\fR and \fImsh\fR.
^$HOME/\&.mh\(ruprofile~^The user profile
^Path:~^To determine the user's MH directory
`\-prompt\ (vmh)\ '
`\-vmhproc\ msh'
The argument to the `\-prompt' switch must be interpreted as a single token
by the shell that invokes \fIvmh\fR.
one must usually place the argument to this switch inside double\-quotes.

At present,
there is no way to pass signals (e.g., interrupt, quit) to the client.
generating QUIT when \fIvmh\fR is reading a command from the terminal is
sufficient to tell the client to go away quickly.

Acts strangely (loses peer or botches window management protocol with peer)
on random occasions.