.TH 9TERM 1
.SH NAME
9term \- terminal windows
.SH SYNOPSIS
.B 9term
[
.B -asc
]
[
.B -f
.I font
]
[
.I cmd
\&...
]
.SH DESCRIPTION
.I 9term
is a terminal window program for the X Window System,
providing an interface similar to that used on Plan 9.
.SS Command
The
.I 9term
command starts a new window.
.PP
The
.B -a
flag causes button 2 to send the selection immediately, like acme.
Otherwise button 2 brings up a menu, described below.
.PP
The
.B -s
option has no effect.  It formerly set the scrolling mode,
and is recognized to avoid breaking scripts that create new windows.
See below for a description of scrolling behavior.
.PP
The
.B -c
option starts the window in forced cooked mode,
described below.
.PP
The
.I font
argument to 
.B -f
names a font used to display text, both in
.IR 9term 's
menus
and as a default for any programs running in its windows; it also
establishes the
environment variable
.BR $font .
If
.B -f
is not given,
.I 9term
uses the imported value of
.B $font
if set; otherwise it uses the graphics system default.
.PP
.I 9term
runs the given command in the window, or 
.B $SHELL
if no command is given.
.SS Text windows
Characters typed on the keyboard
collect in the window to form
a long, continuous document.
.PP
There is always some
.I selected
.IR text ,
a contiguous string marked on the screen by reversing its color.
If the selected text is a null string, it is indicated by a hairline cursor
between two characters.
The selected text
may be edited by mousing and typing.
Text is selected by pointing and clicking button 1
to make a null-string selection, or by pointing,
then sweeping with button 1 pressed.
Text may also be selected by double-clicking:
just inside a matched delimiter-pair
with one of
.B {[(<`'"
on the left and
.B }])>`'"
on the right, it selects all text within
the pair; at the beginning
or end of a line, it selects the line; within or at the edge of an alphanumeric word,
it selects the word.
.PP
Characters typed on the keyboard replace the selected text;
if this text is not empty, it is placed in a
.I snarf buffer
common to all windows but distinct from that of
.IR sam (1).
.PP
Programs access the text in the window at a single point
maintained automatically by
.IR 9term .
The
.I output point
is the location in the text where the next character written by
a program to the terminal
will appear; afterwards, the output point is the null string
beyond the new character.
The output point is also the location in the text of the next character
that will be read (directly from the text in the window,
not from an intervening buffer)
by a program.
Since Unix does not make it possible to know when a program
is reading the terminal, lines are sent as they are completed
(when the user types a newline character).
.PP
In general there is text in the window after the output point,
usually placed there by typing but occasionally by the editing
operations described below.
A pending read of the terminal
will block until the text after the output point contains
a newline, whereupon the read may
acquire the text, up to and including the newline.
After the read, as described above, the output point will be at
the beginning of the next line of text.
In normal circumstances, therefore, typed text is delivered
to programs a line at a time.
Changes made by typing or editing before the text is read will not
be seen by the program reading it.
Because of the Unix issues mentioned above, a line of text is only editable
until it is completed with a newline character, or when hold mode
(see below) is enabled.
.PP
Even when there are newlines in the output text,
.I 9term
will not honor reads if the window is in
.I hold
.IR mode ,
which is indicated by a white cursor and blue text and border.
The ESC character toggles hold mode.
Some programs
automatically turn on hold mode to simplify the editing of multi-line text;
type ESC when done to allow
.I mail
to read the text.
.PP
An EOT character (control-D) behaves exactly like newline except
that it is not delivered to a program when read.
Thus on an empty line an EOT serves to deliver an end-of-file indication:
the read will return zero characters.
.\" Like newlines, unread EOTs may be successfully edited out of the text.
The BS character (control-H) erases the character before the selected text.
The ETB character (control-W) erases any nonalphanumeric characters, then
the alphanumeric word just before the selected text.
`Alphanumeric' here means non-blanks and non-punctuation.
The NAK character (control-U) erases the text after the output point,
and not yet read by a program, but not more than one line.
All these characters are typed on the keyboard and hence replace
the selected text; for example, typing a BS with a word selected
places the word in the snarf buffer, removes it from the screen,
and erases the character before the word.
.PP
An ACK character (control-F) or Insert character triggers file name completion
for the preceding string (see
.IR complete (3)).
.PP
Text may be moved vertically within the window.
A scroll bar on the left of the window shows in its clear portion what fragment of the
total output text is visible on the screen, and in its grey part what
is above or below view;
it measures characters, not lines.
Mousing inside the scroll bar moves text:
clicking button 1 with the mouse pointing inside the scroll bar
brings the line at the top of the
window to the cursor's vertical location;
button 3 takes the line at the cursor to the top of the window;
button 2, treating the scroll bar as a ruler, jumps to the indicated portion
of the stored text.
Holding a button pressed in the scroll bar will cause the text
to scroll continuously until the button is released.
.PP
Typing down-arrow scrolls forward
one third of a window, and up-arrow scrolls back.
Typing page-down scrolls forward
two thirds of a window, and page-up scrolls back.
Typing Home scrolls to the top of the window;
typing End scrolls to the end.
.PP
The DEL character sends an
.L interrupt
note to all processes in the window's process group.
Unlike the other characters, the DEL and arrow
keys do not affect the selected text.
The left (right) arrow key moves the selection to one character
before (after) the current selection.
.PP
.I 9term
relies on the kernel's terminal processing to handle
EOT, so the terminal must be set up with EOT
as the ``eof'' character.
.I 9term
runs
.IR stty (1)
to establish this when the terminal is created.
.PP
.I 9term
always treats the DEL keystroke as an interrupt request.
In response it sends the terminal's current interrupt character
(which need not be DEL).
.PP
Written output to a window is appended to the end of the window.
The window scrolls to display the new output only if the
end of the window was visible before the write.
.PP
.I 9term
changes behavior according to
the terminal settings of the running programs.
Most programs run with echo enabled.
In this mode,
.I 9term
displays and allows editing of the input.
Some programs, typically those reading passwords,
run with echo disabled.
In this mode,
.I 9term
passes keystrokes through directly, without
echoing them or buffering until a newline character.
These heuristics work well in many cases, but there
are a few common ones where they fall short.
First, programs using the GNU readline library typically
disable terminal echo and perform echoing themselves.
The most common example is the shell
.IR bash (1).
Disabling the use of readline with
.RB `` "set +o emacs" ''
.RI [ sic ]
usually restores the desired behavior.
Second, remote terminal programs such as
.IR ssh (1)
typically run with echo disabled, relying on the
remote system to echo characters as desired.
Plan 9's
.I ssh
has a
.B -C
flag to disable this, leaving the terminal in ``cooked'' mode.
For similar situations on Unix,
.IR 9term 's
button 2 menu has an entry to toggle the forced use of
cooked mode, despite the terminal settings.
In such cases, it is useful to run
.RB `` "stty -echo" '' 
on the remote system to avoid seeing your input twice.
.PP
Editing operations are selected from a menu on button 2.
The
.B cut
operation deletes the selected text
from the screen and puts it in the snarf buffer;
.B snarf
copies the selected text to the buffer without deleting it;
.B paste
replaces the selected text with the contents of the buffer;
and
.B send
copies the snarf buffer to just after the output point, adding a final newline
if missing.
.B Paste
will sometimes and
.B send
will always place text after the output point; the text so placed
will behave exactly as described above.  Therefore when pasting
text containing newlines after the output point, it may be prudent
to turn on hold mode first.
.PP
The
.B plumb
menu item sends the contents of the selection (not the snarf buffer) to the
.I plumber
(see
.IR plumb (1)).
If the selection is empty, it sends the white-space-delimited text
containing the selection (typing cursor).
A typical use of this feature is to tell the editor to find the source of an error
by plumbing the file and line information in a compiler's diagnostic.
.PP
Each
.I 9term
listens for connections on a Unix socket.
When a client connects, the 
.I 9term
writes the window contents to the client and then hangs up.
.I 9term
installs the name of this socket in the environment as
.B $text9term
before running
.IR cmd .
.SH SOURCE
.B \*9/src/cmd/9term
.SH BUGS
There should be a program to toggle the current window's hold mode.
.PP
Not a
.IR 9term 
bug:
when running
.IR bash (1)
in 
.RB `` "set +o emacs" ''
mode, its handling of interrupts is broken.
In response to DEL,
.I bash
processes the interrupt but then silently discards the next
character typed.
.PP
Unix makes everything harder.
.SH SEE ALSO
.IR wintext (1)
