glenda.party
term% ls -F
term% pwd
$home/manuals/unix_v8/9/mux
term% cat index.txt
MUX(9.1)                                                              MUX(9.1)

NAME
       mux, ismux, invert - layer multiplexer for jerq

SYNOPSIS
       mux [ -l commands ]

       mux exit

       mux cd directory

       ismux [ - ]

       invert

DESCRIPTION
       Mux  manages  asynchronous  windows,  or  layers, on the jerq terminal.
       Upon  invocation,  it  loads  the  jerq   with   a   program   (default
       /usr/jerq/lib/muxterm,  settable  by  the environment variable MUXTERM)
       that is the primary user interface.  Option -l also creates a layer and
       invokes the shell to run commands in it.  (See windows(9.1)).

       The command ‘mux exit' leaves mux,  destroying  all  layers;  ‘mux  cd'
       changes  the  directory  of mux, and hence of layers later created, but
       not of the current layers.

       Each layer is essentially a separate terminal.  Characters  typed  into
       the layer are sent to the standard input of a Unix process bound to the
       layer,  and  characters  written on the standard output of that process
       appear in the layer.  When a layer is created, a  separate  shell  (the
       value  of  the  SHELL environment variable, or sh by default) is estab‐
       lished, and bound to the layer.

       Layers are created, deleted, and rearranged using the mouse.   Depress‐
       ing  mouse  button  3  activates a menu of layer operations.  Releasing
       button 3 then selects an operation.  At this point, a  gunsight  cursor
       indicates  that  an operation is pending.  Hitting button 3 again acti‐
       vates the operation on the layer pointed to by the cursor.  The New op‐
       eration, to create a layer, requires  a  rectangle  to  be  swept  out,
       across any diagonal, while button 3 is depressed.  A box outline cursor
       indicates that a rectangle is to be created.  The Reshape operation, to
       change  the  size and location of a layer on the screen, requires first
       that a layer be indicated (gunsight cursor)  and  a  new  rectangle  be
       swept out (box cursor).  The other operations are self-explanatory.

       In  a  non-current  layer, button 1 is a shorthand for Current and Top,
       which pulls a layer to the front of the screen and makes it the current
       layer for keyboard and mouse input.  Non-current layers  are  indicated
       by a light border.

       There is a point in each layer, called the ‘Unix point', where the next
       character from Unix will be inserted.  The Unix point advances whenever
       characters  are  received from Unix, but not when echoing typed charac‐
       ters.  When a newline is typed after the Unix point, characters between
       the Unix point and the newline, inclusive, are sent  to  Unix  and  the
       Unix  point  advanced  to  after  the  newline.   This means that shell
       prompts and other output will be inserted before characters  that  have
       been  typed  ahead.   No other characters are sent to Unix (but see the
       discussion of raw mode below).  Therefore partially typed lines or text
       anywhere before the Unix point may be edited.

       The default terminal program allows  any  text  on  the  screen  to  be
       edited,  much as in jim(9.1).  Text may be selected by sweeping it with
       button 1 depressed.  Typed characters replace selected text.

       All layers share a common ‘snarf buffer' (distinct  from  jim's).   The
       cut  operation  on  button  2  deletes selected text and puts it in the
       buffer; snarf copies selected text to the buffer;  paste  replaces  se‐
       lected  text  (which  may be null) from the buffer; and send copies the
       snarf buffer to after the Unix point.

       Normally the terminal doesn't scroll as text is received, but a  button
       2  menu item selects scrolling.  A scroll bar indicates what portion of
       all the text stored for a layer is on the screen.  (It measures charac‐
       ters, not lines.)  Releasing button 1 in the scroll bar brings the line
       at the top of the screen to the cursor; releasing button  3  takes  the
       line  at  the  cursor to the top of the screen.  Button 2, treating the
       scroll bar as a ruler, brings the indicated point in the  whole  stored
       text to the top of the screen.

       The NUM LOCK key advances a half page.

       Ismux  reports  on  its standard error whether its standard output is a
       mux layer, and also generates the appropriate exit  status.   With  the
       optional argument, no message is produced.

       Invert  reverses  the  sense  of video, from black on white to white on
       black, or vice versa.

       Independent  user-level  programs  can  be  loaded  into  layers,   see
       32ld(9.1).   SHIFT-SETUP  freezes  mux and complements the video of the
       layer of the running user-level terminal process.  Hitting button 2  in
       this  state will attempt to kill the process; 1 or 3 will leave it run‐
       ning.

       In raw mode or no-echo mode (see ttyld(4)) the Unix point advances with
       each character typed after it.

FILES
       /usr/jerq/lib/muxterm terminal program
       /tmp/.mux*            temporary file used by -l option

SEE ALSO
       32ld(9.1), jim(9.1), jx(9.1), term(9.1)

DIAGNOSTICS
       Mux refuses to create a layer when there is not enough  memory.   Space
       can be recovered by deleting a layer.
       Error  messages from mux are written directly to the layer which caused
       them.  They are usually meaningful only to system  administrators,  and
       indicate system difficulties.

BUGS
       Reshape  only  works properly for processes that arrange to see if they
       have been reshaped, although most programs make this arrangement.
       The behavior of raw mode prohibits editing partially typed  lines  when
       running cu(1).

                                                                      MUX(9.1)