.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.
(See
.IR font (7)
for a full discussion of font syntaxes.)
.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)
