summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorAxel Beckert <abe@deuxchevaux.org>2011-09-03 14:05:23 +0200
committerAxel Beckert <abe@deuxchevaux.org>2011-09-03 14:05:23 +0200
commitbdf45bc45637eefdbdee913465729f9d31d6c255 (patch)
tree9b6538c483ad6c2b38177068d5c5730397c9f292 /doc
parent14a4b00c9ef680b78469333291270e4c276f100d (diff)
downloadscreen-upstream/3.9.5.tar.gz
Imported Upstream version 3.9.5upstream/3.9.5
Diffstat (limited to 'doc')
-rw-r--r--doc/Makefile.in6
-rw-r--r--doc/README.DOTSCREEN151
l---------[-rwxr-xr-x]doc/install.sh120
-rw-r--r--doc/make.help51
-rw-r--r--doc/screen.11438
-rw-r--r--doc/screen.info294
-rw-r--r--doc/screen.info-1642
-rw-r--r--doc/screen.info-21008
-rw-r--r--doc/screen.info-31144
-rw-r--r--doc/screen.info-4816
-rw-r--r--doc/screen.info-5545
-rw-r--r--doc/screen.texinfo1002
-rw-r--r--doc/window_to_display.ps2959
13 files changed, 7917 insertions, 2259 deletions
diff --git a/doc/Makefile.in b/doc/Makefile.in
index 74dcc37..f42a3ca 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -3,9 +3,9 @@
srcdir = @srcdir@
VPATH = @srcdir@
-prefix = /usr/local
-mandir = $(prefix)/man
-infodir = $(prefix)/info
+prefix = @prefix@
+mandir = @mandir@
+infodir = @infodir@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
diff --git a/doc/README.DOTSCREEN b/doc/README.DOTSCREEN
new file mode 100644
index 0000000..f17fa37
--- /dev/null
+++ b/doc/README.DOTSCREEN
@@ -0,0 +1,151 @@
+From bargi@dots.physics.orst.edu Thu Aug 31 23:42 MET 1995
+Received: from faui45.informatik.uni-erlangen.de (root@faui45.informatik.uni-erlangen.de [131.188.34.45]) by immd4.informatik.uni-erlangen.de with ESMTP
+ id XAA14775 (8.6.12/7.4f-FAU);; Thu, 31 Aug 1995 23:42:15 +0200
+Received: from dots.physics.orst.edu (bargi@dots.PHYSICS.ORST.EDU [128.193.96.106]) by uni-erlangen.de with ESMTP
+ id XAA03048 (8.6.12/7.4f-FAU); for <screen@uni-erlangen.de>; Thu, 31 Aug 1995 23:42:03 +0200
+Received: (from bargi@localhost) by dots.physics.orst.edu (8.6.11/8.6.9) id OAA15627; Thu, 31 Aug 1995 14:41:47 -0700
+From: Hadi Bargi Rangin <bargi@dots.physics.orst.edu>
+Message-Id: <199508312141.OAA15627@dots.physics.orst.edu>
+Subject: README.DOTSCREEN
+To: screen@uni-erlangen.de
+Date: Thu, 31 Aug 1995 14:41:47 -0700 (PDT)
+Cc: bargi@dots.physics.orst.edu (Hadi Bargi Rangin)
+X-Mailer: ELM [version 2.4 PL24]
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Content-Type: text/plain; charset=US-ASCII
+Content-Length: 5423
+Status: RO
+
+Hallo,
+
+ leider war readme file fuer dotscreen nicht in unserem dotscreen-Packet,
+deshalb schicke ich es Euch nachtraeglich. Nachdem Ihr unseren packet
+getestet habt, koennen wir Euch anrufen und vielleicht mehr ueber die
+Einzelnheiten sprechen, ob wir unsere Weiterentwicklung koordinieren
+wollen.
+
+Danke,
+
+Gruss,
+Hadi
+
+===============================================================================
+Quick introduction to dotscreen
+-------------------------------
+
+1. Introduction
+2. Is dotscreen different as screen?
+3. Installation instructions
+4. Functions description
+5. Further development
+
+
+1. Introduction
+===============
+
+Dotscreen, is a system which allow a person direct access to unix via
+a braille display. The emphasis is on direct, because the braille
+display is connected directly to the serial port on the unix
+machine. You no longer must use a dos machine running a terminal
+emulation logged into a unix machine. Dotscreen is built on top of
+screen, a powerful full-screen window manager for unix tty terminals.
+Screen keeps track of what is being displayed in each window that it
+is managing so that it can easily switch back and forth between these
+windows. Dotscreen makes this stored window information available via
+a braille display. Dotscreen only allows access to tty terminal
+sessions, it does not allow access to X-Windows, however, it will run
+in an xterm window. Currently, it works with the TSI Navigator 40 and
+the TSI PowerBraille 40 braille displays. We plan to support other
+displays as demand and information about other displays is made
+available to us
+
+2. Is dotscreen different than screen?
+======================================
+
+All of screens functions still work in dotscreen. A few of the
+functions are not accessible via braille, but we expect to remedy that
+in future releases.
+
+3. Installation instructions
+============================
+
+Please read the INSTALL file for full installation instructions.
+In addition to those instructions, note that you must create
+a .screenrc file and that file must contain the type of braille
+display that you are using and the serial device that the display
+is connected to. A minimal .screenrc file should contain something
+like the following four lines, (these are only examples, please
+customize them for your configuration)
+
+
+# example of .screenrc when using braille display
+bd_start_braille on
+bd_type powerbraille_40
+bd_port /dev/ttyS0
+bd_braille_table /home/gardner/us-braille.tbl
+# end of example
+
+
+4. Functions description
+========================
+
+The basic operation of screen is described in README. The braille
+navigation commands are similar to commands usually found on dos
+braille screenreaders. Also, because dotscreen is built on top of
+screen, the user can switch back and forth easily between many running
+applications. The braille commands can be changed any time after
+starting screen using the internal screen "C-a :" command line. All
+braille commands begin with "bd_"; following is the list of braille
+commands:
+
+bd_start_braille on/off # Starts/stops using braille features on screen
+bd_link on/off # links/unlinks braille cursor to/from screen cursor
+bd_bell on/off # turn on/off sending bell-signal to terminal
+bd_scroll on/off # enables/disables scrolling
+bd_skip on/off # skip/don't skip balnk lines
+bd_width <integer-value> # number of braille cells that user want to use,
+ # this value is always <= total number of cells
+bd_ncrc <interger-value> # number of cells displayed on the right side
+ # of physical cursor (default = 1)
+bd_info <integer-value> # displays braille/screen cursor position
+ # depending on its value, (no info: 0, only
+ # bc-info: 1, only sc-info: 2, bc- and sc-info: 3
+bd_port <serial-device> # serial port which braille display is connected to
+bd_braille_table <bl-table> # braille table to be used. German, US and GS
+ # braille tables are provided
+bd_type <braille-display-type>
+ # braille display type being used
+
+Note: currently valid value for some parameters:
+bd_type:
+ 1. navigator_40
+ 2. powerbraille_40.
+
+bd_braille_table:
+ 1. gr-braille.tbl German braille code
+ 2. us-braille.tbl US computer braille code
+ 3. gs-braille.tbl GS braille code
+
+Since the braille tables are in files, you should give the full
+pathnames of the files either in .screenrc or using the
+internal screen "C-a :" command line.
+
+5. Further development
+======================
+
+As mentioned above, currently Dotscreen works with Telesensory braille
+displays the PowerBraille and the Navigator because Telesensory has
+given us the information needed to program their braille display. We
+plan to add support for other braille displays when and if we get the
+requisite information from the braille display manufacturer.
+Also some things such as cursor navigation from the braille display
+have not been implemented. If you find a feature missing that
+you wish to have, please contact us.
+
+This software has been developed within the Science Access Project at
+Oregon State University under the direction of John Gardner.
+
+Authors: Hadi Bargi Rangin (bargi@dots.physics.orst.edu)
+ Bill Barry (barryb@dots.physics.orst.edu)
+
diff --git a/doc/install.sh b/doc/install.sh
index 8c07c50..3f44f99 100755..120000
--- a/doc/install.sh
+++ b/doc/install.sh
@@ -1,119 +1 @@
-#! /bin/sh
-
-#
-# install - install a program, script, or datafile
-# This comes from X11R5; it is not part of GNU.
-#
-# $XConsortium: install.sh,v 1.2 89/12/18 14:47:22 jim Exp $
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch.
-#
-
-
-# set DOITPROG to echo to test this script
-
-# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit="${DOITPROG-}"
-
-
-# put in absolute paths if you don't have them in your path; or use env. vars.
-
-mvprog="${MVPROG-mv}"
-cpprog="${CPPROG-cp}"
-chmodprog="${CHMODPROG-chmod}"
-chownprog="${CHOWNPROG-chown}"
-chgrpprog="${CHGRPPROG-chgrp}"
-stripprog="${STRIPPROG-strip}"
-rmprog="${RMPROG-rm}"
-
-instcmd="$mvprog"
-chmodcmd=""
-chowncmd=""
-chgrpcmd=""
-stripcmd=""
-rmcmd="$rmprog -f"
-mvcmd="$mvprog"
-src=""
-dst=""
-
-while [ x"$1" != x ]; do
- case $1 in
- -c) instcmd="$cpprog"
- shift
- continue;;
-
- -m) chmodcmd="$chmodprog $2"
- shift
- shift
- continue;;
-
- -o) chowncmd="$chownprog $2"
- shift
- shift
- continue;;
-
- -g) chgrpcmd="$chgrpprog $2"
- shift
- shift
- continue;;
-
- -s) stripcmd="$stripprog"
- shift
- continue;;
-
- *) if [ x"$src" = x ]
- then
- src=$1
- else
- dst=$1
- fi
- shift
- continue;;
- esac
-done
-
-if [ x"$src" = x ]
-then
- echo "install: no input file specified"
- exit 1
-fi
-
-if [ x"$dst" = x ]
-then
- echo "install: no destination specified"
- exit 1
-fi
-
-
-# If destination is a directory, append the input filename; if your system
-# does not like double slashes in filenames, you may need to add some logic
-
-if [ -d $dst ]
-then
- dst="$dst"/`basename $src`
-fi
-
-# Make a temp file name in the proper directory.
-
-dstdir=`dirname $dst`
-dsttmp=$dstdir/#inst.$$#
-
-# Move or copy the file name to the temp name
-
-$doit $instcmd $src $dsttmp
-
-# and set any options; do chmod last to preserve setuid bits
-
-if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; fi
-if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; fi
-if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; fi
-if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; fi
-
-# Now rename the file to the real destination.
-
-$doit $rmcmd $dst
-$doit $mvcmd $dsttmp $dst
-
-
-exit 0
+../install.sh \ No newline at end of file
diff --git a/doc/make.help b/doc/make.help
new file mode 100644
index 0000000..5871773
--- /dev/null
+++ b/doc/make.help
@@ -0,0 +1,51 @@
+######
+######
+###### The following lines should be obsolete because of the 'configure' script.
+###### It is here only for reference if 'configure' needs human help.
+######
+
+
+### If you choose to compile with the tried and true:
+#CC= cc
+#CFLAGS= -O
+#CFLAGS= -g
+### gcc specific CFLAGS:
+#CC= gcc
+# If your system include files are bad, don't use -Wall
+#CFLAGS= -O6 -g #-Wall
+#CFLAGS = -g -fstrength-reduce -fcombine-regs -finline-functions #-Wall
+
+### On some machines special CFLAGS are required:
+#M_CFLAGS=
+#M_CFLAGS= -D__NetBSD__ # NetBsd Machines like this (a.kalb@rrze)
+#M_CFLAGS= -Dapollo -A cpu,mathchip -A nansi # Apollo DN3000/4000/4500
+#M_CFLAGS= -DISC -D_POSIX_SOURCE # isc
+#M_CFLAGS= -systype bsd43 -DMIPS # mips
+#M_CFLAGS= -fforce-mem -fforce-addr\
+# -fomit-frame-pointer -finline-functions -bsd # NeXT
+#M_CFLAGS= -qlanglvl=ansi # RS6000/AIX
+#M_CFLAGS= -qlanglvl=ansi -D_AIX32 # RS6000/AIX 3.2
+#M_CFLAGS= -ansi # sgi/IRIX 3.x ansi
+#M_CFLAGS= -xansi # sgi/IRIX 4.x ext ansi
+#M_CFLAGS= -YBSD # Ultrix 4.x
+#M_CFLAGS= -DSVR4=1 # Bob Kline rvk@blink.att.com 80386 Unix SVR4.0
+#M_CFLAGS= -D_CX_UX # Ken Beal kbeal@amber.ssd.csd.harris.com Harris CX/UX
+#M_CFLAGS= -K pentium # Thanh Ma tma@encore.com Unixware, SVR4-2
+
+### Choose one of the LIBS setting below:
+#LIBS= -ltermcap -lc -lsocket -linet -lsec -lseq # Sequent/ptx
+#LIBS= -lcurses -lelf -lcrypt -lsocket -lnsl # Solaris, when it sucks
+#LIBS= -ltermcap # SunOS, Linux, Apollo,
+# gould_np1, NeXT, Ultrix
+#LIBS= -ltermcap -lelf # SVR4
+#LIBS= -ltermlib -linet -lcposix # isc
+#LIBS= -ltermcap -lmld # mips (nlist is in mld)
+#LIBS= -ltermlib -lsun -lmld #-lc_s # sgi/IRIX
+#LIBS= -lcurses # RS6000/AIX
+#LIBS= -lcrypt_d -ltinfo # sco32
+#LIBS= -lcrypt_i -ltinfo # sco32
+#LIBS= -lcrypt -lsec # sco322 (msilano@sra.com)
+#LIBS= -ltermcap -lcrypt.o -ldir -lx # SCO XENIX 2.3.4
+#LIBS= -ltermcap -lcrypt -ldir -l2.3 -lx # SCO UNIX XENIX cross dev.
+#LIBS= -ltermcap -lelf -lcrypt -lsocket -lnet -lnsl # Bob Kline SVR4
+#LIBS= -lcurses -lelf -lcrypt -lgen # Thanh Ma, Unixware, SVR4-2
diff --git a/doc/screen.1 b/doc/screen.1
index d30e94e..74c35d4 100644
--- a/doc/screen.1
+++ b/doc/screen.1
@@ -1,5 +1,5 @@
.\" vi:set wm=5
-.TH SCREEN 1 "15 Oct 1995"
+.TH SCREEN 1 "10 Jun 1999"
.if n .ds Q \&"
.if n .ds U \&"
.if t .ds Q ``
@@ -20,7 +20,10 @@ screen \- screen manager with VT100/ANSI terminal emulation
] ]
.br
.B screen \-r
-[ [\fIpid.\fP]\fItty\fP[\fI.host\fP] ]
+[[\fIpid\fP\fB.\fP]\fItty\fP[\fB.\fP\fIhost\fP]]
+.br
+.B screen \-r
+\fIsessionowner\fP\fB/\fP[[\fIpid\fP\fB.\fP]\fItty\fP[\fB.\fP\fIhost\fP]]
.ta .5i 1.8i
@@ -31,7 +34,7 @@ multiplexes a physical terminal between several processes (typically
interactive shells).
Each virtual terminal provides the functions
of a DEC VT100 terminal and, in addition, several control functions
-from the ANSI X3.64 (ISO 6429) and ISO 2022 standards
+from the ISO 6492 (ECMA 48, ANSI X3.64) and ISO 2022 standards
(e.\|g. insert/delete line and support for multiple character sets).
There is a scrollback history buffer for each virtual terminal and a
copy-and-paste mechanism that allows moving text regions between
@@ -46,8 +49,11 @@ Then, at any time, you can create new (full-screen) windows with other programs
in them (including more shells), kill existing windows, view a list of
windows, turn output logging on and off, copy-and-paste text between
windows, view the scrollback history, switch between windows
-in whatever manner you wish, etc.
-When a program terminates,
+in whatever manner you wish, etc. All windows run their programs completely
+independent of each other. Programs continue to run when their window
+is currently not visible and even when the whole
+.I screen
+session is detached from the user's terminal. When a program terminates,
.I screen
(per default) kills the window that contained it.
If this window was in the foreground, the display switches to the previous
@@ -63,6 +69,17 @@ now on), and is followed by one other keystroke.
The command character and all the key bindings can be fully customized
to be anything you like, though they are always two characters in length.
.PP
+.I Screen
+does not understand the prefix \*QC-\*U to mean control.
+Please use the caret notation (\*Q^A\*U instead of \*QC-a\*U) as arguments
+to e.g. the
+.I escape
+command or the
+.I -e
+option.
+.I Screen
+will also print out control characters in caret notation.
+.PP
The standard way to create a new window is to type \*QC-a c\*U.
This creates a new window running a shell and switches to that
window immediately, regardless of the state of the process running
@@ -120,8 +137,9 @@ automatic margins turned \fIoff\fP. This will ensure an accurate and
optimal update of the screen in all circumstances. Most terminals
nowadays have \*Qmagic\*U margins (automatic margins plus usable last
column). This is the VT100 style type and perfectly suited for
-\fIscreen\fP.
-If all you've got is a \*Qtrue\*U auto-margin terminal \fIscreen\fP
+.IR screen .
+If all you've got is a \*Qtrue\*U auto-margin terminal
+.I screen
will be content to use it, but updating a character put into the last
position on the screen may not be possible until the screen scrolls or
the character is moved into a safe position in some other way. This
@@ -155,12 +173,34 @@ does not start
but detaches the elsewhere running
.I screen
session. It has the same effect as typing \*QC-a d\*U from
-.I screen's
+.IR screen 's
controlling terminal. \fB\-D\fP is the equivalent to the power detach key.
-If no session can be detached, this option is ignored.
-The combination \*Qscreen \-D \-r\*U can be used to `transport' the elsewhere
-running session to this terminal and logout there.
-Note: It is a good idea to have the status of your sessions checked by means of
+If no session can be detached, this option is ignored. In combination with the
+\fB\-r\fP/\fB\-R\fP option more powerful effects can be achieved:
+.TP 8
+.B \-d \-r
+Reattach a session and if necessary detach it first.
+.TP 8
+.B \-d \-R
+Reattach a session and if necessary detach or even create it first.
+.TP 8
+.B \-d \-RR
+Reattach a session and if necessary detach or create it. Use the first
+session if more than one session is available.
+.TP 8
+.B \-D \-r
+Reattach a session. If necessary detach and logout remotely first.
+.TP 8
+.B \-D \-R
+Attach here and now. In detail this means: If a session is running, then
+reattach. If necessary detach and logout remotely first.
+If it was not running create it and notify the user. This is the
+author's favorite.
+.TP 8
+.B \-D \-RR
+Attach here and now. Whatever that means, just do it.
+.IP "" 5
+Note: It is always a good idea to check the status of your sessions by means of
\*Qscreen \-list\*U.
.TP 5
.BI "\-e " xy
@@ -202,17 +242,22 @@ strings identifying your
.I screen
sessions.
Sessions marked `detached' can be resumed with \*Qscreen -r\*U. Those marked
-`attached' are running and have a controlling terminal. Sessions marked as
-`dead' should be thoroughly checked and removed. Ask your system administrator
-if you are not sure. Remove sessions with the \fB-wipe\fP option.
+`attached' are running and have a controlling terminal. If the session runs in
+multiuser mode, it is marked `multi'. Sessions marked as `unreachable' either
+live on a different host or are `dead'.
+An unreachable session is considered dead, when its name
+matches either the name of the local host, or the specified parameter, if any.
+See the \fB-r\fP flag for a description how to construct matches.
+Sessions marked as `dead' should be thoroughly checked and removed.
+Ask your system administrator if you are not sure. Remove sessions with the
+\fB-wipe\fP option.
.TP 5
.B \-L
tells
.I screen
your auto-margin terminal has a writable last-position on
-the screen.
-This can also be set in your .screenrc by specifying `LP' in a \*Qtermcap\*U
-command.
+the screen. This can also be set in your .screenrc by specifying `LP' in a
+\*Qtermcap\*U command.
.TP 5
.B \-m
causes
@@ -222,7 +267,18 @@ a new session is enforced, regardless whether
.I screen
is called from within another
.I screen
-session or not.
+session or not. This flag has a special meaning in connection
+with the `-d' option:
+.TP 8
+.B \-m \-d
+Start
+.I screen
+in \*Qdetached\*U mode. This creates a new session but doesn't
+attach to it. This is useful for system startup scripts.
+.TP 8
+.B \-m \-D
+This also starts screen in \*Qdetached\*U mode, but doesn't fork
+a new process. The command exits if the session terminates.
.TP 5
.B \-O
selects a more optimal output mode for your terminal rather than true VT100
@@ -230,27 +286,42 @@ emulation (only affects auto-margin terminals without `LP').
This can also be set in your .screenrc by specifying `OP' in a \*Qtermcap\*U
command.
.TP 5
+.B \-q
+Suppress printing of error messages. In combination with \*Q-ls\*U the exit
+value is as follows: 9 indicates a directory without sessions. 10
+indicates a directory with running but not attachable sessions. 11 (or more)
+indicates 1 (or more) usable sessions.
+In combination with \*Q-r\*U the exit value is as follows: 10 indicates that
+there is no session to resume. 12 (or more) indicates that there are 2 (or
+more) sessions to resume and you should specify which one to choose.
+In all other cases \*Q-q\*U has no effect.
+.TP 5
.BR \-r " [" \fIpid.tty.host ]
+.PD 0
+.TP 5
+.BR \-r " \fIsessionowner/[" \fIpid.tty.host ]
+.PD
resumes a detached
.I screen
-session.
-No other options (except \*Q-d -r\*U or \*Q-D -r\*U) may be specified, though
-an optional prefix of [\fIpid.\fP]\fItty.host\fP
+session. No other options (except combinations with \fB\-d\fP/\fB\-D\fP) may
+be specified, though an optional prefix of [\fIpid.\fP]\fItty.host\fP
may be needed to distinguish between multiple detached
.I screen
-sessions.
+sessions. The second form is used to connect to another user's screen session
+which runs in multiuser mode. This indicates that screen should look for
+sessions in another user's directory. This requires setuid-root.
.TP 5
.B \-R
attempts to resume the first detached
.I screen
-session it finds.
-If successful, all other command-line options are ignored.
+session it finds. If successful, all other command-line options are ignored.
If no detached session exists, starts a new session using the specified
options, just as if
.B \-R
had not been specified. The option is set by default if
.I screen
is run as a login-shell.
+For combinations with the \fB\-d\fP/\fB\-D\fP option see there.
.TP 5
.B \-s
sets the default shell to the program specified, instead of the value
@@ -270,9 +341,12 @@ See also the \*Qshelltitle\*U .screenrc command.
.B \-v
Print version number.
.TP 5
-.B \-wipe
+.BR \-wipe " [" \fImatch ]
does the same as \*Qscreen -ls\*U, but removes destroyed sessions instead of
marking them as `dead'.
+An unreachable session is considered dead, when its name matches either
+the name of the local host, or the explicitly given parameter, if any.
+See the \fB-r\fP flag for a description how to construct matches.
.TP 5
.B \-x
Attach to a not detached
@@ -303,13 +377,17 @@ Prompt for a window name or number to switch to.
.PD 0
.IP "\fB ... \fP ..."
.IP "\fBC-a 9\fP (select 9)"
+.IP "\fBC-a -\fP (select -)"
+.PD
+Switch to window number 0 \- 9, or to the blank window.
+.IP "\fBC-a tab\fP (focus)"
.PD
-Switch to window number 0 \- 9.
+Switch the input focus to the next region.
.IP "\fBC-a C-a\fP (other)"
Toggle to the window displayed previously.
Note that this binding defaults to the command character typed twice,
-unless overridden; for instance, if you use the option \*Q\fB\-e]x\fP\*U,
-this command becomes \*Q]]\*U, not \*Q]C-a\*U.
+unless overridden. For instance, if you use the option \*Q\fB\-e]x\fP\*U,
+this command becomes \*Q]]\*U.
.IP "\fBC-a a\fP (meta)"
Send the command character (C-a) to window. See \fIescape\fP command.
.IP "\fBC-a A\fP (title)"
@@ -342,6 +420,8 @@ Detach and logout.
.IP "\fBC-a C-f\fP (flow)"
.PD
Toggle flow \fIon\fP, \fIoff\fP or \fIauto\fP.
+.IP "\fBC-a F\fP (fit)"
+Resize the window to the current region size.
.IP "\fBC-a C-g\fP (vbell)"
Toggles
.I screen's
@@ -397,6 +477,8 @@ Switch to the previous window (opposite of \fBC-a n\fP).
.IP "\fBC-a C-q\fP (xon)"
.PD
Send a control-q to the current window.
+.IP "\fBC-a Q\fP (only)"
+Delete all regions but the current one.
.IP "\fBC-a r\fP"
.PD 0
.IP "\fBC-a C-r\fP (wrap)"
@@ -408,6 +490,8 @@ automatic margins on and off).
.IP "\fBC-a C-s\fP (xoff)"
.PD
Send a control-s to the current window.
+.IP "\fBC-a S\fP (split)"
+Split the current region into two new ones.
.IP "\fBC-a t\fP"
.PD 0
.IP "\fBC-a C-t\fP (time)"
@@ -431,6 +515,8 @@ Toggle 80/132 columns.
.IP "\fBC-a C-x\fP (lockscreen)"
.PD
Lock this terminal.
+.IP "\fBC-a X\fP (remove)"
+Kill the current region.
.IP "\fBC-a z\fP"
.PD 0
.IP "\fBC-a C-z\fP (suspend)"
@@ -458,7 +544,7 @@ Enter copy/scrollback mode.
.IP "\fBC-a ]\fP (paste .)"
.PD
Write the contents of the paste buffer to the stdin queue of the
-current window.
+current window.
.IP "\fBC-a {\fP
.PD 0
.IP "\fBC-a }\fP (history)"
@@ -476,6 +562,8 @@ Shows where
comes from, where it went to and why you can use it.
.IP "\fBC-a _\fP (silence)"
Start/stop monitoring the current window for inactivity.
+.IP "\fBC-a *\fP (displays)"
+Show a listing of all currently attached displays.
.SH CUSTOMIZATION
@@ -487,7 +575,7 @@ should compile
.I screen
with an adequate (not NFS mounted) socket directory. If
.I screen
-is not running setuid-root, the user can specify any mode 777 directory
+is not running setuid-root, the user can specify any mode 700 directory
in the environment variable $SCREENDIR.
.PP
When
@@ -496,12 +584,12 @@ is invoked, it executes initialization commands from the files
\*Q/usr/local/etc/screenrc\*U and
\*Q.screenrc\*U in the user's home directory. These are the \*Qprogrammer's
defaults\*U that can be overridden in the following ways: for the
-global screenrc file
+global screenrc file
.I screen
searches for the environment variable $SYSSCREENRC (this override feature
may be disabled at compile-time). The user specific
-screenrc file is searched in $ISCREENRC, then $SCREENRC, then $HOME/.iscreenrc
-and finally defaults to $HOME/.screenrc. The command line option \fB-c\fP takes
+screenrc file is searched in $SCREENRC, then $HOME/.screenrc.
+The command line option \fB-c\fP takes
precedence over the above user screenrc files.
.PP
Commands in these files are used to set options, bind functions to
@@ -514,51 +602,66 @@ A command's arguments are separated by tabs or spaces, and may be
surrounded by single or double quotes.
A `#' turns the rest of the line into a comment, except in quotes.
Unintelligible lines are warned about and ignored.
-Commands may contain references to environment variables. The
-syntax is the shell-like "$VAR " or "${VAR}". Note that this causes
-incompatibility with previous
+Commands may contain references to environment variables. The
+syntax is the shell-like "$VAR " or "${VAR}". Note that this causes
+incompatibility with previous
.I screen
versions, as now the '$'-character has to be protected with '\e' if no
variable substitution shall be performed. A string in single-quotes is also
protected from variable substitution.
.PP
+Two configuration files are shipped as examples with your screen distribution:
+\*Qetc/screenrc\*U and \*Qetc/etcscreenrc\*U. They contain a number of
+useful examples for various commands.
+.PP
Customization can also be done 'on-line'. To enter the command mode type
`C-a :'. Note that commands starting with \*Qdef\*U change default values,
while others change current settings.
.PP
The following commands are available:
-.sp
+.sp
.ne 3
.BI acladd " usernames"
+.RI [ crypted-pw ]
+.br
+.BI addacl " usernames"
.PP
Enable users to fully access this screen session. \fIUsernames\fP can be one
-user or a comma seperated list of users. This command enables to attach to the
+user or a comma separated list of users. This command enables to attach to the
.I screen
session and performs the equivalent of `aclchg \fIusernames\fP +rwx \&"#?\&"'.
executed. To add a user with restricted access, use the `aclchg' command below.
+If an optional second parameter is supplied, it should be a crypted password
+for the named user(s). `Addacl' is a synonym to `acladd'.
Multi user mode only.
-.sp
+.sp
.ne 3
.BI aclchg " usernames permbits list"
+.br
+.BI chacl " usernames permbits list"
.PP
-Change permissions for a comma seperated list of users. Permission bits are
-represented as `r', `w' and `x'. Prefixing `+' grants the permission, `-'
-removes it. The third parameter is a comma seperated list of commands and/or
-windows (specified either by number or title). The special list `#' refers to
+Change permissions for a comma separated list of users. Permission bits are
+represented as `r', `w' and `x'. Prefixing `+' grants the permission, `-'
+removes it. The third parameter is a comma separated list of commands and/or
+windows (specified either by number or title). The special list `#' refers to
all windows, `?' to all commands. if \fIusernames\fP consists of a single `*',
all known users are affected.
A command can be executed when the user has the `x' bit for it.
The user can type input to a window when he has its `w' bit set and no other
-user obtains a writelock for this window.
-Other bits are currently ignored.
+user obtains a writelock for this window.
+Other bits are currently ignored.
To withdraw the writelock from another user in window 2:
`aclchg \fIusername\fP -w+w 2'.
-To allow readonly access to the session: `aclchg \fIusername\fP
--w \&"#\&"'. As soon as a user's name is known to
-.I screen
-he can attach to the session and (per default) has full permissions for all
+To allow read-only access to the session: `aclchg \fIusername\fP
+-w \&"#\&"'. As soon as a user's name is known to
+.I screen
+he can attach to the session and (per default) has full permissions for all
command and windows. Execution permission for the acl commands, `at' and others
should also be removed or the user may be able to regain write permission.
+Rights of the special username
+.B nobody
+cannot be changed (see the \*Qsu\*U command).
+`Chacl' is a synonym to `aclchg'.
Multi user mode only.
.sp
.ne 3
@@ -571,6 +674,42 @@ user's displays are detached from the session. He cannot attach again.
Multi user mode only.
.sp
.ne 3
+.BI aclgrp " username"
+.RI [ groupname ]
+.PP
+Creates groups of users that share common access rights. The name of the
+group is the username of the group leader. Each member of the group inherits
+the permissions that are granted to the group leader. That means, if a user
+fails an access check, another check is made for the group leader.
+A user is removed from all groups the special value \*Qnone\*U is used for
+.IR groupname .
+If the second parameter is omitted all groups the user is in are listed.
+.sp
+.ne 3
+.B aclumask
+.RI [[ users ] +bits
+.RI |[ users ] -bits " .... ]"
+.B umask
+.RI [[ users ] +bits
+.RI |[ users ] -bits " .... ]"
+.PP
+This specifies the access other users have to windows that will be created by
+the caller of the command.
+.I Users
+may be no, one or a comma separated list of known usernames. If no users are
+specified, a list of all currently known users is assumed.
+.I Bits
+is any combination of access control bits allowed defined with the
+\*Qaclchg\*U command. The special username \*Q?\*U predefines the access
+that not yet known users will be granted to any window initially.
+The special username \*Q??\*U predefines the access that not yet known
+users are granted to any command.
+Rights of the special username
+.B nobody
+cannot be changed (see the \*Qsu\*U command).
+`Umask' is a synonym to `aclumask'.
+.sp
+.ne 3
.BI activity " message"
.PP
When any activity occurs in a background window that is being monitored,
@@ -580,11 +719,11 @@ The notification message can be re-defined by means of the \*Qactivity\*U
command.
Each occurrence of `%' in \fImessage\fP is replaced by
the number of the window in which activity has occurred,
-and each occurrence of `~' is replaced by the definition for bell
+and each occurrence of `^G' is replaced by the definition for bell
in your termcap (usually an audible bell).
The default message is
.sp
- 'Activity in window %'
+ 'Activity in window %n'
.sp
Note that monitoring is off for all windows by default, but can be altered
by use of the \*Qmonitor\*U command (C-a M).
@@ -593,11 +732,11 @@ by use of the \*Qmonitor\*U command (C-a M).
.BR "allpartial on" | off
.PP
If set to on, only the current cursor line is refreshed on window change.
-This affects all windows and is useful for slow terminal lines. The
+This affects all windows and is useful for slow terminal lines. The
previous setting of full/partial refresh for each window is restored
with \*Qallpartial off\*U. This is a global flag that immediately takes effect
on all windows overriding the \*Qpartial\*U settings. It does not change the
-default redraw behaviour of newly created windows.
+default redraw behavior of newly created windows.
.sp
.ne 3
.BR "at " "[\fIidentifier\fP][" "#\fP|\fP*\fP|\fP%\fP] "
@@ -605,34 +744,56 @@ default redraw behaviour of newly created windows.
.PP
Execute a command at other displays or windows as if it had been entered there.
\*QAt\*U changes the context (the `current window' or `current display'
-setting) of the command. If the first parameter describes a
-non-unique context, the command will be executed multiple times. If the first
+setting) of the command. If the first parameter describes a
+non-unique context, the command will be executed multiple times. If the first
parameter is of the form `\fIidentifier\fP*' then identifier is matched against
-user names. The command is executed once for each display of the selected
-user(s). If the first parameter is of the form `\fIidentifier\fP%' identifier
-is matched against displays. Displays are named after the ttys they
+user names. The command is executed once for each display of the selected
+user(s). If the first parameter is of the form `\fIidentifier\fP%' identifier
+is matched against displays. Displays are named after the ttys they
attach. The prefix `/dev/' or `/dev/tty' may be omitted from the identifier.
-If \fIidentifier\fP has a `#' or nothing appended it is matched against
-window numbers and titles. Omitting an identifier in front of the `#', `*' or
+If \fIidentifier\fP has a `#' or nothing appended it is matched against
+window numbers and titles. Omitting an identifier in front of the `#', `*' or
`%'-character selects all users, displays or windows because a prefix-match is
performed. Note that on the affected display(s) a short message will describe
-what happened. Caution: Permission is checked for the owners or the
-affected display(s), not for the initiator of the `at' command.
+what happened. Permission is checked for initiator of the \*Qat\*U command,
+not for the owners of the affected display(s).
+Note that the '#' character works as a comment introducer when it is preceded by
+whitespace. This can be escaped by prefixing a '\e'.
+Permission is checked for the initiator of the \*Qat\*U command, not for the
+owners of the affected display(s).
+.br
+Caveat:
+When matching against windows, the command is executed at least
+once per window. Commands that change the internal arrangement of windows
+(like \*Qother\*U) may be called again. In shared windows the command will
+be repeated for each attached display. Beware, when issuing toggle commands
+like \*Qlogin\*U!
+Some commands (e.g. \*Qstuff\*U, \*Qprocess\*U or \*Qpaste\*U) require that
+a display is associated with the target windows. These commands may not work
+correctly under \*Qat\*U looping over windows.
.sp
.ne 3
.BR "autodetach on" | off
.PP
-Sets whether
+Sets whether
.I screen
will automatically detach upon hangup, which
saves all your running programs until they are resumed with a
.B "screen -r"
command.
-When turned off, a hangup signal will terminate
+When turned off, a hangup signal will terminate
.I screen
and all the processes it contains. Autodetach is on by default.
.sp
.ne 3
+.BR "autofixterm on" | off
+.PP
+Sets whether
+.I screen
+will add missing capabilities to the termcap/info entry. It is on
+by default.
+.sp
+.ne 3
.BR "autonuke on" | off
.PP
Sets whether a clear screen sequence should nuke all the output
@@ -640,26 +801,27 @@ that has not been written to the terminal. See also
\*Qobuflimit\*U.
.sp
.ne 3
-.BI "bell " message
+.B bell_msg
+.RI [ message ]
.PP
When a bell character is sent to a background window,
.I screen
displays a notification in the message line.
-The notification message can be re-defined by means of the \*Qbell\*U
-command.
+The notification message can be re-defined by this command.
Each occurrence of `%' in \fImessage\fP is replaced by
the number of the window to which a bell has been sent,
-and each occurrence of `~' is replaced by the definition for bell
+and each occurrence of `^G' is replaced by the definition for bell
in your termcap (usually an audible bell).
The default message is
.sp
- 'Bell in window %'
+ 'Bell in window %n'
.sp
-An empty message can be supplied to the \*Qbell\*U command to suppress
-output of a message line (bell "").
+An empty message can be supplied to the \*Qbell_msg\*U command to suppress
+output of a message line (bell_msg "").
+Without parameter, the current message is shown.
.sp
.ne 3
-.BI "bind " key
+.BI "bind " key
.RI [ command " [" args ]]
.PP
Bind a command to a key.
@@ -683,17 +845,22 @@ Some examples:
.PP
.nf
bind ' ' windows
+ bind ^k
+ bind k
+ bind K kill
bind ^f screen telnet foobar
bind \e033 screen -ln -t root -h 1000 9 su
.fi
.PP
would bind the space key to the command that displays a list
of windows (so that the command usually invoked by \*QC-a C-w\*U
-would also be available as \*QC-a space\*U),
-bind \*QC-f\*U to the command \*Qcreate a window with a TELNET
+would also be available as \*QC-a space\*U). The next three lines
+remove the default kill binding from \*QC-a C-k\*U and \*QC-a k\*U.
+\*QC-a K\*U is then bound to the kill command. Then it
+binds \*QC-f\*U to the command \*Qcreate a window with a TELNET
connection to foobar\*U, and bind \*Qescape\*U to the command
that creates an non-login window with a.\|k.\|a. \*Qroot\*U in slot #9, with
-a super-user shell and a scrollback buffer of 1000 lines.
+a superuser shell and a scrollback buffer of 1000 lines.
.sp
.ne 3
.B bindkey
@@ -735,15 +902,15 @@ option.
.br
The
.B -t
-option tells screen not to do intercharacter timing. One cannot
-turn off the timing if a termcap capabilty is used.
+option tells screen not to do inter-character timing. One cannot
+turn off the timing if a termcap capability is used.
.br
.I Cmd
can be any of screen's commands with an arbitrary number of
.IR args .
If
.I cmd
-is omitted the keybinding is removed from the table.
+is omitted the key-binding is removed from the table.
.br
Here are some examples of keyboard bindings:
.sp
@@ -761,13 +928,13 @@ Make the "F1" key switch to window one.
.nf
bindkey -t foo stuff barfoo
.fi
-Make "foo" an abrevation of the word "barfoo". Timeout is disabled
+Make "foo" an abbreviation of the word "barfoo". Timeout is disabled
so that users can type slowly.
.sp
.nf
bindkey "\e024" mapdefault
.fi
-This keybinding makes \*Q^T\*U an escape character for keybindings. If
+This key-binding makes \*Q^T\*U an escape character for key-bindings. If
you did the above \*Qstuff barfoo\*U binding, you can enter the word
\*Qfoo\*U by typing \*Q^Tfoo\*U. If you want to insert a \*Q^T\*U
you have to press the key twice (i.e. escape the escape binding).
@@ -783,17 +950,31 @@ escape (besides ^A).
.RI [ duration ]
.PP
Send a break signal for \fIduration\fP*0.25 seconds to this window.
-Most useful if a character device is
-attached to the window rather than a shell process.
+For non-Posix systems the time interval may be rounded up to full seconds.
+Most useful if a character device is attached to the window rather than
+a shell process (See also chapter \*QWINDOW TYPES\*U). The maximum duration of
+a break signal is limited to 15 seconds.
+.sp
+.ne 3
+.B breaktype
+.RI [ tcsendbreak | TIOCSBRK
+.RI | TCSBRK ]
+.PP
+Choose one of the available methods of generating a break signal for
+terminal devices. This command should affect the current window only.
+But it still behaves identical to \*Qdefbreaktype\*U. This will be changed in
+the future.
+Calling \*Qbreaktype\*U with no parameter displays the break method for the
+current window.
.sp
.ne 3
.B bufferfile
.RI [ exchange-file ]
.PP
Change the filename used for reading and writing with the paste buffer.
-If the optional argument to the \*Qbufferfile\*U command is omitted,
+If the optional argument to the \*Qbufferfile\*U command is omitted,
the default setting (\*Q/tmp/screen-exchange\*U) is reactivated.
-The following example will paste the system's password file into
+The following example will paste the system's password file into
the
.I screen
window (using the paste buffer, where a copy remains):
@@ -816,6 +997,27 @@ Users with fonts that have usable characters in the
c1 positions may want to turn this off.
.sp
.ne 3
+.BR "caption always" | splitonly
+.RI [ string ]
+.br
+.B "caption string"
+.RI [ string ]
+.PP
+This command controls the display of the window captions. Normally
+a caption is only used if more than one window is shown on the
+display (split screen mode). But if the type is set to
+.B always
+screen shows a caption even if only one window is displayed. The default
+is
+.BR splitonly .
+.P
+The second form changes the text used for the caption. You can use
+all escapes from the \*QSTRING ESCAPES\*U chapter. Screen uses
+a default of `%3n %t'.
+.P
+You can mix both forms by providing a string as an additional argument.
+.sp
+.ne 3
.BI "charset " set
.PP
Change the current character set slot designation and charset
@@ -861,28 +1063,37 @@ Clears the current window and saves its image to the scrollback buffer.
.B colon
.RI [ prefix ]
.PP
-Allows you to enter \*Q.screenrc\*U command lines. Useful
-for on-the-fly modification of key bindings,
+Allows you to enter \*Q.screenrc\*U command lines. Useful
+for on-the-fly modification of key bindings,
specific window creation and changing settings. Note that the \*Qset\*U
-keyword no longer exists! Usually commands affect the current window rather
+keyword no longer exists! Usually commands affect the current window rather
than default settings for future windows. Change defaults with commands
-starting with 'def...'.
+starting with 'def...'.
-If you consider this as the `Ex command mode' of
+If you consider this as the `Ex command mode' of
.IR screen ,
you may regard \*QC-a esc\*U (copy mode) as its `Vi command mode'.
-.sp
+.sp
.ne 3
.B command
.PP
This command has the same effect as typing the screen escape
character (^A). It is probably only useful for key bindings.
See also \*Qbindkey\*U.
-.sp
+.sp
+.ne 3
+.BR "compacthist " [ on | off ]
+.PP
+This tells screen weather to suppress trailing blank lines when
+scrolling up text into the history buffer.
+.sp
.ne 3
.BR "console " [ on | off ]
.PP
-Grabs or ungrabs the machines console output to a window.
+Grabs or un-grabs the machines console output to a window.
+.IR Note :
+Only the owner of /dev/console can grab the console output.
+This command is only available if the machine supports the ioctl TIOCCONS.
.sp
.ne 3
.B copy
@@ -895,7 +1106,7 @@ window and its history into the paste buffer. In this mode a vi-like
.br
.in +4n
.ti -2n
-\fBh\fP, \fBj\fP, \fBk\fP, \fBl\fP move the cursor line by line or
+\fBh\fP, \fBj\fP, \fBk\fP, \fBl\fP move the cursor line by line or
column by column.
.br
.ti -2n
@@ -904,23 +1115,23 @@ non-whitespace character on the line.
.br
.ti -2n
\fBH\fP, \fBM\fP and \fBL\fP move the cursor to the leftmost column
-of the top, center or bottom line of the window.
+of the top, center or bottom line of the window.
.br
.ti -2n
\fB+\fP and \fB\-\fP positions one line up and down.
.br
.ti -2n
\fBG\fP moves to the specified absolute line (default: end of buffer).
-.br
+.br
.ti -2n
\fB|\fP moves to the specified absolute column.
.br
.ti -2n
\fBw\fP, \fBb\fP, \fBe\fP move the cursor word by word.
-.br
+.br
.ti -2n
-\fBC-u\fP and \fBC-d\fP scroll the display up/down by the specified amount of
-lines while preserving the cursor position. (Default: half screen-full).
+\fBC-u\fP and \fBC-d\fP scroll the display up/down by the specified amount of
+lines while preserving the cursor position. (Default: half screen-full).
.br
.ti -2n
\fBC-b\fP and \fBC-f\fP scroll the display up/down a full screen.
@@ -936,36 +1147,36 @@ lines while preserving the cursor position. (Default: half screen-full).
.IR Note :
.br
Emacs style movement keys can be customized by a .screenrc command.
-(E.\|g. markkeys "h=^B:l=^F:$=^E") There is no simple method for a full
+(E.\|g. markkeys "h=^B:l=^F:$=^E") There is no simple method for a full
emacs-style keymap, as this involves multi-character codes.
.br
.ti -4n
.IR Marking :
.br
-The copy range is specified by setting two marks. The text between these marks
-will be highlighted. Press
+The copy range is specified by setting two marks. The text between these marks
+will be highlighted. Press
.br
.ti -2n
\fBspace\fP to set the first or second mark
respectively.
.br
.ti -2n
-\fBY\fP and \fBy\fP used to mark one whole line or to mark from
+\fBY\fP and \fBy\fP used to mark one whole line or to mark from
start of line.
.br
.ti -2n
-\fBW\fP marks exactly one word.
-.br
+\fBW\fP marks exactly one word.
+.br
.ti -4n
.IR "Repeat count" :
.br
-Any of these commands can be prefixed with a repeat count number by pressing
-digits
+Any of these commands can be prefixed with a repeat count number by pressing
+digits
.br
.ti -2n
\fB0\fP..\fB9\fP which
-is taken as a repeat count.
+is taken as a repeat count.
.br
Example: \*QC-a C-[ H 10 j 5 Y\*U will copy lines
11 to 15 into the paste buffer.
@@ -976,7 +1187,7 @@ Example: \*QC-a C-[ H 10 j 5 Y\*U will copy lines
\fB/\fP \fIVi\fP-like search forward.
.ti -2n
\fB?\fP \fIVi\fP-like search backward.
-.ti -2n
+.ti -2n
\fBC-a s\fP \fIEmacs\fP style incremental search forward.
.ti -2n
\fBC-r\fP \fIEmacs\fP style reverse i-search.
@@ -988,13 +1199,13 @@ There are however some keys that act differently than in
.I Vi
does not allow one to yank rectangular blocks of text, but
.I screen
-does. Press
+does. Press
.br
.ti -2n
\fBc\fP or \fBC\fP to set the left or right margin respectively. If no repeat count is
-given, both default to the current cursor position.
+given, both default to the current cursor position.
.br
-Example: Try this on a rather full text screen:
+Example: Try this on a rather full text screen:
\*QC-a [ M 20 l SPACE c 10 l 5 j C SPACE\*U.
This moves one to the middle line of the screen, moves in 20 columns left,
@@ -1007,16 +1218,16 @@ the paste buffer. Now try:
and notice the difference in the amount of text copied.
.br
.ti -2n
-\fBJ\fP joins lines. It toggles between
-3 modes: lines separated by a newline character (012), lines glued seamless,
-lines separated by a single whitespace. Note that you can prepend the newline
+\fBJ\fP joins lines. It toggles between 4 modes: lines separated by a
+newline character (012), lines glued seamless, lines separated by a single
+whitespace and comma separated lines. Note that you can prepend the newline
character with a carriage return character, by issuing a \*Qcrlf on\*U.
.br
.ti -2n
\fBv\fP is for all the
-.I vi
+.I vi
users with \*Q:set numbers\*U \- it toggles the left margin between column 9
-and 1. Press
+and 1. Press
.br
.ti -2n
\fBa\fP before the final space key to toggle in append mode. Thus
@@ -1027,10 +1238,10 @@ the contents of the paste buffer will not be overwritten, but is appended to.
.br
.ti -2n
\fB>\fP sets the (second) mark and writes the contents of the paste buffer to
-the screen-exchange file (/tmp/screen-exchange per default) once copy-mode is
-finished.
+the screen-exchange file (/tmp/screen-exchange per default) once copy-mode is
+finished.
.br
-This example demonstrates how to dump the whole scrollback buffer
+This example demonstrates how to dump the whole scrollback buffer
to that file: \*QC-A [ g SPACE G $ >\*U.
.br
.ti -2n
@@ -1054,20 +1265,22 @@ All keys not described here exit copy mode.
No longer exists, use \*Qreadreg\*U instead.
.sp
.ne 3
-.BR "crlf on" | off
+.BR "crlf " [ on | off ]
.PP
This affects the copying of text regions with the `C-a [' command. If it is set
-to `on', lines will be separated by the two character sequence `CR' - `LF'.
+to `on', lines will be separated by the two character sequence `CR' - `LF'.
Otherwise (default) only `LF' is used.
+When no parameter is given, the state is toggled.
.sp
.ne 3
.BR "debug on" | off
.PP
-Turns runtime debugging on or off. If
+Turns runtime debugging on or off. If
.I screen
-has been compiled with option -DDEBUG debugging available and is turned on per
-default. Note that this command only affects debugging output from the main
-\*QSCREEN\*U process.
+has been compiled with option -DDEBUG debugging available and is turned on per
+default. Note that this command only affects debugging output from the main
+\*QSCREEN\*U process correctly. Debug output from attacher processes can only
+be turned off once and forever.
.sp
.ne 3
.BR "defc1 on" | off
@@ -1083,6 +1296,26 @@ Note that you can use the special `AN' terminal capability if you
want to have a dependency on the terminal type.
.sp
.ne 3
+.B defbreaktype
+.RI [ tcsendbreak | TIOCSBRK
+.RI | TCSBRK ]
+.PP
+Choose one of the available methods of generating a break signal for
+terminal devices. The preferred methods are
+.IR tcsendbreak " and " TIOCSBRK .
+The third,
+.IR TCSBRK ,
+blocks the complete
+.I screen
+session for the duration
+of the break, but it may be the only way to generate long breaks.
+.IR Tcsendbreak " and " TIOCSBRK
+may or may not produce long breaks with spikes (e.g. 4 per
+second). This is not only system dependant, this also differs between
+serial board drivers.
+Calling \*Qdefbreaktype\*U with no parameter displays the current setting.
+.sp
+.ne 3
.BR "defcharset " [ \fIset ]
.PP
Like the \fBcharset\fP command except that the default setting for
@@ -1092,22 +1325,22 @@ argument.
.ne 3
.BI "defescape " xy
.PP
-Set the default command characters. This is equivalent to the
+Set the default command characters. This is equivalent to the
\*Qescape\*U except that it is useful multiuser sessions only. In a
multiuser session \*Qescape\*U changes the command character of the
calling user, where \*Qdefescape\*U changes the default command
characters for users that will be added later.
.sp
.ne 3
-.BR "defflow on" | off | auto
+.BR "defflow on" | off | auto
.RB [ interrupt ]
.PP
-Same as the \fBflow\fP command except that the default setting for new windows
+Same as the \fBflow\fP command except that the default setting for new windows
is changed. Initial setting is `auto'.
Specifying \*Qdefflow auto interrupt\*U is the same as the command-line options
.B \-fa
and
-.BR \-i .
+.BR \-i .
.sp
.ne 3
.BR "defgr on" | off
@@ -1125,7 +1358,7 @@ display the window number or title or the like.
.I Status
may contain the same directives as in the window messages, but
the directive escape character is '^E' (octal 005) instead of '%'.
-This was done to make a misinterpretion of program generated
+This was done to make a misinterpretation of program generated
hardstatus lines impossible.
If the parameter
.I status
@@ -1141,7 +1374,7 @@ windows is changed. Initial setting is `off', i.e. `jis'.
.ne 3
.BR "deflogin on" | off
.PP
-Same as the \fBlogin\fP command except that the default setting for new windows
+Same as the \fBlogin\fP command except that the default setting for new windows
is changed. This is initialized with `on' as distributed (see config.h.in).
.sp
.ne 3
@@ -1154,7 +1387,7 @@ When no \*Qdefmode\*U command is given, mode 0622 is used.
.ne 3
.BR "defmonitor on" | off
.PP
-Same as the \fBmonitor\fP command except that the default setting for new
+Same as the \fBmonitor\fP command except that the default setting for new
windows is changed. Initial setting is `off'.
.sp
.ne 3
@@ -1167,21 +1400,38 @@ want to have a dependency on the terminal type.
.ne 3
.BI "defscrollback " num
.PP
-Same as the \fBscrollback\fP command except that the default setting for new
+Same as the \fBscrollback\fP command except that the default setting for new
windows is changed. Initial setting is 100.
.sp
.ne 3
+.BI "defshell " command
+.PP
+Synonym to the \fBshell\fP command. See there.
+.sp
+.ne 3
+.BR "defsilence on" | off
+.PP
+Same as the \fBsilence\fP command except that the default setting for new
+windows is changed. Initial setting is `off'.
+.sp
+.ne 3
+.BI "defslowpaste " msec"
+.PP
+Same as the \fBslowpaste\fP command except that the default setting for new
+windows is changed. Initial setting is 0 milliseconds, meaning `off'.
+.sp
+.ne 3
.BR "defwrap on" | off
.PP
-Same as the \fBwrap\fP command except that the default setting for new
-windows is changed. Initially line-wrap is on and can be toggled with the
+Same as the \fBwrap\fP command except that the default setting for new
+windows is changed. Initially line-wrap is on and can be toggled with the
\*Qwrap\*U command (\*QC-a r\*U) or by means of "C-a : wrap on|off".
.sp
.ne 3
.BR "defwritelock on" | off | auto
.PP
-Same as the \fBwritelock\fP command except that the default setting for new
-windows is changed. Initially writelocks will operate in automatic mode.
+Same as the \fBwritelock\fP command except that the default setting for new
+windows is changed. Initially writelocks will off.
.sp
.ne 3
.BR "defzombie " [\fIkeys\fP]
@@ -1192,7 +1442,7 @@ See there.
.ne 3
.B detach
.PP
-Detach the
+Detach the
.I screen
session (disconnect it from the terminal and put it into the background).
This returns you to the shell where you invoked
@@ -1206,6 +1456,12 @@ with the
option. (See also section \*QCOMMAND-LINE OPTIONS\*U.)
.sp
.ne 3
+.B displays
+.PP
+Shows a tabular listing of all currently connected user front-ends (displays).
+This is most useful for multiuser sessions.
+.sp
+.ne 3
.BR "digraph " [ \fIpreset ]
.PP
This command prompts the user for a digraph sequence. The next
@@ -1214,7 +1470,7 @@ resulting character is inserted in the input stream. For example,
if the user enters 'a"', an a-umlaut will be inserted. If the
first character entered is a 0 (zero),
.I screen
-will treat the following charcters (up to three) as an octal
+will treat the following characters (up to three) as an octal
number instead. The optional argument
.I preset
is treated as user input, thus one can create an \*Qumlaut\*U key.
@@ -1225,35 +1481,37 @@ to generate an a-umlaut by typing CTRL-K a.
.B dumptermcap
.PP
Write the termcap entry for the virtual terminal optimized for the currently
-active window to the file \*Q.termcap\*U in the user's
-\*Q$HOME/.screen\*U directory (or wherever
+active window to the file \*Q.termcap\*U in the user's
+\*Q$HOME/.screen\*U directory (or wherever
.I screen
stores its sockets. See the \*QFILES\*U section below).
This termcap entry is identical to the value of the environment variable
$TERMCAP that is set up by
.I screen
for each window. For terminfo based systems you will need to run a converter
-like
+like
.IR captoinfo
-and then compile the entry with
+and then compile the entry with
.IR tic .
.sp
.ne 3
.BR "echo " [ -n ]
.I message
.PP
-The echo command may be used to annoy
+The echo command may be used to annoy
.I screen
users with a 'message of the
-day'. Typically installed in a global /local/etc/screenrc. See also
-\*Qsleep\*U.
+day'. Typically installed in a global /local/etc/screenrc.
+The option \*Q-n\*U may be used to suppress the line feed.
+See also \*Qsleep\*U.
Echo is also useful for online checking of environment variables.
.sp
.ne 3
.BI "escape " xy
.PP
Set the command character to \fIx\fP and the character generating a literal
-command character to \fIy\fP (just like in the \-e option).
+command character (by triggering the \*Qmeta\*U command) to \fIy\fP (similar
+to the \-e option).
Each argument is either a single character, a two-character sequence
of the form \*Q^x\*U (meaning \*QC-x\*U), a backslash followed by an octal
number (specifying the ASCII code of the character), or a backslash followed
@@ -1265,38 +1523,42 @@ The default is \*Q^Aa\*U.
.RI [[ fdpat ]
.IR "newcommand " [ "args ..." ]]
.PP
-Run a subprocess (newcommand) in the current window. The flow of data between
-newcommand's stdin/stdout/stderr, the process already running (shell) and
-screen itself (window) is controlled by the filedescriptor pattern fdpat.
+Run a unix subprocess (specified by an executable path \fInewcommand\fP and its
+optional arguments) in the current window. The flow of data between
+newcommands stdin/stdout/stderr, the process originally started in the window
+(let us call it "application-process") and screen itself (window) is
+controlled by the filedescriptor pattern fdpat.
This pattern is basically a three character sequence representing stdin, stdout
and stderr of newcommand. A dot (.) connects the file descriptor
to
.IR screen .
An exclamation mark (!) causes the file
-descriptor to be connected to the already running process. A colon (:) combines
+descriptor to be connected to the application-process. A colon (:) combines
both.
-User input will go to newcommand unless newcommand requests the old process'
-output (fdpats first character is `!' or `:') or a pipe (|) is added to
-the end of fdpat.
+User input will go to newcommand unless newcommand receives the
+application-process'
+output (fdpats first character is `!' or `:') or a pipe symbol (|) is added
+(as a fourth character) to the end of fdpat.
.br
Invoking `exec' without arguments shows name and arguments of the currently
-running subprocess in this window.
+running subprocess in this window. Only one subprocess a time can be running
+in each window.
.br
When a subprocess is running the `kill' command will affect it instead of the
windows process.
.br
-Refer to the postscript file `fdpat.ips' for a confusing illustration
+Refer to the postscript file `doc/fdpat.ps' for a confusing illustration
of all 21 possible combinations. Each drawing shows the digits 2,1,0
representing the three file descriptors of newcommand. The box marked
-`W' is usual pty that has the application-process on its slave side.
+`W' is the usual pty that has the application-process on its slave side.
The box marked `P' is the secondary pty that now has
.I screen
at its master side.
.sp
-Abbreviations:
+Abbreviations:
.br
-Whitespace between the word `exec' and fdpat and the command
-can be omitted. Trailing dots and a fdpat consisting only of dots can be
+Whitespace between the word `exec' and fdpat and the command
+can be omitted. Trailing dots and a fdpat consisting only of dots can be
omitted. A simple `|' is synonymous for the pattern `!..|'; the word exec can
be omitted here and can always be replaced by `!'.
.sp
@@ -1308,7 +1570,7 @@ exec /bin/sh
.br
!/bin/sh
.PP
-Creates another shell in the same window, while the original shell is still
+Creates another shell in the same window, while the original shell is still
running. Output of both shells is displayed and user input is sent to the new
/bin/sh.
.IP
@@ -1318,15 +1580,15 @@ exec ! stty 19200
.br
!!stty 19200
.PP
-Set the speed of the window's tty. If your stty command operates on stdout, then
-add another `!'.
+Set the speed of the window's tty. If your stty command operates on stdout,
+then add another `!'.
.IP
exec !..| less
.br
|less
.PP
This adds a pager to the window output. The special character `|' is needed to
-give the user control over the pager although it gets its input from the
+give the user control over the pager although it gets its input from the
window's process. This works, because
.I less
listens on stderr (a behavior that
@@ -1347,21 +1609,34 @@ This will cause "Bell in window x" messages, whenever the string "Error"
appears in the window.
.sp
.ne 3
+.B fit
+.PP
+Change the window size to the size of the current region. This
+command is needed because screen doesn't adapt the window size
+automatically if the window is displayed more than once.
+.sp
+.ne 3
.B flow
.RB [ on | off | "auto\fR]\fP"
.PP
Sets the flow-control mode for this window.
-Without parameters it cycles the current window's flow-control setting from
+Without parameters it cycles the current window's flow-control setting from
"automatic" to "on" to "off".
-See the discussion on \*QFLOW-CONTROL\*U later on in this document for full
+See the discussion on \*QFLOW-CONTROL\*U later on in this document for full
details and note, that this is subject to change in future releases.
Default is set by `defflow'.
.sp
.ne 3
+.B focus
+.PP
+Move the input focus to the next region. This is done in a cyclic
+way so that the top region is selected after the bottom one.
+.sp
+.ne 3
.BR "gr " [ on | off ]
.PP
-Turn GR charset switching on/off. Whenever screens sees an input
-char with an 8th bit set, it will use the charset stored in the
+Turn GR charset switching on/off. Whenever screen sees an input
+character with the 8th bit set, it will use the charset stored in the
GR slot and print the character with the 8th bit stripped. The
default (see also \*Qdefgr\*U) is not to process GR switching because
otherwise the ISO88591 charset would not work.
@@ -1371,15 +1646,15 @@ otherwise the ISO88591 charset would not work.
.PP
Writes out the currently displayed image to a file \fIhardcopy.n\fP
in the window's default directory, where \fIn\fP is the number
-of the current window.
+of the current window.
This either appends or overwrites the file if it exists. See below.
.sp
.ne 3
.BR "hardcopy_append on" | off
.PP
-If set to "on",
+If set to "on",
.I screen
-will append to the "hardcopy.n" files created by the command \*QC-a h\*U,
+will append to the "hardcopy.n" files created by the command \*QC-a h\*U,
otherwise these files are overwritten each time.
Default is `off'.
.sp
@@ -1393,14 +1668,52 @@ current working directory.
.sp
.ne 3
.BR "hardstatus " [ on | off ]
-.PP
-Toggles the use of the terminal's hardware status line. If "on",
-.I screen
-will use this facility to display one line messages. Otherwise these messages
-are overlayed in reverse video mode at the display line. Note that the
-hardstatus feature can only be used if the termcap/terminfo capabilities
-"hs", "ts", "fs" and "ds" are set properly. Default is `on' whenever the "hs"
-capability is present.
+.br
+.BR "hardstatus \fR[\fBalways\fR]\fBlastline" | message | ignore
+.RI [ string ]
+.br
+.B "hardstatus string"
+.RI [ string ]
+.PP
+This command configures the use and emulation of the terminal's
+hardstatus line. The first form
+toggles whether
+.I screen
+will use the hardware status line to display messages. If the
+flag is set to `off', these messages
+are overlaid in reverse video mode at the display line. The default
+setting is `on'.
+.P
+The second form tells
+.I screen
+what to do if the terminal doesn't
+have a hardstatus line (i.e. the termcap/terminfo capabilities
+"hs", "ts", "fs" and "ds" are not set). If the type
+\*Qlastline\*U is used,
+.I screen
+will reserve the last line of the
+display for
+the hardstatus. \*Qmessage\*U uses
+.I screen's
+message mechanism and
+\*Qignore\*U tells
+.I screen
+never to display the hardstatus.
+If you prepend the word \*Qalways\*U to the type,
+.I screen
+will use the type even if the terminal supports a hardstatus.
+.P
+The third form specifies the contents of the hardstatus line.
+'%h' is used as default string, i.e. the stored hardstatus of the
+current window (settable via \\E]0;^G or \\E_\\\\) is displayed.
+You can customize this to any string you like including
+the escapes from the \*QSTRING ESCAPES\*U chapter. If you leave
+out the argument
+.IR string ,
+the current string is displayed.
+.P
+You can mix the second and third form by providing the string as
+additional argument.
.sp
.ne 3
.BR "height " [ \fIlines\fP ]
@@ -1411,8 +1724,10 @@ is given it toggles between 24 and 42 lines display.
.ne 3
.B help
.PP
-Not really a online help, but
-displays a help screen showing you all the key bindings.
+Not really a online help, but
+displays a help
+.I screen
+showing you all the key bindings.
The first pages list all the internal commands followed by their current
bindings.
Subsequent pages will display the custom commands, one command per key.
@@ -1424,29 +1739,56 @@ See also \*QDEFAULT KEY BINDINGS\*U section.
.B history
.PP
Usually users work with a shell that allows easy access to previous commands.
-For example csh has the command \*Q!!\*U to repeat the last command executed.
+For example csh has the command \*Q!!\*U to repeat the last command executed.
.I Screen
allows you to have a primitive way of re-calling \*Qthe command that
started ...\*U: You just type the first letter of that command, then hit
`C-a {' and
.I screen
-tries to find a previous line that matches with the `prompt character'
+tries to find a previous line that matches with the `prompt character'
to the left of the cursor. This line is pasted into this window's input queue.
Thus you have a crude command history (made up by the visible window and its
-scrollback buffer).
+scrollback buffer).
+.sp
+.ne 3
+.BI "hstatus " status
+.PP
+Change the window's hardstatus line to the string \fIstatus\fP.
.sp
.ne 3
.B info
.PP
Uses the message line to display some information about the current window:
the cursor position in the form \*Q(column,row)\*U starting with \*Q(1,1)\*U,
-the terminal width and height plus the size of the scrollback buffer in lines,
-like in \*U(80,24)+50\*U, various flag settings (flow-control, insert mode,
-origin mode, wrap mode, application-keypad mode, output logging, activity
-monitoring and redraw (`+' indicates enabled, `\-' not)),
-the currently active character set (\fIG0\fP, \fIG1\fP, \fIG2\fP,
-or \fIG3\fP), and in square brackets the terminal character sets that are
-currently designated as \fIG0\fP through \fIG3\fP.
+the terminal width and height plus the size of the scrollback buffer in lines,
+like in \*Q(80,24)+50\*U, the current state of window XON/XOFF flow control
+is shown like this (See also section FLOW CONTROL):
+
+.nf
+ +flow automatic flow control, currently on.
+ -flow automatic flow control, currently off.
+ +(+)flow flow control enabled. Agrees with automatic control.
+ -(+)flow flow control disabled. Disagrees with automatic control.
+ +(-)flow flow control enabled. Disagrees with automatic control.
+ -(-)flow flow control disabled. Agrees with automatic control.
+.fi
+
+The current line wrap setting (`+wrap' indicates enabled, `\-wrap' not) is
+also shown. The flags `ins', `org', `app', `log', `mon' or `nored' are
+displayed when the window is in insert mode, origin mode,
+application-keypad mode, has output logging,
+insert mode, origin mode, application-keypad mode, output logging,
+activity monitoring or partial redraw enabled.
+
+The currently active character set (\fIG0\fP, \fIG1\fP, \fIG2\fP,
+or \fIG3\fP) and in square brackets the terminal character sets that are
+currently designated as \fIG0\fP through \fIG3\fP is shown.
+
+Additional modes depending on the type of the window are displayed at the end of the status line (See also chapter \*QWINDOW TYPES\*U).
+.br
+If the state machine of the terminal emulator is in a non-default state,
+the info line is started with a string identifying the current state.
+.br
For system information use the \*Qtime\*U command.
.sp
.ne 3
@@ -1459,9 +1801,12 @@ No longer exists, use \*Qpaste\*U instead.
.BR jis | euc | sjis
.RB [ jis | euc | sjis\fR]
.PP
-Tell screen how to process kanji input/output. The first argument
+Tell
+.I screen
+how to process kanji input/output. The first argument
sets the kanji type of the current window. Each window can emulate
-a different type. The optional second parameter tells screen
+a different type. The optional second parameter tells
+.I screen
how to write the kanji codes to the connected terminal. The preferred
method of setting the display type is to use the \*QKJ\*U termcap
entry.
@@ -1472,15 +1817,19 @@ window.
.B kill
.PP
Kill current window.
-.br
+.br
If there is an `exec' command running then it is killed. Otherwise the process
-(shell) running in the window receives a HANGUP condition, the window structure
-is removed and
-.I screen
-switches to the previously displayed window.
-When the last window is destroyed,
+(shell) running in the window receives a HANGUP condition,
+the window structure is removed and
+.I screen
+(your display) switches to another
+window. When the last window is destroyed,
.I screen
exits.
+After a kill
+.I screen
+switches to the previously displayed window.
+.br
Note:
.I Emacs
users should keep this command in mind, when killing a line.
@@ -1492,7 +1841,7 @@ escape key or to rebind kill to \*QC-a K\*U.
.B lastmsg
.PP
Redisplay the last contents of the message/status line.
-Useful if you're typing when a message appears, because the message goes
+Useful if you're typing when a message appears, because the message goes
away when you press a key (unless your terminal has a hardware status line).
Refer to the commands \*Qmsgwait\*U and \*Qmsgminwait\*U for fine tuning.
.sp
@@ -1501,7 +1850,7 @@ Refer to the commands \*Qmsgwait\*U and \*Qmsgminwait\*U for fine tuning.
.PP
Display the disclaimer page. This is done whenever
.I screen
-is started without options, which should be often enough. See also
+is started without options, which should be often enough. See also
the \*Qstartup_message\*U command.
.sp
.ne 3
@@ -1510,29 +1859,40 @@ the \*Qstartup_message\*U command.
Lock this display.
Call a screenlock program (/local/bin/lck or /usr/bin/lock or a builtin if no
other is available). Screen does not accept any command keys until this program
-terminates. Meanwhile processes in the windows may continue, as the windows
+terminates. Meanwhile processes in the windows may continue, as the windows
are in the `detached' state. The screenlock program may be changed through the
-environment variable $LOCKPRG (which must be set in the shell from which
+environment variable $LOCKPRG (which must be set in the shell from which
.I screen
is started) and is executed with the user's uid and gid.
+.br
+Warning:
+When you leave other shells unlocked and you have no password set on
+.IR screen ,
+the lock is void: One could easily re-attach from an unlocked
+shell. This feature should rather be called `lockterminal'.
.sp
.ne 3
.BR "log " [ on | off ]
.PP
-Start/stop writing output of the current window to a file
-\*Qscreenlog.\fIn\fP\*U in the window's default directory, where \fIn\fP
+Start/stop writing output of the current window to a file
+\*Qscreenlog.\fIn\fP\*U in the window's default directory, where \fIn\fP
is the number of the current window. This filename can be changed with
the `logfile' command. If no parameter is given, the state
-of logging is toggled. The session log is appended to the previous contents
-of the file if it already exists. The current contents and the contents
+of logging is toggled. The session log is appended to the previous contents
+of the file if it already exists. The current contents and the contents
of the scrollback history are not included in the session log.
Default is `off'.
.sp
.ne 3
.BI "logfile " filename
+.br
+.BI "logfile flush " secs
.PP
Defines the name the logfiles will get. The default is
-\*Qscreenlog.%n\*U.
+\*Qscreenlog.%n\*U. The second form changes the number of seconds
+.I screen
+will wait before flushing the logfile buffer to the file-system. The
+default value is 10 seconds.
.sp
.ne 3
.BR "login " [ on | off ]
@@ -1543,18 +1903,43 @@ When no parameter is given, the login state of the window is toggled.
Additionally to that toggle, it is convenient having a `log in' and a `log out'
key. E.\|g. `bind I login on' and `bind O login off' will map these
keys to be C-a I and C-a O.
-The default setting (in config.h.in) should be \*Qon\*U for a
+The default setting (in config.h.in) should be \*Qon\*U for a
.I screen
that runs under suid-root.
-Use the \*Qdeflogin\*U command to change the default login state for new
-windows. Both commands are only present when
+Use the \*Qdeflogin\*U command to change the default login state for new
+windows. Both commands are only present when
.I screen
has been compiled with utmp support.
.sp
.ne 3
+.BR "logtstamp " [ on | off ]
+.br
+.B "logtstamp after"
+.RI [ secs ]
+.br
+.B "logtstamp string"
+.RI [ string ]
+.PP
+This command controls logfile time-stamp mechanism of
+.I screen.
+If
+time-stamps are turned \*Qon\*U,
+.I screen
+adds a string containing
+the current time to the logfile after two minutes of inactivity.
+When output continues and more than another two minutes have passed,
+a second time-stamp is added to document the restart of the
+output. You can change this timeout with the second form
+of the command. The third form is used for customizing the time-stamp
+string (`-- %n:%t -- time-stamp -- %M/%d/%y %c:%s --\\n' by
+default).
+.sp
+.ne 3
.B mapdefault
.PP
-Tell screen that the next input character should only be looked up
+Tell
+.I screen
+that the next input character should only be looked up
in the default bindkey table. See also \*Qbindkey\*U.
.sp
.ne 3
@@ -1566,7 +1951,7 @@ Like mapdefault, but don't even look in the default bindkey table.
.B maptimeout
.RI [ timo ]
.PP
-Set the intercharacter timer for input sequence detection to a timeout
+Set the inter-character timer for input sequence detection to a timeout
of
.I timo
ms. The default timeout is 300ms. Maptimeout with no arguments shows
@@ -1578,11 +1963,17 @@ See also \*Qbindkey\*U.
.PP
This is a method of changing the keymap used for copy/history mode.
The string is made up of \fIoldchar\fP=\fInewchar\fP pairs which are
-separated by `:'. Example: The string \*QB=^B:F=^F\*U will change the
+separated by `:'. Example: The string \*QB=^B:F=^F\*U will change the
keys `C-b' and `C-f' to the vi style binding (scroll up/down fill page).
This happens to be the default binding for `B' and `F'.
The command \*Qmarkkeys h=^B:l=^F:$=^E\*U would set the mode for an emacs-style
binding.
+If your terminal sends characters, that cause you to abort copy mode,
+then this command may help by binding these characters to do nothing.
+The no-op character is `@' and is used like this: \*Qmarkkeys
+@=L=H\*U if you do not want to use the `H' or `L' commands any longer.
+As shown in this example, multiple keys can be assigned to one function in a
+single statement.
.sp
.ne 3
.B meta
@@ -1602,15 +1993,15 @@ Monitoring is initially off for all windows.
.ne 3
.BI "msgminwait " sec
.PP
-Defines the time
-.I screen
-delays a new message when one message is currently displayed.
+Defines the time
+.I screen
+delays a new message when one message is currently displayed.
The default is 1 second.
.sp
.ne 3
.BI "msgwait " sec
.PP
-Defines the time a message is displayed if
+Defines the time a message is displayed if
.I screen
is not disturbed by other activity. The default is 5 seconds.
.sp
@@ -1620,8 +2011,10 @@ is not disturbed by other activity. The default is 5 seconds.
Switch between singleuser and multiuser mode. Standard
.I screen
operation is singleuser. In multiuser mode the commands `acladd',
-`aclchg' and `acldel'
-can be used to enable (and disable) other users accessing this screen.
+`aclchg', `aclgrp' and `acldel'
+can be used to enable (and disable) other users accessing this
+.I screen
+session.
.sp
.ne 3
.BR "nethack on" | off
@@ -1633,11 +2026,11 @@ nethack-style messages which will often blur the facts a little, but are
much funnier to read. Anyway, standard messages often tend to be unclear as
well.
.br
-This option is only
+This option is only
available if
.I screen
was compiled with the NETHACK flag defined. The
-default setting is then determined by the presence of the environment
+default setting is then determined by the presence of the environment
variable $NETHACKOPTIONS.
.sp
.ne 3
@@ -1647,9 +2040,18 @@ Switch to the next window.
This command can be used repeatedly to cycle through the list of windows.
.sp
.ne 3
+.B nonblock
+.RB [ on | off ]
+.PP
+Enable or disable flow control for the current user interface (display).
+It is used to prevent a slow display from slowing down the processing of
+data output by a window. This command may be helpful when multiple displays
+show the same window. Nonblock is initially off for all displays.
+.sp
+.ne 3
.BR "number " [ \fIn ]
.PP
-Change the current windows number. If the given number \fIn\fP is already
+Change the current windows number. If the given number \fIn\fP is already
used by another window, both windows exchange their numbers. If no argument is
specified, the current window number (and title) is shown.
.sp
@@ -1663,9 +2065,15 @@ display (like xterm), you can set it to some higher value. If no
argument is specified, the current setting is displayed.
.sp
.ne 3
+.B only
+.PP
+Kill all regions but the current one.
+.sp
+.ne 3
.B other
.PP
-Switch to the window displayed previously.
+Switch to the window displayed previously. If this window does no longer exist,
+\fIother\fP has the same effect as \fInext\fP.
.sp
.ne 3
.BR "partial on" | off
@@ -1673,7 +2081,7 @@ Switch to the window displayed previously.
Defines whether the display should be refreshed (as with \fIredisplay\fP) after
switching to the current window. This command only affects the current window.
To immediately affect all windows use the \fIallpartial\fP command.
-Default is `off', of course. This default is fixed, as there is currently no
+Default is `off', of course. This default is fixed, as there is currently no
\fIdefpartial\fP command.
.sp
.ne 3
@@ -1699,27 +2107,29 @@ Default is `none', this disables password checking.
.PP
Write the (concatenated) contents of the specified registers to the stdin queue
of the current window. The register '.' is treated as the
-paste buffer. If no parameter is given the user is prompted for a single
+paste buffer. If no parameter is given the user is prompted for a single
register to paste.
-The paste buffer can be filled with the \fIcopy\fP, \fIhistory\fP and
-\fIreadbuf\fP commands.
-Other registers can be filled with the \fIregister\fP, \fIreadreg\fP and
+The paste buffer can be filled with the \fIcopy\fP, \fIhistory\fP and
+\fIreadbuf\fP commands.
+Other registers can be filled with the \fIregister\fP, \fIreadreg\fP and
\fIpaste\fP commands.
If \fIpaste\fP is called with a second argument, the contents of the specified
-registers is pasted into the named destination register rather than
+registers is pasted into the named destination register rather than
the window. If '.' is used as the second argument, the displays paste buffer is
the destination.
-Note, that \*Qpaste\*U uses a wide variety of resources: Whenever a second
+Note, that \*Qpaste\*U uses a wide variety of resources: Whenever a second
argument is specified no current window is needed. When the source specification
-only contains registers (not the paste buffer) then there need not be a current
-display (terminal attached), as the registers are a global resource. The
+only contains registers (not the paste buffer) then there need not be a current
+display (terminal attached), as the registers are a global resource. The
paste buffer exists once for every user.
.sp
.ne 3
.BR "pastefont " [ on | off ]
.PP
-Tell screen to include font information in the paste buffer. The
-default is not to do so. This command is especially usefull for
+Tell
+.I screen
+to include font information in the paste buffer. The
+default is not to do so. This command is especially useful for
multi character fonts like kanji.
.sp
.ne 3
@@ -1730,20 +2140,22 @@ Reopen the window's terminal line and send a break condition. See `break'.
.ne 3
.B pow_detach
.PP
-Power detach.
+Power detach.
Mainly the same as \fIdetach\fP, but also sends a HANGUP signal to
the parent process of
.IR screen .
-CAUTION: This will result in a logout, when
+CAUTION: This will result in a logout, when
.I screen
was started from your login shell.
.sp
.ne 3
-.BI "pow_detach_msg " message
+.B pow_detach_msg
+.RI [ message ]
.PP
The \fImessage\fP specified here is output whenever a `Power detach' was
-performed. It may be used as a replacement for a logout message or to reset
-baud rate, etc.
+performed. It may be used as a replacement for a logout message or to reset
+baud rate, etc.
+Without parameter, the current message is shown.
.sp
.ne 3
.B prev
@@ -1757,7 +2169,9 @@ This command can be used repeatedly to cycle through the list of windows.
.PP
If
.I cmd
-is not an empty string, screen will not use the terminal capabilities
+is not an empty string,
+.I screen
+will not use the terminal capabilities
\*Qpo/pf\*U if it detects an ansi print sequence
.BR "ESC [ 5 i" ,
but pipe the output into
@@ -1776,7 +2190,8 @@ access to your terminal, they will be able to fire off print commands.
.ne 3
.BR process " [" \fIkey ]
.PP
-Stuff the contents of the specified register into \fIscreen\fP's
+Stuff the contents of the specified register into
+.IR screen 's
input queue. If no argument is given you are prompted for a
register name. The text is parsed as if it had been typed in from the user's
keyboard. This command can be used to bind multiple actions to a single key.
@@ -1794,20 +2209,22 @@ Use the empty bind command (as in \*Qbind '^\e'\*U) to remove a key binding.
.ne 3
.B readbuf
.PP
-Reads the contents of the current screen-exchange file into the paste buffer.
+Reads the contents of the current screen-exchange file into the paste buffer.
See also \*Qbufferfile\*U command.
.sp
.ne 3
-.B readreg
+.B readreg
.RI [ register " [" filename ]]
.PP
Does one of two things, dependent on number of arguments: with zero or one
arguments it it duplicates the paste buffer contents into the register specified
-or entered at the prompt. With two arguments it reads the contents of the named
+or entered at the prompt. With two arguments it reads the contents of the named
file into the register, just as \fIreadbuf\fP reads the screen-exchange file
into the paste buffer.
-The following example will paste the system's password file into
-the screen window (using register p, where a copy remains):
+The following example will paste the system's password file into
+the
+.I screen
+window (using register p, where a copy remains):
.PP
.nf
C-a : readreg p /etc/passwd
@@ -1827,14 +2244,19 @@ Save the specified \fIstring\fP to the register \fIkey\fP. See also the
\*Qpaste\*U command.
.sp
.ne 3
+.B "remove"
+.PP
+Kill the current region. This is a no-op if there is only one region.
+.sp
+.ne 3
.B "removebuf"
.PP
-Unlinks the screen-exchange file used by the commands \*Qwritebuf\*U and
-\*Qreadbuf\*U.
+Unlinks the screen-exchange file used by the commands \*Qwritebuf\*U and
+\*Qreadbuf\*U.
.sp
.ne 3
.B "reset"
-.PP
+.PP
Reset the virtual terminal to its \*Qpower-on\*U values. Useful when strange
settings (like scroll regions or graphics character set) are left over from
an application.
@@ -1845,8 +2267,10 @@ an application.
Establish a new window.
The flow-control options (\fB\-f\fP, \fB\-fn\fP and \fB\-fa\fP),
title (a.\|k.\|a.) option (\fB\-t\fP), login options (\fB-l\fP and \fB-ln\fP)
-, terminal type option (\fB-T <term>\fP) and scrollback option (\fB-h\fP <num>)
-may be specified for each command.
+, terminal type option (\fB-T\fP <term>), the all-capability-flag (\fB-a\fP)
+and scrollback option (\fB-h\fP <num>) may be specified with each command.
+The option (\fB-M\fP) turns monitoring on for this window.
+The option (\fB-L\fP) turns output logging on for this window.
If an optional number \fIn\fP in the range 0..9 is given, the window
number \fIn\fP is assigned to the newly created window (or, if this
number is already in-use, the next available number).
@@ -1857,53 +2281,58 @@ Thus, if your \*Q.screenrc\*U contains the lines
.nf
# example for .screenrc:
screen 1
- screen -fn -t foobar 2 telnet foobar
+ screen -fn -t foobar -L 2 telnet foobar
.fi
.sp
.I screen
creates a shell window (in window #1) and a window with a TELNET connection
to the machine foobar (with no flow-control using the title \*Qfoobar\*U
-in window #2). Note, that unlike previous versions of
+in window #2) and will write a logfile (\*Qscreenlog.2\*U) of the telnet
+session.
+Note, that unlike previous versions of
.I screen
-no additional default window is created when \*Qscreen\*U commands are
+no additional default window is created when \*Qscreen\*U commands are
included in your \*Q.screenrc\*U file. When the initialization is completed,
.I screen
switches to the last window specified in your .screenrc file or, if none,
opens a default window #0.
+.br
+Screen has built in some functionality of \*Qcu\*U and \*Qtelnet\*U.
+See also chapter \*QWINDOW TYPES\*U.
.sp
.ne 3
.B "scrollback \fP\fInum\fP"
.PP
-Set the size of the scrollback buffer for the current windows to \fInum\fP
+Set the size of the scrollback buffer for the current windows to \fInum\fP
lines. The default scrollback is 100 lines.
-See also the \*Qdefscrollback\*U command and use \*QC-a i\*U to view the
+See also the \*Qdefscrollback\*U command and use \*QC-a i\*U to view the
current setting.
.sp
.ne 3
-.BR "select " [ \fIn ]
+.BR "select " [ \fIWindowID ]
.PP
-Switch to the window with the number \fIn\fP.
-If no window number is specified, you get prompted for an
-identifier. This can be title (alphanumeric window name) or a number.
+Switch to the window identified by \fIWindowID\fP.
+This can be a prefix of a window title (alphanumeric window name) or a window
+number.
+The parameter is optional and if omitted, you get prompted for an identifier.
When a new window is established, the first available number
is assigned to this window.
-Thus, the first window can be activated by \*Qselect 0\*U (there can be no more
-than 10 windows present simultaneously unless
-.I screen
-was compiled with a higher MAXWIN setting).
+Thus, the first window can be activated by \*Qselect 0\*U.
+The number of windows is limited at compile-time by the MAXWIN
+configuration parameter.
.sp
.ne
.BR "sessionname " [ \fIname ]
.PP
Rename the current session. Note, that for \*Qscreen -list\*U the
name shows up with the process-id prepended. If the argument \*Qname\*U
-is omitted, the name of this session is displayed. Caution: The $STY
-environment variables still reflects the old name. This may result in
-confusion.
+is omitted, the name of this session is displayed. Caution: The $STY
+environment variables still reflects the old name. This may result in
+confusion.
The default is constructed from the tty and host names.
.sp
.ne 3
-.B "setenv "
+.B "setenv "
.RI [ var " [" string ]]
.PP
Set the environment variable \fIvar\fP to value \fIstring\fP.
@@ -1935,7 +2364,7 @@ Toggles silence monitoring of windows.
When silence is turned on and an affected window is switched into the
background, you will receive the silence notification message in the
status line after a specified period of inactivity (silence). The default
-timeout can be changed with the `silencewait' command or by specifying a
+timeout can be changed with the `silencewait' command or by specifying a
number of seconds instead of `on' or `off'.
Silence is initially off for all windows.
.sp
@@ -1953,33 +2382,44 @@ Keyboard activity will end the sleep.
It may be used to give users a chance to read the messages output by \*Qecho\*U.
.sp
.ne 3
-.B "slowpaste \fIusec\fP"
+.B "slowpaste \fImsec\fP"
.PP
-Define the speed at which text is inserted by the paste ("C-a ]") command.
+Define the speed at which text is inserted into the current window by the
+paste ("C-a ]") command.
If the slowpaste value is nonzero text is written character by character.
.I screen
-will make a pause of \fIusec\fP milliseconds after each single character write
-to allow the application to process its input. Only use slowpaste if your
-underlying system exposes flow control problems while pasting large amounts of
-text.
+will make a pause of \fImsec\fP milliseconds after each single character write
+to allow the application to process its input. Only use slowpaste if your
+underlying system exposes flow control problems while pasting large amounts of
+text.
.sp
.ne 3
.B sorendition
.RB [ "\fIattr\fR " [ \fIcolor ]]
.PP
-Change the way screen does highlighting for text marking and printing
-messages.
+Change the way
+.I screen
+does highlighting for text marking and printing messages.
.I Attr
is a hexadecimal number and describes the attributes (inverse,
underline, ...) the text will get.
.I Color
is a 2 digit number and changes the
-forground/background of the highlighted text.
-Some knowledge of screen's internal character representation is
+foreground/background of the highlighted text.
+Some knowledge of
+.IR screen 's
+internal character representation is
needed to make the characters appear in the desired way. The default
is currently 10 99 (standout, default colors).
.sp
.ne 3
+.B split
+.PP
+Split the current region into two new ones. All regions on the
+display are resized to make room for the new region. The blank
+window is displayed on the new region.
+.sp
+.ne 3
.B "startup_message on\fP|\fBoff"
.PP
Select whether you want to see the copyright notice during startup.
@@ -1994,16 +2434,39 @@ Stuff the string
in the input buffer of the current window.
This is like the \*Qpaste\*U command but with much less overhead.
You cannot paste
-large buffers with the \*stuff\*U command. It is most useful for key
+large buffers with the \*Qstuff\*U command. It is most useful for key
bindings. See also \*Qbindkey\*U.
.sp
.ne 3
+.B su
+.RB [ username " [" password
+.RB [ password2 ]]
+.PP
+Substitute the user of a display. The command prompts for all parameters that
+are omitted. If passwords are specified as parameters, they have to be
+specified un-crypted. The first password is matched against the systems
+passwd database, the second password is matched against the
+.I screen
+password as set with the commands \*Qacladd\*U or \*Qpassword\*U.
+\*QSu\*U may be useful for the
+.I screen
+administrator to test multiuser setups.
+.\" XXX removed in 3.8.0 XXX
+.\" but it is mainly used implicitly
+.\" by the \*Qconnect\*U command to identify users that access a remote session.
+When the identification fails, the user has access to the commands available
+for user
+.BR nobody .
+These are \*Qdetach\*U, \*Qlicense\*U, \*Qversion\*U, \*Qhelp\*U and
+\*Qdisplays\*U.
+.sp
+.ne 3
.B "suspend"
.PP
Suspend
.IR screen .
-The windows are in the `detached' state, while
-.IR screen
+The windows are in the `detached' state, while
+.I screen
is suspended. This feature relies on the shell being able to do job control.
.sp
.ne 3
@@ -2011,10 +2474,10 @@ is suspended. This feature relies on the shell being able to do job control.
.PP
In each window's environment
.I screen
-opens, the $TERM variable is set to \*Qscreen\*U by default.
+opens, the $TERM variable is set to \*Qscreen\*U by default.
But when no description for \*Qscreen\*U is installed in the local termcap
or terminfo data base, you set $TERM to \- say \-
-\*Qvt100\*U. This won't do much harm, as
+\*Qvt100\*U. This won't do much harm, as
.I screen
is VT100/ANSI compatible.
The use of the \*Qterm\*U command is discouraged for non-default purpose.
@@ -2032,14 +2495,16 @@ rlogin othermachine\*U rather than setting and resetting the default.
.BI termcapinfo " term terminal-tweaks"
.RI [ window-tweaks ]
.PP
-Use this command to modify your terminal's termcap entry without going through
-all the hassles involved in creating a custom termcap entry.
+Use this command to modify your terminal's termcap entry without going
+through all the hassles involved in creating a custom termcap entry.
Plus, you can optionally customize the termcap generated for the windows.
-If your system works with terminfo-database rather than with
-termcap,
-.I screen
-will understand the `terminfo' command, which has the same effects as
-the `termcap' command. Two separate commands are provided, as there are subtle
+You have to place these commands in one of the screenrc startup files, as
+they are meaningless once the terminal emulator is booted.
+.br
+If your system works uses the terminfo database rather than termcap,
+.I screen
+will understand the `terminfo' command, which has the same effects as the
+`termcap' command. Two separate commands are provided, as there are subtle
syntactic differences, e.g. when parameter interpolation (using `%') is
required. Note that termcap names of the capabilities have to be used
with the `terminfo' command.
@@ -2126,7 +2591,7 @@ For window specific information use \*Qinfo\*U.
.ne 3
.BR "title " [ \fIwindowalias ]
.PP
-Set the name of the current window to \fIwindowalias\fP. If no name is
+Set the name of the current window to \fIwindowalias\fP. If no name is
specified,
.I screen
prompts for one. This command was known as `aka' in previous
@@ -2138,29 +2603,45 @@ releases.
Unset an environment variable.
.sp
.ne 3
-.BR "vbell on" | off
+.B vbell
+.RB [ on | off ]
.PP
-If your terminal does not support
-a visual bell, a `vbell-message' is displayed in the status line.
-Sets the visual bell setting for this window. If your terminal does not support
-a visual bell, a `vbell-message' is displayed in the status line.
-Refer to the termcap variable `vb' (terminfo: 'flash').
+Sets the visual bell setting for this window. Omitting the parameter
+toggles the setting. If vbell is switched on, but your terminal does not
+support a visual bell, a `vbell-message' is displayed in the status line when
+the bell character (^G) is received.
+Visual bell support of a terminal is defined by the termcap variable `vb'
+(terminfo: 'flash').
+.br
+Per default, vbell is off, thus the audible bell is used.
+See also `bell_msg'.
.sp
.ne 3
-.BI "vbell_msg " message
+.B vbell_msg
+.RI [ message ]
.PP
Sets the visual bell message. \fImessage\fP is printed to the status line if
-the window receives a bell character (^G) and vbell is set to \*Qon\*U.
+the window receives a bell character (^G), vbell is set to \*Qon\*U, but the
+terminal does not support a visual bell.
The default message is \*QWuff, Wuff!!\*U.
+Without parameter, the current message is shown.
.sp
.ne 3
.BI "vbellwait " sec
.PP
-Define a delay in seconds after each display of
+Define a delay in seconds after each display of
.IR screen 's
visual bell message. The default is 1 second.
.sp
.ne 3
+.B verbose
+.RB [ on | off ]
+.PP
+If verbose is switched on, the command name is echoed, whenever a window
+is created (or resurrected from zombie state). Default is off.
+Without parameter, the current setting is shown.
+.sp
+.ne 3
.B version
.PP
Print the current version and the compile date in the status line.
@@ -2174,8 +2655,8 @@ status line.
.ne 3
.BR "width " [ \fInum ]
.PP
-Toggle the window width between 80 and 132 columns or set it to \fInum\fP
-columns if an argument is specified.
+Toggle the window width between 80 and 132 columns or set it to \fInum\fP
+columns if an argument is specified.
This requires a capable terminal and the termcap entries \*QZ0\*U and \*QZ1\*U.
See the \*Qtermcap\*U command for more information.
.sp
@@ -2191,7 +2672,7 @@ all the windows that are \*Qlogged in\*U are marked with a `$';
a background window that has received a bell is marked with a `!';
a background window that is being monitored and has had activity occur
is marked with an `@';
-a window which has output logging turned on is marked with `(L)';
+a window which has output logging turned on is marked with `(L)';
windows occupied by other users are marked with `&';
windows in the zombie state are marked with `Z'.
If this list is too long to fit on the terminal's status line only the
@@ -2224,7 +2705,7 @@ the same window at once. Per default, writelock is in `auto' mode and
grants exclusive input permission to the user who is the first to switch
to the particular window. When he leaves the window, other users may obtain
the writelock (automatically). The writelock of the current window is disabled
-by the command \*Qwritelock off\*U. If the user issues the command
+by the command \*Qwritelock off\*U. If the user issues the command
\*Qwritelock on\*U he keeps the exclusive write permission while switching
to other windows.
.sp
@@ -2242,14 +2723,16 @@ current window.
.BR "defzombie " [\fIkeys\fP]
.PP
Per default
-.I screen
+.I screen
windows are removed from the window list as soon as
the windows process (e.g. shell) exits. When a string of two keys is
specified to the zombie command, `dead' windows will remain in the list.
-The \fBkill\fP kommand may be used to remove such a window. Pressing the
-first key in the dead window has the same effect. When pressing the second
-key, screen will attempt to resurrect the window. The process that was
-initially running in the window will be launched again. Calling \fBzombie\fP
+The \fBkill\fP command may be used to remove such a window. Pressing the
+first key in the dead window has the same effect. When pressing the second
+key,
+.I screen
+will attempt to resurrect the window. The process that was
+initially running in the window will be launched again. Calling \fBzombie\fP
without parameters will clear the zombie setting, thus making windows disappear
when their process exits.
@@ -2281,6 +2764,173 @@ echo '<esc>^Hello world from window '$WINDOW'<esc>\e\e'
where '<esc>' is an \fIescape\fP, '^' is a literal up-arrow,
and '\e\e' turns into a single backslash.
+.SH "WINDOW TYPES"
+Screen provides three different window types. New windows are created with
+.IR screen 's
+.B screen
+command (see also the entry in chapter \*QCUSTOMIZATION\*U). The first
+parameter to the
+.B screen
+command defines which type of window is created. The different window types are
+all special cases of the normal type. They have been added in order
+to allow
+.I screen
+to be used efficiently as a console multiplexer with 100 or more windows.
+
+.IP \(bu 3
+The normal window contains a shell (default, if no parameter is given) or any
+other system command that could be executed from a shell (e.g.
+.BR slogin ,
+etc...)
+
+.IP \(bu
+If a tty (character special device) name (e.g. \*Q/dev/ttya\*U)
+is specified as the first parameter, then the window is directly connected to
+this device.
+This window type is similar to \*Qscreen cu -l /dev/ttya\*U.
+Read and write access is required on the device node, an exclusive open is
+attempted on the node to mark the connection line as busy.
+An optional parameter is allowed consisting of a comma separated list of flags
+in the notation used by stty(1):
+.RS
+.IP <baud_rate>
+Usually 300, 1200, 9600 or 19200. This affects transmission as well as receive speed.
+.IP "cs8 or cs7"
+Specify the transmission of eight (or seven) bits per byte.
+.IP "ixon or -ixon"
+Enables (or disables) software flow-control (CTRL-S/CTRL-Q) for sending data.
+.IP "ixoff or -ixon"
+Enables (or disables) software flow-control for receiving data.
+.IP "istrip or -istrip"
+Clear (or keep) the eight bit in each received byte.
+.PP
+You may want to specify as many of these options as applicable. Unspecified
+options cause the terminal driver to make up the parameter values of the
+connection. These values are system dependant and may be in defaults or values
+saved from a previous connection.
+.PP
+For tty windows, the
+.B info
+command shows some of the modem control lines
+in the status line. These may include `RTS', `CTS', 'DTR', `DSR', `CD' and more.
+This depends on the available ioctl()'s and system header files as well as the
+on the physical capabilities of the serial board.
+Signals that are logical low (inactive) have their name preceded by
+an exclamation mark (!), otherwise the signal is logical high (active).
+Signals not supported by the hardware but available to the ioctl() interface
+are usually shown low.
+.br
+When the CLOCAL status bit is true, the whole set of modem signals is placed
+inside curly braces ({ and }).
+When the CRTSCTS or TIOCSOFTCAR bit is set, the signals `CTS' or `CD'
+are shown in parenthesis, respectively.
+
+
+For tty windows, the command
+.B break
+causes the Data transmission line (TxD) to go low for a specified period of
+time. This is expected to be interpreted as break signal on the other side.
+No data is sent and no modem control line is changed when a
+.B break
+is issued.
+.RE
+.IP \(bu
+If the first parameter is \*Q//telnet\*U, the second parameter is expected to
+be a host name, and an optional third parameter may specify a TCP port number
+(default decimal 23). Screen will connect to a server listening on the remote
+host and use the telnet protocol to communicate with that server.
+.br
+.br
+For telnet windows, the command
+.B info
+shows details about the connection in square brackets ([ and ]) at the end of
+the status line.
+.RS
+.IP b
+BINARY. The connection is in binary mode.
+.IP e
+ECHO. Local echo is disabled.
+.IP c
+SGA. The connection is in `character mode' (default: `line mode').
+.IP t
+TTYPE. The terminal type has been requested by the remote host.
+Screen sends the name \*Qscreen\*U unless instructed otherwise (see also
+the command `term').
+.IP w
+NAWS. The remote site is notified about window size changes.
+.IP f
+LFLOW. The remote host will send flow control information.
+(Ignored at the moment.)
+.PP
+Additional flags for debugging are x, t and n (XDISPLOC, TSPEED and
+NEWENV).
+.PP
+For telnet windows, the command
+.B break
+sends the telnet code IAC BREAK (decimal 243) to the remote host.
+
+
+This window type is only available if
+.I screen
+was compiled with the BUILTIN_TELNET option defined.
+.RE
+
+
+.SH "STRING ESCAPES"
+Screen provides an escape mechanism to insert information like the
+current time into messages or file names. The escape character
+is '%' with one exception: inside of a window's hardstatus '^%' ('^E')
+is used instead.
+
+Here is the full list of supported escapes:
+.IP %
+the escape character itself
+.IP a
+either 'am' or 'pm'
+.IP A
+either 'AM' or 'PM'
+.IP c
+current time HH:MM in 24h format
+.IP C
+current time HH:MM in 12h format
+.IP d
+day number
+.IP D
+weekday name
+.IP h
+hardstatus of the window
+.IP l
+current load of the system
+.IP m
+month number
+.IP M
+month name
+.IP n
+window number
+.IP s
+seconds
+.IP t
+window title
+.IP u
+all other users on this window
+.IP w
+all window numbers and names
+.IP W
+all window numbers and names except the current one
+.IP y
+last two digits of the year number
+.IP Y
+full year number
+.IP ?
+the part to the next '%?' is displayed only if an escape expands to an
+nonempty string
+.IP :
+else part of '%?'
+.P
+The 'c' and 'C' escape may be qualified with a '0' to make
+.I screen
+use zero instead of space as fill character. The 'n' escape understands
+a length qualifier (e.g. '%3n').
.SH "FLOW-CONTROL"
Each window has a flow-control setting that determines how
@@ -2479,7 +3129,7 @@ PROMPT_COMMAND='echo -n -e "\e033k\e033\e134"'
Each window in a
.I screen
session emulates a VT100 terminal, with some extra functions added. The
-VT100 emulator is hardcoded, no other terminal types can be emulated.
+VT100 emulator is hard-coded, no other terminal types can be emulated.
.br
Usually
.I screen
@@ -2500,10 +3150,10 @@ But if you do a
rlogin on another machine or your machine supports only
terminfo this method fails. Because of this,
.I screen
-offers a way to deal with these cases.
+offers a way to deal with these cases.
Here is how it works:
.PP
-When
+When
.I screen
tries to figure out a terminal name for itself,
it first looks
@@ -2556,7 +3206,7 @@ window's $TERMCAP variable.
This can either be the full terminal definition, or a filename where the
terminal \*Qscreen\*U (and/or \*Qscreen-w\*U) is defined.
.PP
-Note that
+Note that
.I screen
honors the \*Qterminfo\*U .screenrc command if the system uses the
terminfo database rather than termcap.
@@ -2579,9 +3229,9 @@ When the `G0' capability is present,
.I screen
evaluates the capabilities
`S0', `E0', and `C0' if present. `S0' is the sequence the terminal uses
-to enable and start the graphics character set rather than \fISI\fP.
+to enable and start the graphics character set rather than \fISI\fP.
`E0' is the corresponding replacement for \fISO\fP. `C0' gives a character
-by character translation string that is used during semi-graphics mode. This
+by character translation string that is used during semi-graphics mode. This
string is built like the `acsc' terminfo capability.
.PP
When the `po' and `pf' capabilities are present in the terminal's
@@ -2594,13 +3244,17 @@ other windows are still active (the printer port is enabled
and disabled again for each chunk of output).
As a side-effect, programs running in different windows can
send output to the printer simultaneously.
-Data sent to the printer is not displayed in the window.
+Data sent to the printer is not displayed in the window. The
+.I info
+command displays a line starting `PRIN' while the printer is active.
.PP
.I Screen
maintains a hardstatus line for every window. If a window
gets selected, the display's hardstatus will be updated to match
the window's hardstatus line. If the display has no hardstatus
-the line will be displayed as a standard screen message.
+the line will be displayed as a standard
+.I screen
+message.
The hardstatus line can be changed with the ANSI Application
Program Command (APC): \*QESC_<string>ESC\e\*U. As a convenience
for xterm users the sequence \*QESC]0..2;<string>^G\*U is
@@ -2611,7 +3265,7 @@ variable of the virtual terminal if they can be efficiently
implemented by the physical terminal.
For instance, `dl' (delete line) is only put into the $TERMCAP
variable if the terminal supports either delete line itself or
-scrolling regions. Note that this may provoke confusion, when
+scrolling regions. Note that this may provoke confusion, when
the session is reattached on a different terminal, as the value
of $TERMCAP cannot be modified by parent processes.
.PP
@@ -2730,7 +3384,7 @@ Designate character set as G3
Direct Cursor Addressing
.TP 27
.B "ESC [ \fPPn\fB ; \fPPn\fB f"
-Direct Cursor Addressing
+same as above
.TP 27
.B "ESC [ \fPPn\fB J"
Erase in Display
@@ -2768,6 +3422,21 @@ Cursor Right
.B "ESC [ \fPPn\fB D"
Cursor Left
.TP 27
+.B "ESC [ \fPPn\fB E"
+Cursor next line
+.TP 27
+.B "ESC [ \fPPn\fB F"
+Cursor previous line
+.TP 27
+.B "ESC [ \fPPn\fB G"
+Cursor horizontal position
+.TP 27
+.B "ESC [ \fPPn\fB `"
+same as above
+.TP 27
+.B "ESC [ \fPPn\fB d"
+Cursor vertical position
+.TP 27
.B "ESC [ \fPPs\fB ;\fP...\fB; \fPPs\fB m"
Select Graphic Rendition
.TP 27
@@ -2879,6 +3548,9 @@ Scroll Scrolling Region Up
.B "ESC [ \fPPn\fB T"
Scroll Scrolling Region Down
.TP 27
+.B "ESC [ \fPPn\fB ^"
+same as above
+.TP 27
.B "ESC [ \fPPs\fB ;\fP...\fB; \fPPs\fB h"
Set Mode
.TP 27
@@ -2935,11 +3607,13 @@ Send Cursor Position Report
.SH "INPUT TRANSLATION"
-In order to do a full VT100 emulation \fIscreen\fP has to detect
+In order to do a full VT100 emulation
+.I screen
+has to detect
that a sequence of characters in the input stream was generated
by a keypress on the user's keyboard and insert the VT100
style escape sequence. \fIScreen\fP has a very flexible way of doing
-this by making it posible to map arbitrary commands on arbitrary
+this by making it possible to map arbitrary commands on arbitrary
sequences of characters. For standard VT100 emulation the command
will always insert a string in the input buffer of the window
(see also command \fBstuff\fP in the command table).
@@ -3028,8 +3702,9 @@ Keypad enter fe stuff \e015
.SH SPECIAL TERMINAL CAPABILITIES
The following table describes all terminal capabilities
-that are recognized by \fIscreen\fP and are not in the
-termcap(5) manual.
+that are recognized by
+.I screen
+and are not in the termcap(5) manual.
You can place these capabilities in your termcap entries (in
`/etc/termcap') or use them with the commands `termcap', `terminfo' and
`termcapinfo' in your screenrc files. It is often not possible to place
@@ -3039,8 +3714,9 @@ these capabilities in the terminfo database.
.TP 13
.BI LP " (bool)"
Terminal has VT100 style margins (`magic margins'). Note that
-this capability is obsolete because \fIscreen\fP uses the standard 'xn'
-instead.
+this capability is obsolete because
+.I screen
+uses the standard 'xn' instead.
.TP 13
.BI Z0 " (str)"
Change width to 132 columns.
@@ -3073,10 +3749,10 @@ Use the string as a conversion table for font '0'. See
the 'ac' capability for more details.
.TP 13
.BI CS " (str)"
-Switch cursorkeys to application mode.
+Switch cursor-keys to application mode.
.TP 13
.BI CE " (str)"
-Switch cursorkeys back to normal mode.
+Switch cursor-keys back to normal mode.
.TP 13
.BI AN " (bool)"
Turn on autonuke. See the 'autonuke' command for more details.
@@ -3089,7 +3765,7 @@ Set the kanji type of the terminal. Valid strings are \*Qjis\*U,
\*Qeuc\*U and \*Qsjis\*U.
.TP 13
.BI AF " (str)"
-Change character forground color in an ANSI conform way. This
+Change character foreground color in an ANSI conform way. This
capability will almost always be set to '\eE[3%dm' ('\eE[3%p1%dm'
on terminfo machines).
.TP 13
@@ -3102,6 +3778,9 @@ Does understand ANSI set default fg/bg color (\eE[39m / \eE[49m).
.BI XC " (str)"
Describe a translation of characters to strings depending on the
current font. More details follow in the next section.
+.TP 13
+.BI TF " (bool)"
+Add missing capabilities to the termcap/info entry. (Set by default).
.SH CHARACTER TRANSLATION
\fIScreen\fP has a powerful mechanism to translate characters to arbitrary
@@ -3119,12 +3798,14 @@ Syntax:
The things in braces may be repeated any number of times.
-A \fI<charset-mapping>\fP tells \fIscreen\fP how to map characters
+A \fI<charset-mapping>\fP tells
+.I screen
+how to map characters
in font \fI<designator>\fP ('B': Ascii, 'A': UK, 'K': german, etc.)
to strings. Every \fI<mapping>\fP describes to what string a single
character will be translated. A template mechanism is used, as
most of the time the codes have a lot in common (for example
-strings to switch to and from another charset). Each occurence
+strings to switch to and from another charset). Each occurrence
of '%' in \fI<template>\fP gets substituted with the \fI<template-arg>\fP
specified together with the character. If your strings are not
similar at all, then use '%' as a template and place the full
@@ -3136,7 +3817,9 @@ Here is an example:
termcap hp700 'XC=B\eE(K%\eE(B,\e304[,\e326\e\e\e\e,\e334]'
-This tells \fIscreen\fP, how to translate ISOlatin1 (charset 'B')
+This tells .I
+screen
+how to translate ISOlatin1 (charset 'B')
upper case umlaut characters on a hp700 terminal that has a
german charset. '\e304' gets translated to '\eE(K[\eE(B' and so on.
Note that this line gets parsed *three* times before the internal
@@ -3145,9 +3828,11 @@ create a single '\e'.
Another extension was added to allow more emulation: If a mapping
translates the unquoted '%' char, it will be sent to the terminal
-whenever \fIscreen\fP switches to the corresponding \fI<designator>\fP. In this
+whenever
+.I screen
+switches to the corresponding \fI<designator>\fP. In this
special case the template is assumed to be just '%' because
-the charset switch sequence and the character mappings normaly
+the charset switch sequence and the character mappings normally
haven't much in common.
This example shows one use of the extension:
@@ -3155,7 +3840,9 @@ This example shows one use of the extension:
termcap xterm 'XC=K%,%\eE(B,[\e304,\e\e\e\e\e326,]\e334'
Here, a part of the german ('K') charset is emulated on an xterm.
-If \fIscreen\fP has to change to the 'K' charset, '\eE(B' will be sent
+If
+.I screen
+has to change to the 'K' charset, '\eE(B' will be sent
to the terminal, i.e. the ASCII charset is used instead. The
template is just '%', so the mapping is straightforward: '['
to '\e304', '\e' to '\e326', and ']' to '\e334'.
@@ -3166,9 +3853,7 @@ to '\e304', '\e' to '\e326', and ']' to '\e334'.
Number of columns on the terminal (overrides termcap entry).
.IP HOME
Directory in which to look for .screenrc.
-.IP ISCREENRC
-Alternate user screenrc file.
-.IP LINES
+.IP LINES
Number of lines on the terminal (overrides termcap entry).
.IP LOCKPRG
Screen lock program.
@@ -3196,15 +3881,18 @@ Terminal description.
.SH FILES
.PD 0
-.IP $SYSSCREENRC 28
-.IP /local/etc/screenrc
-\fIscreen\fP initialization commands
-.IP $ISCREENRC
+.IP .../screen-3.?.??/etc/screenrc 34
+.IP .../screen-3.?.??/etc/etcscreenrc
+Examples in the
+.I screen
+distribution package for private and global initialization files.
+.IP $SYSSCREENRC
+.IP /usr/local/etc/screenrc
+.I screen
+initialization commands
.IP $SCREENRC
-.IP $HOME/.iscreenrc
.IP $HOME/.screenrc
-Read in after /local/etc/screenrc
-.IP $ISCREENDIR/S-<login>
+Read in after /usr/local/etc/screenrc
.IP $SCREENDIR/S-<login>
.IP /local/screens/S-<login>
Socket directories (default)
@@ -3215,7 +3903,8 @@ Written by the "termcap" output function
.IP /usr/tmp/screens/screen-exchange
or
.IP /tmp/screen-exchange
-\fIscreen\fP `interprocess communication buffer'
+.I screen
+`interprocess communication buffer'
.IP hardcopy.[0-9]
Screen images created by the hardcopy function
.IP screenlog.[0-9]
@@ -3240,7 +3929,7 @@ produced by Wayne Davison, Juergen Weigert and Michael Schroeder.
.SH COPYLEFT
.nf
-Copyright (C) 1993
+Copyright (C) 1999
Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de)
Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de)
Copyright (C) 1987 Oliver Laumann
@@ -3265,7 +3954,7 @@ Free Software Foundation, Inc.,
.nf
Ken Beal (kbeal@amber.ssd.csd.harris.com),
Rudolf Koenig (rfkoenig@immd4.informatik.uni-erlangen.de),
-Toerless Eckert (eckert@immd4.informatik.uni-erlangen.de),
+Toerless Eckert (eckert@immd4.informatik.uni-erlangen.de),
Wayne Davison (davison@borland.com),
Patrick Wolfe (pat@kai.com, kailand!pat),
Bart Schaefer (schaefer@cse.ogi.edu),
@@ -3284,7 +3973,7 @@ Frank van der Linden (vdlinden@fwi.uva.nl),
Martin Schweikert (schweik@cpp.ob.open.de),
David Vrona (dave@sashimi.lcu.com),
E. Tye McQueen (tye%spillman.UUCP@uunet.uu.net),
-Matthew Green (mrgreen@mame.mu.oz.au),
+Matthew Green (mrg@mame.mu.oz.au),
Christopher Williams (cgw@unt.edu),
Matt Mosley (mattm@access.digex.net),
Gregory Neil Shapiro (gshapiro@wpi.WPI.EDU).
@@ -3292,11 +3981,22 @@ Gregory Neil Shapiro (gshapiro@wpi.WPI.EDU).
.SH VERSION
-This is version 3.7.0. Its roots are a merge of a custom version
+This is version 3.9 Its roots are a merge of a custom version
2.3PR7 by Wayne Davison
and several enhancements to Oliver Laumann's version 2.0. Note that all versions
-numbered 2.x are copyright by Oliver Laumann.
+numbered 2.x are copyright by Oliver Laumann.
+.SH AVAILABILITY
+The latest official release of
+.I screen
+available via anonymous ftp from prep.ai.mit.edu, nic.funet.fi or any other
+.I GNU
+distribution site. The home site of
+.I screen
+is ftp.uni-erlangen.de (131.188.3.71), in the directory
+pub/utilities/screen. The subdirectory `private' contains the latest beta
+testing release. If you want to help, send a note to
+screen@uni-erlangen.de.
.SH BUGS
.PD
@@ -3306,12 +4006,12 @@ correctly (they are ignored). `xn' is treated as a magic-margin
indicator.
.IP \(bu
.I Screen
-has no clue about double-high or double-wide characters.
-But this is the only area where
+has no clue about double-high or double-wide characters.
+But this is the only area where
.I vttest
is allowed to fail.
.IP \(bu
-It is not possible to change the environment variable $TERMCAP when
+It is not possible to change the environment variable $TERMCAP when
reattaching under a different terminal type.
.IP \(bu
The support of terminfo based systems is very limited. Adding extra
@@ -3321,9 +4021,9 @@ capabilities to $TERMCAP may not have any effects.
does not make use of hardware tabs.
.IP \(bu
.I Screen
-must be installed as set-uid with owner root in order to be able
-to correctly change the owner of the tty device file for each
-window.
+must be installed as set-uid with owner root on most systems in order
+to be able to correctly change the owner of the tty device file for
+each window.
Special permission may also be required to write the file \*Q/etc/utmp\*U.
.IP \(bu
Entries in \*Q/etc/utmp\*U are not removed when
@@ -3335,16 +4035,28 @@ to advertise that a user is logged on who really isn't.
.I Screen
may give a strange warning when your tty has no utmp entry.
.IP \(bu
-When the modem line was hung up,
+When the modem line was hung up,
.I screen
may not automatically detach (or quit)
-unless the device driver is configured to send a HANGUP signal.
-To detach a
+unless the device driver is configured to send a HANGUP signal.
+To detach a
.I screen
session use the -D or -d command line option.
.IP \(bu
+If a password is set, the command line options -d and -D still detach a
+session without asking.
+.IP \(bu
+Both \*Qbreaktype\*U and \*Qdefbreaktype\*U change the break generating
+method used by all terminal devices. The first should change a window
+specific setting, where the latter should change only the default for new
+windows.
+.IP \(bu
+When attaching to a multiuser session, the user's .screenrc file is not
+sourced. Each user's personal settings have to be included in the .screenrc
+file from which the session is booted, or have to be changed manually.
+.IP \(bu
A weird imagination is most useful to gain full advantage of all the features.
.IP \(bu
-Send bugreports, fixes, enhancements, t-shirts, money, beer & pizza to
+Send bug-reports, fixes, enhancements, t-shirts, money, beer & pizza to
.BR screen@uni-erlangen.de .
diff --git a/doc/screen.info b/doc/screen.info
index 06243df..11447c5 100644
--- a/doc/screen.info
+++ b/doc/screen.info
@@ -3,7 +3,7 @@ file ./screen.texinfo.
This file documents the `Screen' virtual terminal manager.
- Copyright (c) 1993 Free Software Foundation, Inc.
+ Copyright (c) 1993-1995 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
@@ -21,147 +21,161 @@ translation approved by the Foundation.

Indirect:
-screen.info-1: 873
-screen.info-2: 50135
-screen.info-3: 99940
-screen.info-4: 149859
+screen.info-1: 878
+screen.info-2: 50660
+screen.info-3: 100483
+screen.info-4: 150213

Tag Table:
(Indirect)
-Node: Top873
-Node: Overview2756
-Node: Getting Started6129
-Node: Invoking Screen7887
-Node: Customization13559
-Node: Startup Files14046
-Node: Colon15692
-Node: Commands16314
-Node: Default Key Bindings17272
-Node: Command Summary22227
-Node: New Window32611
-Node: Chdir33374
-Node: Screen Command34345
-Node: Setenv35983
-Node: Shell36503
-Node: Term37176
-Node: Selecting37936
-Node: Next and Previous38473
-Node: Other Window38999
-Node: Select39408
-Node: Session Management40011
-Node: Detach40848
-Node: Power Detach42133
-Node: Lock42772
-Node: Multiuser Session43658
-Node: Multiuser44416
-Node: Acladd44803
-Node: Aclchg45298
-Node: Acldel46621
-Node: Wall46954
-Node: Writelock47192
-Node: Session Name48085
-Node: Suspend48632
-Node: Quit48964
-Node: Window Settings49389
-Node: Naming Windows50135
-Node: Title Command51635
-Node: Dynamic Titles51909
-Node: Title Prompts53443
-Node: Title Screenrc54524
-Node: Console56163
-Node: Kill56605
-Node: Login57428
-Node: Mode58247
-Node: Monitor58645
-Node: Windows60056
-Node: Hardstatus61065
-Node: Virtual Terminal62236
-Node: Control Sequences63293
-Node: Input Translation69794
-Node: Digraph74310
-Node: Bell75102
-Node: Clear76940
-Node: Info77143
-Node: Redisplay77969
-Node: Wrap79101
-Node: Reset79852
-Node: Window Size80170
-Node: Character Processing80785
-Node: Copy and Paste83657
-Node: Copy84262
-Node: Line Termination85107
-Node: Scrollback85516
-Node: Copy Mode Keys86005
-Node: Movement86820
-Node: Marking87974
-Node: Repeat count88349
-Node: Searching88663
-Node: Specials88925
-Node: Paste90857
-Node: Registers93418
-Node: Screen-Exchange94424
-Node: History95507
-Node: Subprocess Execution96247
-Node: Exec96611
-Node: Using Exec98201
-Node: Key Binding99940
-Node: Bind100583
-Node: Bind Examples101570
-Node: Command Character102250
-Node: Help103758
-Node: Bindkey104271
-Node: Bindkey Examples105814
-Node: Bindkey Control106699
-Node: Flow Control107296
-Node: Flow Control Summary107872
-Node: Flow110806
-Node: XON/XOFF111580
-Node: Termcap111953
-Node: Window Termcap112810
-Node: Dump Termcap117968
-Node: Termcap Syntax118683
-Node: Termcap Examples120843
-Node: Special Capabilities122884
-Node: Autonuke125348
-Node: Obuflimit125998
-Node: Character Translation126827
-Node: Message Line129438
-Node: Privacy Message130349
-Node: Hardware Status Line130846
-Node: Last Message131475
-Node: Message Wait131902
-Node: Logging132328
-Node: Hardcopy132652
-Node: Log133448
-Node: Startup134196
-Node: echo134603
-Node: sleep135009
-Node: Startup Message135350
-Node: Miscellaneous135623
-Node: At136612
-Node: Break137920
-Node: Debug138323
-Node: License138707
-Node: Nethack138972
-Node: Number139648
-Node: Silence140017
-Node: Time140784
-Node: Version141158
-Node: Zombie141364
-Node: Printcmd142418
-Node: Sorendition143124
-Node: Environment143775
-Node: Files144857
-Node: Credits145983
-Node: Bugs147900
-Node: Known Bugs148370
-Node: Reporting Bugs149859
-Node: Availability150635
-Node: Installation151081
-Node: Socket Directory151471
-Node: Compiling Screen152001
-Node: Concept Index153393
-Node: Command Index155173
-Node: Keystroke Index162058
+Node: Top878
+Node: Overview2886
+Node: Getting Started6518
+Node: Invoking Screen8276
+Node: Customization16304
+Node: Startup Files16791
+Node: Colon18437
+Node: Commands19059
+Node: Default Key Bindings20017
+Node: Command Summary25596
+Node: New Window37785
+Node: Chdir38617
+Node: Screen Command39588
+Node: Setenv41289
+Node: Shell41809
+Node: Term42575
+Node: Window Types43356
+Node: Selecting47674
+Node: Next and Previous48228
+Node: Other Window48754
+Node: Select49163
+Node: Session Management49831
+Node: Detach50660
+Node: Power Detach51945
+Node: Lock52584
+Node: Multiuser Session53470
+Node: Multiuser54432
+Node: Acladd54819
+Node: Aclchg55384
+Node: Acldel56790
+Node: Aclgrp57125
+Node: Displays57776
+Node: Umask58070
+Node: Wall59051
+Node: Writelock59288
+Node: Su60184
+Node: Session Name60984
+Node: Suspend61531
+Node: Quit61863
+Node: Regions62288
+Node: Split62773
+Node: Focus63063
+Node: Only63325
+Node: Remove63489
+Node: Caption63698
+Node: Window Settings64443
+Node: Naming Windows65178
+Node: Title Command66678
+Node: Dynamic Titles66952
+Node: Title Prompts68486
+Node: Title Screenrc69567
+Node: Console71206
+Node: Kill71649
+Node: Login72541
+Node: Mode73360
+Node: Monitor73759
+Node: Windows75172
+Node: Hardstatus76234
+Node: Virtual Terminal77427
+Node: Control Sequences78485
+Node: Input Translation85315
+Node: Digraph89831
+Node: Bell90623
+Node: Clear92502
+Node: Info92705
+Node: Redisplay94567
+Node: Wrap95698
+Node: Reset96449
+Node: Window Size96767
+Node: Character Processing97612
+Node: Copy and Paste100483
+Node: Copy101088
+Node: Line Termination101933
+Node: Scrollback102342
+Node: Copy Mode Keys103079
+Node: Movement103894
+Node: Marking105048
+Node: Repeat count105423
+Node: Searching105737
+Node: Specials105999
+Node: Paste107953
+Node: Registers110625
+Node: Screen-Exchange111631
+Node: History112714
+Node: Subprocess Execution113454
+Node: Exec113818
+Node: Using Exec115564
+Node: Key Binding117403
+Node: Bind118046
+Node: Bind Examples119033
+Node: Command Character119713
+Node: Help121254
+Node: Bindkey121767
+Node: Bindkey Examples123313
+Node: Bindkey Control124202
+Node: Flow Control124799
+Node: Flow Control Summary125375
+Node: Flow128309
+Node: XON/XOFF129083
+Node: Termcap129456
+Node: Window Termcap130313
+Node: Dump Termcap135556
+Node: Termcap Syntax136271
+Node: Termcap Examples138438
+Node: Special Capabilities140479
+Node: Autonuke143042
+Node: Obuflimit143692
+Node: Character Translation144521
+Node: Message Line147134
+Node: Privacy Message148045
+Node: Hardware Status Line148542
+Node: Last Message150213
+Node: Message Wait150640
+Node: Logging151066
+Node: Hardcopy151390
+Node: Log152186
+Node: Startup153802
+Node: echo154209
+Node: sleep154617
+Node: Startup Message154958
+Node: Miscellaneous155231
+Node: At156339
+Node: Break158333
+Node: Debug159980
+Node: License160457
+Node: Nethack160722
+Node: Nonblock161400
+Node: Number161854
+Node: Silence162224
+Node: Time163160
+Node: Verbose163534
+Node: Version163868
+Node: Zombie164077
+Node: Printcmd165131
+Node: Sorendition165837
+Node: String Escapes166489
+Node: Environment167814
+Node: Files168849
+Node: Credits169936
+Node: Bugs171849
+Node: Known Bugs172319
+Node: Reporting Bugs174413
+Node: Availability175179
+Node: Installation175723
+Node: Socket Directory176113
+Node: Compiling Screen176643
+Node: Concept Index178035
+Node: Command Index180092
+Node: Keystroke Index188392

End Tag Table
diff --git a/doc/screen.info-1 b/doc/screen.info-1
index 6d39c2c..d9d4b04 100644
--- a/doc/screen.info-1
+++ b/doc/screen.info-1
@@ -3,7 +3,7 @@ file ./screen.texinfo.
This file documents the `Screen' virtual terminal manager.
- Copyright (c) 1993 Free Software Foundation, Inc.
+ Copyright (c) 1993-1995 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
@@ -26,7 +26,7 @@ Screen
******
This file documents the `Screen' virtual terminal manager, version
-3.7.0.
+3.9.0.
* Menu:
@@ -37,8 +37,9 @@ Screen
* Commands:: List all of the commands.
* New Window:: Running a program in a new window.
* Selecting:: Selecting a window to display.
-* Session Management:: Suspending or detaching a session.
-* Window Settings:: titles, logging, etc.
+* Session Management:: Suspend/detach, grant access, connect sessions.
+* Regions:: Split-screen commands.
+* Window Settings:: Titles, logging, etc.
* Virtual Terminal:: Controlling the `screen' VT100 emulation.
* Copy and Paste:: Exchanging text between windows and sessions.
* Subprocess Execution:: I/O filtering with `exec'.
@@ -49,6 +50,7 @@ Screen
* Logging:: Keeping a record of your session.
* Startup:: Functions only useful at `screen' startup.
* Miscellaneous:: Various other commands.
+* String Escapes:: Inserting current information into strings
* Environment:: Environment variables used by `screen'.
* Files:: Files used by `screen'.
* Credits:: Who's who of `screen'.
@@ -67,11 +69,11 @@ Overview
Screen is a full-screen window manager that multiplexes a physical
terminal between several processes, typically interactive shells. Each
virtual terminal provides the functions of the DEC VT100 terminal and,
-in addition, several control functions from the ANSI X3.64 (ISO 6429)
-and ISO 2022 standards (e.g. insert/delete line and support for multiple
-character sets). There is a scrollback history buffer for each virtual
-terminal and a copy-and-paste mechanism that allows the user to move
-text regions between windows.
+in addition, several control functions from the ISO 6429 (ECMA 48, ANSI
+X3.64) and ISO 2022 standards (e.g. insert/delete line and support for
+multiple character sets). There is a scrollback history buffer for
+each virtual terminal and a copy-and-paste mechanism that allows the
+user to move text regions between windows.
When `screen' is called, it creates a single window with a shell in
it (or the specified command) and then gets out of your way so that you
@@ -82,7 +84,7 @@ windows, turn output logging on and off, copy text between windows, view
the scrollback history, switch between windows, etc. All windows run
their programs completely independent of each other. Programs continue
to run when their window is currently not visible and even when the
-whole screen session is detached from the users terminal.
+whole screen session is detached from the user's terminal.
When a program terminates, `screen' (per default) kills the window
that contained it. If this window was in the foreground, the display
@@ -98,6 +100,11 @@ Character::.) and all the key bindings (*note Key Binding::.) can be
fully customized to be anything you like, though they are always two
characters in length.
+ `Screen' does not understand the prefix `C-' to mean control.
+Please use the caret notation (`^A' instead of `C-a') as arguments to
+e.g. the `escape' command or the `-e' option. `Screen' will also print
+out control characters in caret notation.
+
The standard way to create a new window is to type `C-a c'. This
creates a new window running a shell and switches to that window
immediately, regardless of the state of the process running in the
@@ -188,11 +195,35 @@ Invoking `Screen'
running elsewhere (*note Detach::.). `-d' has the same effect as
typing `C-a d' from the controlling terminal for the session.
`-D' is the equivalent to the power detach key. If no session can
- be detached, this option is ignored. The combination `screen -D
- -r' can be used to log out from a remote terminal and transport the
- session running there to your current terminal. *Note*: It is a
- good idea to check the status of your sessions with `screen -list'
- before using this option.
+ be detached, this option is ignored. In combination with the
+ `-r'/`-R' option more powerful effects can be achieved:
+
+ `-d -r'
+ Reattach a session and if necessary detach it first.
+
+ `-d -R'
+ Reattach a session and if necessary detach or even create
+ it first.
+
+ `-d -RR'
+ Reattach a session and if necessary detach or create it. Use
+ the first session if more than one session is available.
+
+ `-D -r'
+ Reattach a session. If necessary detach and logout remotely
+ first.
+
+ `-D -R'
+ Attach here and now. In detail this means: If a session is
+ running, then reattach. If necessary detach and logout
+ remotely first. If it was not running create it and notify
+ the user. This is the author's favorite.
+
+ `-D -RR'
+ Attach here and now. Whatever that means, just do it.
+
+ *Note*: It is a good idea to check the status of your sessions
+ with `screen -list' before using this option.
`-e XY'
Set the command character to X, and the character generating a
@@ -228,16 +259,21 @@ Invoking `Screen'
Turn login mode on or off (for `/etc/utmp' updating). This option
is equivalent to the `deflogin' command (*note Login::.).
-`-ls'
-`-list'
+`-ls [MATCH]'
+`-list [MATCH]'
Do not start `screen', but instead print a list of session
identification strings (usually of the form PID.TTY.HOST; *note
Session Name::.). Sessions marked `detached' can be resumed with
`screen -r'. Those marked `attached' are running and have a
- controlling terminal. Sessions marked as `dead' should be
- thoroughly checked and removed. Ask your system administrator if
- you are not sure why they died. Remove sessions with the `-wipe'
- option.
+ controlling terminal. If the session runs in multiuser mode, it
+ is marked `multi'. Sessions marked as `unreachable' either live
+ on a different host or are dead. An unreachable session is
+ considered dead, when its name matches either the name of the
+ local host, or the specified parameter, if any. See the `-r' flag
+ for a description how to construct matches. Sessions marked as
+ `dead' should be thoroughly checked and removed. Ask your system
+ administrator if you are not sure. Remove sessions with the
+ `-wipe' option.
`-L'
Tell `screen' that your auto-margin terminal allows programs to
@@ -249,24 +285,44 @@ Invoking `Screen'
Tell `screen' to ignore the `$STY' environment variable. When
this option is used, a new session will always be created,
regardless of whether `screen' is being called from within another
- `screen' session or not.
+ `screen' session or not. This flag has a special meaning in
+ connection with the `-d' option:
+ `-m -d'
+ Start `screen' in *detached* mode. This creates a new session
+ but doesn't attach to it. This is useful for system startup
+ scripts.
+
+ `-m -D'
+ This also starts `screen' in *detached* mode, but doesn't fork
+ a new process. The command exits if the session terminates.
+
+`-q'
+ Suppress printing of error messages. In combination with `-ls' the
+ exit value is set as follows: 9 indicates a directory without
+ sessions. 10 indicates a directory with running but not attachable
+ sessions. 11 (or more) indicates 1 (or more) usable sessions. In
+ combination with `-r' the exit value is as follows: 10 indicates
+ that there is no session to resume. 12 (or more) indicates that
+ there are 2 (or more) sessions to resume and you should specify
+ which one to choose. In all other cases `-q' has no effect.
`-r [PID.SESSIONNAME]'
`-r SESSIONOWNER/[PID.SESSIONNAME]'
- Resume a detached `screen' session. No other options (except `-d'
- or `-D') may be specified, though the session name (*note Session
- Name::.) may be needed to distinguish between multiple detached
- `screen' sessions. The second form is used to connect to another
- users screen session which runs in multi-user mode. This indicates
- that screen should look for sessions in another users directory.
- This requires setuid-root.
+ Resume a detached `screen' session. No other options (except
+ combinations with `-d' or `-D') may be specified, though the
+ session name (*note Session Name::.) may be needed to distinguish
+ between multiple detached `screen' sessions. The second form is
+ used to connect to another user's screen session which runs in
+ multiuser mode. This indicates that screen should look for
+ sessions in another user's directory. This requires setuid-root.
`-R'
Resume the first appropriate detached `screen' session. If
successful, all other command-line options are ignored. If no
detached session exists, start a new session using the specified
options, just as if `-R' had not been specified. This option is
- set by default if screen is run as a login-shell.
+ set by default if screen is run as a login-shell. For combinations
+ with the `-D'/`-d' option see there.
`-s PROGRAM'
Set the default shell to be PROGRAM. By default, `screen' uses
@@ -289,9 +345,12 @@ Invoking `Screen'
`-v'
Print the version number.
-`-wipe'
+`-wipe [MATCH]'
List available screens like `screen -ls', but remove destroyed
- sessions instead of marking them as `dead'.
+ sessions instead of marking them as `dead'. An unreachable
+ session is considered dead, when its name matches either the name
+ of the local host, or the explicitly given parameter, if any. See
+ the `-r' flag for a description how to construct matches.
`-x'
Attach to a session which is already attached elsewhere
@@ -408,13 +467,20 @@ Thus, both `C-a c' and `C-a C-c' can be used to create a window.
(select)
Prompt for a window identifier and switch. *Note Selecting::.
-`C-a 0...9'
- (select 0...select 9)
- Switch to window number 0...9. *Note Selecting::.
+`C-a 0...9, -'
+ (select 0...select 9, select -)
+ Switch to window number 0...9, or the blank window. *Note
+ Selecting::.
+
+`C-a Tab'
+ (focus)
+ Switch the input focus to the next region. *Note Regions::.
`C-a C-a'
(other)
- Toggle to the window displayed previously. *Note Selecting::.
+ Toggle to the window displayed previously. If this window does no
+ longer exist, `other' has the same effect as `next'. *Note
+ Selecting::.
`C-a a'
(meta)
@@ -427,7 +493,8 @@ Thus, both `C-a c' and `C-a C-c' can be used to create a window.
Naming Windows::.
`C-a b'
- itemx `C-a C-b' (break)
+`C-a C-b'
+ (break)
Send a break to the tty. *Note Break::.
`C-a B'
@@ -458,6 +525,10 @@ Thus, both `C-a c' and `C-a C-c' can be used to create a window.
(flow)
Cycle flow among `on', `off' or `auto'. *Note Flow::.
+`C-a F'
+ (fit)
+ Resize the window to the current region size. *Note Window Size::.
+
`C-a C-g'
(vbell)
Toggle visual bell mode. *Note Bell::.
@@ -524,6 +595,10 @@ Thus, both `C-a c' and `C-a C-c' can be used to create a window.
(xon)
Send a ^Q (ASCII XON) to the current window. *Note XON/XOFF::.
+`C-a Q'
+ (only)
+ Delete all regions but the current one. *Note Regions::.
+
`C-a r'
`C-a C-r'
(wrap)
@@ -535,6 +610,10 @@ Thus, both `C-a c' and `C-a C-c' can be used to create a window.
(xoff)
Send a ^S (ASCII XOFF) to the current window. *Note XON/XOFF::.
+`C-a S'
+ (split)
+ Split the current region into two new ones. *Note Regions::.
+
`C-a t'
`C-a C-t'
(time)
@@ -562,6 +641,10 @@ Thus, both `C-a c' and `C-a C-c' can be used to create a window.
(lockscreen)
Lock your terminal. *Note Lock::.
+`C-a X'
+ (remove)
+ Kill the current region. *Note Regions::.
+
`C-a z'
`C-a C-z'
(suspend)
@@ -601,6 +684,7 @@ Thus, both `C-a c' and `C-a C-c' can be used to create a window.
current window. *Note Paste::.
`C-a {'
+`C-a }'
(history)
Copy and paste a previous (command) line. *Note History::.
@@ -627,6 +711,10 @@ Thus, both `C-a c' and `C-a C-c' can be used to create a window.
(license)
Show the copyright page.
+`C-a *'
+ (displays)
+ Show the listing of attached displays.
+

File: screen.info, Node: Command Summary, Prev: Default Key Bindings, Up: Commands
@@ -642,9 +730,19 @@ Command Summary
`acldel USERNAME'
Disallow other user in this session. *Note Multiuser Session::.
+`aclgrp USRNAME [GROUPNAME]'
+ Inherit permissions granted to a group leader. *Note Multiuser
+ Session::.
+
+`aclumask [USERS]+\-BITS ...'
+ Predefine access to new windows. *Note Umask::.
+
`activity MESSAGE'
Set the activity notification message. *Note Monitor::.
+`addacl USERNAMES'
+ Synonym to `acladd'. *Note Multiuser Session::.
+
`allpartial STATE'
Set all windows to partial refresh. *Note Redisplay::.
@@ -658,7 +756,7 @@ Command Summary
Enable a clear screen to discard unwritten output. *Note
Autonuke::.
-`bell_msg MESSAGE'
+`bell_msg [MESSAGE]'
Set the bell notification message. *Note Bell::.
`bind KEY [COMMAND [ARGS]]'
@@ -670,12 +768,21 @@ Command Summary
`break [DURATION]'
Send a break signal to the current window. *Note Break::.
+`breaktype [TCSENDBREAK | TCSBRK | TIOCSBRK]'
+ Specify how to generate breaks. *Note Break::.
+
`bufferfile [EXCHANGE-FILE]'
Select a file for screen-exchange. *Note Screen-Exchange::.
`c1 [STATE]'
Change c1 code processing. *Note Character Processing::.
+`caption MODE [STRING]'
+ Change caption mode and string. *Note Regions::.
+
+`chacl USERNAMES PERMBITS LIST'
+ Synonym to `aclchg'. *Note Multiuser Session::.
+
`charset SET'
Change character set slot designation. *Note Character
Processing::.
@@ -692,6 +799,9 @@ Command Summary
`command'
Simulate the screen escape key. *Note Command Character::.
+`compacthist [STATE]'
+ Selects compaction of trailing empty lines. *Note Scrollback::.
+
`console [STATE]'
Grab or ungrab console output. *Note Console::.
@@ -710,6 +820,9 @@ Command Summary
`defautonuke STATE'
Select default autonuke behavior. *Note Autonuke::.
+`defbreaktype [TCSENDBREAK | TCSBRK | TIOCSBRK]'
+ Specify the default for generating breaks. *Note Break::.
+
`defc1 STATE'
Select default c1 processing behavior. *Note Character
Processing::.
@@ -751,11 +864,21 @@ Command Summary
`defscrollback NUM'
Set default lines of scrollback. *Note Scrollback::.
+`defshell COMMAND'
+ Set the default program for new windows. *Note Shell::.
+
+`defsilence STATE'
+ Select default idle monitoring behavior. *Note Silence::.
+
+`defslowpaste MSEC'
+ Select the default inter-character timeout when pasting. *Note
+ Paste::.
+
`defwrap STATE'
Set default line-wrapping behavior. *Note Wrap::.
`defwritelock ON|OFF|AUTO'
- Set default writelock behavior. *Note Multiuser::.
+ Set default writelock behavior. *Note Multiuser Session::.
`defzombie [KEYS]'
Keep dead windows. *Note Zombie::.
@@ -766,6 +889,9 @@ Command Summary
`digraph'
Enter digraph sequence. *Note Digraph::.
+`displays'
+ List currently active user interfaces. *Note Displays::.
+
`dumptermcap'
Write the window's termcap entry to a file. *Note Dump Termcap::.
@@ -778,9 +904,15 @@ Command Summary
`exec [[FDPAT] COMMAND [ARGS ...]]'
Run a subprocess (filter). *Note Exec::.
+`fit'
+ Change window size to current display size. *Note Window Size::.
+
`flow [FSTATE]'
Set flow control behavior. *Note Flow::.
+`focus'
+ Move focus to next region. *Note Regions::.
+
`gr [STATE]'
Change GR charset processing. *Note Character Processing::.
@@ -805,6 +937,9 @@ Command Summary
`history'
Find previous command beginning .... *Note History::.
+`hstatus STATUS'
+ Change the window's hardstatus line. *Note Hardstatus::.
+
`info'
Display terminal settings. *Note Info::.
@@ -835,6 +970,9 @@ Command Summary
`login [STATE]'
Log the window in `/etc/utmp'. *Note Login::.
+`logtstamp [STATE]'
+ Configure logfile time-stamps. *Note Log::.
+
`mapdefault'
Use only the default mapping table for the next keystroke. *Note
Bindkey Control::.
@@ -844,7 +982,7 @@ Command Summary
Control::.
`maptimeout TIMO'
- Set the intercharacter timeout used for keymapping. *Note Bindkey
+ Set the inter-character timeout used for keymapping. *Note Bindkey
Control::.
`markkeys STRING'
@@ -871,12 +1009,18 @@ Command Summary
`next'
Switch to the next window. *Note Selecting::.
+`nonblock STATE'
+ Disable flow control to the current display. *Note Nonblock::.
+
`number [N]'
Change/display the current window's number. *Note Number::.
`obuflimit [LIMIT]'
Select output buffer limit. *Note Obuflimit::.
+`only'
+ Kill all other regions. *Note Regions::.
+
`other'
Switch to the window you were in last. *Note Selecting::.
@@ -927,6 +1071,9 @@ Command Summary
`register KEY STRING'
Store a string to a register. *Note Registers::.
+`remove'
+ Kill current region. *Note Regions::.
+
`removebuf'
Delete the screen-exchange file. *Note Screen-Exchange::.
@@ -969,12 +1116,18 @@ Command Summary
`sorendition [ATTR [COLOR]]'
Change text highlighting. *Note Sorendition::.
+`split'
+ Split region into two parts. *Note Regions::.
+
`startup_message STATE'
Display copyright notice on startup. *Note Startup::.
`stuff STRING'
Stuff a string in the input buffer of a window. *Note Paste::.
+`su [USERNAME [PASSWORD [PASSWORD2]]]'
+ Identify a user. *Note Multiuser Session::.
+
`suspend'
Put session in background. *Note Suspend::.
@@ -997,6 +1150,9 @@ Command Summary
`title [WINDOWTITLE]'
Set the name of the current window. *Note Title Command::.
+`umask [USERS]+\-BITS ...'
+ Synonym to `aclumask'. *Note Umask::.
+
`unsetenv VAR'
Unset environment variable for new windows. *Note Setenv::.
@@ -1059,6 +1215,7 @@ with a higher MAXWIN setting.
* Setenv:: Set environment variables for new windows.
* Shell:: Parameters for shell windows.
* Term:: Set the terminal type for new windows.
+* Window Types:: Creating different types of windows.

File: screen.info, Node: Chdir, Next: Screen Command, Up: New Window
@@ -1091,32 +1248,33 @@ Screen Command
(`C-a c', `C-a C-c')
Establish a new window. The flow-control options (`-f', `-fn' and
`-fa'), title option (`-t'), login options (`-l' and `-ln') ,
- terminal type option (`-T TERM') and scrollback option (`-h NUM')
- may be specified for each command. If an optional number N in the
- range 0...9 is given, the window number N is assigned to the newly
- created window (or, if this number is already in-use, the next
- available number). If a command is specified after `screen', this
- command (with the given arguments) is started in the window;
- otherwise, a shell is created.
-
- If a tty (character special device) name (e.g. `/dev/ttyS0') is
- specified as cmd, then the window is directly connected to this
- device. This is similar to the cmd `kermit -l /dev/ttyS0 -c' but
- saves resources and is more efficient.
+ terminal type option (`-T TERM'), the all-capability-flag (`-a')
+ and scrollback option (`-h NUM') may be specified with each
+ command. The option (`-M') turns monitoring on for this window.
+ The option (`-L') turns output logging on for this window. If an
+ optional number N in the range 0...9 is given, the window number N
+ is assigned to the newly created window (or, if this number is
+ already in-use, the next available number). If a command is
+ specified after `screen', this command (with the given arguments)
+ is started in the window; otherwise, a shell is created.
+
+ Screen has built in some functionality of `cu' and `telnet'.
+ *Note Window Types::.
Thus, if your `.screenrc' contains the lines
# example for .screenrc:
screen 1
- screen -fn -t foobar 2 telnet foobar
+ screen -fn -t foobar 2 -L telnet foobar
`screen' creates a shell window (in window #1) and a window with a
TELNET connection to the machine foobar (with no flow-control using the
-title `foobar' in window #2). If you do not include any `screen'
-commands in your `.screenrc' file, then `screen' defaults to creating a
-single shell window, number zero. When the initialization is
-completed, `screen' switches to the last window specified in your
-.screenrc file or, if none, it opens default window #0.
+title `foobar' in window #2) and will write a logfile `screenlog.2' of
+the telnet session. If you do not include any `screen' commands in
+your `.screenrc' file, then `screen' defaults to creating a single
+shell window, number zero. When the initialization is completed,
+`screen' switches to the last window specified in your .screenrc file
+or, if none, it opens default window #0.

File: screen.info, Node: Setenv, Next: Shell, Prev: Screen Command, Up: New Window
@@ -1143,6 +1301,7 @@ Shell
=====
- Command: shell COMMAND
+ - Command: defshell COMMAND
(none)
Set the command to be used to create a new shell. This overrides
the value of the environment variable `$SHELL'. This is useful if
@@ -1150,6 +1309,8 @@ Shell
program specified in `$SHELL'. If the command begins with a `-'
character, the shell will be started as a login-shell.
+ `defshell' is currently a synonym to the `shell' command.
+
- Command: shelltitle TITLE
(none)
Set the title for all shells created during startup or by the C-a
@@ -1157,7 +1318,7 @@ Shell
titles are.

-File: screen.info, Node: Term, Prev: Shell, Up: New Window
+File: screen.info, Node: Term, Next: Window Types, Prev: Shell, Up: New Window
Term
====
@@ -1176,6 +1337,108 @@ Term
and resetting the default.

+File: screen.info, Node: Window Types, Prev: Term, Up: New Window
+
+Window Types
+============
+
+ Screen provides three different window types. New windows are created
+with `screen''s `screen' command (*note Screen Command::.). The first
+parameter to the `screen' command defines which type of window is
+created. The different window types are all special cases of the normal
+type. They have been added in order to allow `screen' to be used
+efficiently as a console with 100 or more windows.
+ * The normal window contains a shell (default, if no parameter is
+ given) or any other system command that could be executed from a
+ shell. (e.g. `slogin', etc...).
+
+ * If a tty (character special device) name (e.g. `/dev/ttya') is
+ specified as the first parameter, then the window is directly
+ connected to this device. This window type is similar to `screen
+ cu -l /dev/ttya'. Read and write access is required on the device
+ node, an exclusive open is attempted on the node to mark the
+ connection line as busy. An optional parameter is allowed
+ consisting of a comma separated list of flags in the notation used
+ by `stty(1)':
+ `<baud_rate>'
+ Usually 300, 1200, 9600 or 19200. This affects transmission
+ as well as receive speed.
+
+ `cs8 or cs7'
+ Specify the transmission of eight (or seven) bits per byte.
+
+ `ixon or -ixon'
+ Enables (or disables) software flow-control (CTRL-S/CTRL-Q)
+ for sending data.
+
+ `ixoff or -ixoff'
+ Enables (or disables) software flow-control for receiving
+ data.
+
+ `istrip or -istrip'
+ Clear (or keep) the eight bit in each received byte.
+
+ You may want to specify as many of these options as applicable.
+ Unspecified options cause the terminal driver to make up the
+ parameter values of the connection. These values are system
+ dependant and may be in defaults or values saved from a previous
+ connection.
+
+ For tty windows, the `info' command shows some of the modem
+ control lines in the status line. These may include `RTS', `CTS',
+ `DTR', `CD' and more. This depends rather on on the available
+ `ioctl()''s and system header files than on the physical
+ capabilities of the serial board. The name of a logical low
+ (inactive) signal is preceded by an exclamation mark (`!'),
+ otherwise the signal is logical high (active). Unsupported but
+ shown signals are usually shown low. When the `CLOCAL' status bit
+ is true, the whole set of modem signals is placed inside curly
+ braces (`{' and `}'). When the `CRTSCTS' or `TIOCSOFTCAR' bit is
+ true, the signals `CTS' or `CD' are shown in parenthesis,
+ respectively.
+
+ For tty windows, the command `break' causes the Data transmission
+ line (TxD) to go low for a specified period of time. This is
+ expected to be interpreted as break signal on the other side. No
+ data is sent and no modem control line is changed when a `break'
+ is issued.
+
+ * If the first parameter is `//telnet', the second parameter is
+ expected to be a host name, and an optional third parameter may
+ specify a TCP port number (default decimal 23). Screen will
+ connect to a server listening on the remote host and use the
+ telnet protocol to communicate with that server.
+
+ For telnet windows, the command `info' shows details about the
+ connection in square brackets (`[' and `]') at the end of the
+ status line.
+ `b'
+ BINARY. The connection is in binary mode.
+
+ `e'
+ ECHO. Local echo is disabled.
+
+ `c'
+ SGA. The connection is in `character mode' (default: `line
+ mode').
+
+ `t'
+ TTYPE. The terminal type has been requested by the remote
+ host. Screen sends the name `screen' unless instructed
+ otherwise (see also the command `term').
+
+ `w'
+ NAWS. The remote site is notified about window size changes.
+
+ `f'
+ LFLOW. The remote host will send flow control information.
+ (Ignored at the moment.) Additional flags for debugging are
+ `x', `t' and `n' (XDISPLOC, TSPEED and NEWENV).
+
+ For telnet windows, the command `break' sends the telnet code `IAC
+ BREAK' (decimal 243) to the remote host.
+
+
File: screen.info, Node: Selecting, Next: Session Management, Prev: New Window, Up: Top
Selecting a Window
@@ -1189,7 +1452,7 @@ created in that order by default (*note New Window::.).
* Next and Previous:: Forward or back one window.
* Other Window:: Switch back and forth between two windows.
-* Select:: Specify a particular window.
+* Select:: Switch to a window (and to one after `kill').

File: screen.info, Node: Next and Previous, Next: Other Window, Up: Selecting
@@ -1235,10 +1498,11 @@ Select
established, the lowest available number is assigned to this
window. Thus, the first window can be activated by `select 0';
there can be no more than 10 windows present simultaneously
- (unless screen is compiled with a higher MAXWIN setting).
+ (unless screen is compiled with a higher MAXWIN setting). The
+ special command `select -' switches to a blank window.

-File: screen.info, Node: Session Management, Next: Window Settings, Prev: Selecting, Up: Top
+File: screen.info, Node: Session Management, Next: Regions, Prev: Selecting, Up: Top
Session Management Commands
***************************
@@ -1258,257 +1522,3 @@ unexpected loss of carrier.
* Suspend:: Suspend your session.
* Quit:: Terminate your session.
-
-File: screen.info, Node: Detach, Next: Power Detach, Up: Session Management
-
-Detach
-======
-
- - Command: autodetach STATE
- (none)
- Sets whether `screen' will automatically detach upon hangup, which
- saves all your running programs until they are resumed with a
- `screen -r' command. When turned off, a hangup signal will
- terminate `screen' and all the processes it contains. Autodetach is
- on by default.
-
- - Command: detach
- (`C-a d', `C-a C-d')
- Detach the `screen' session (disconnect it from the terminal and
- put it into the background). A detached `screen' can be resumed by
- invoking `screen' with the `-r' option. (*note Invoking Screen::.)
-
- - Command: password [CRYPTED_PW]
- (none)
- Present a crypted password in your `.screenrc' file and screen will
- ask for it, whenever someone attempts to resume a detached
- session. This is useful, if you have privileged programs running
- under `screen' and you want to protect your session from reattach
- attempts by users that managed to assume your uid. (I.e. any
- superuser.) If no crypted password is specified, screen prompts
- twice a password and places its encryption in the paste buffer.
- Default is `none', which disables password checking.
-
-
-File: screen.info, Node: Power Detach, Next: Lock, Prev: Detach, Up: Session Management
-
-Power Detach
-============
-
- - Command: pow_detach
- (`C-a D')
- Mainly the same as `detach', but also sends a HANGUP signal to the
- parent process of `screen'.
- *Caution*: This will result in a logout if `screen' was started
- from your login shell.
-
- - Command: pow_detach_msg [MESSAGE]
- (none)
- The MESSAGE specified here is output whenever a power detach is
- performed. It may be used as a replacement for a logout message or
- to reset baud rate, etc. Without parameter, the current message
- is shown.
-
-
-File: screen.info, Node: Lock, Next: Multiuser Session, Prev: Power Detach, Up: Session Management
-
-Lock
-====
-
- - Command: lockscreen
- (`C-a x', `C-a C-x')
- Call a screenlock program (`/local/bin/lck' or `/usr/bin/lock' or
- a builtin, if no other is available). Screen does not accept any
- command keys until this program terminates. Meanwhile processes in
- the windows may continue, as the windows are in the detached state.
- The screenlock program may be changed through the environment
- variable `$LOCKPRG' (which must be set in the shell from which
- `screen' is started) and is executed with the user's uid and gid.
-
- Warning: When you leave other shells unlocked and have no password
- set on `screen', the lock is void: One could easily re-attach from
- an unlocked shell. This feature should rather be called
- `lockterminal'.
-
-
-File: screen.info, Node: Multiuser Session, Next: Session Name, Prev: Lock, Up: Session Management
-
-Multiuser Session
-=================
-
- These commands allow other users to gain access to one single
-`screen' session. When attaching to a multiuser `screen' the
-sessionname is specified as `username/sessionname' to the `-S' command
-line option. `Screen' must be compiled with multiuser support to
-enable features described here.
-
-* Menu:
-
-* Multiuser:: Enable / Disable multiuser mode.
-* Acladd:: Enable a specific user.
-* Aclchg:: Change a users permissions.
-* Acldel:: Disable a specific user.
-* Wall:: Write a message to all users.
-* Writelock:: Grant exclusive window access.
-
-
-File: screen.info, Node: Multiuser, Next: Acladd, Up: Multiuser Session
-
-Multiuser
----------
-
- - Command: multiuser STATE
- (none)
- Switch between single-user and multi-user mode. Standard screen
- operation is single-user. In multi-user mode the commands
- `acladd', `aclchg' and `acldel' can be used to enable (and
- disable) other users accessing this `screen'.
-
-
-File: screen.info, Node: Acladd, Next: Aclchg, Prev: Multiuser, Up: Multiuser Session
-
-Acladd
-------
-
- - Command: acladd USERNAMES
- (none)
- Enable users to fully access this screen session. USERNAMES can be
- one user or a comma seperated list of users. This command enables
- to attach to the `screen' session and performs the equivalent of
- `aclchg USERNAMES +rwx "#?"'. To add a user with restricted access,
- use the `aclchg' command below. Multi-user mode only.
-
-
-File: screen.info, Node: Aclchg, Next: Acldel, Prev: Acladd, Up: Multiuser Session
-
-Aclchg
-------
-
- - Command: aclchg USERNAMES PERMBITS LIST
- (none)
- Change permissions for a comma seperated list of users.
- Permission bits are represented as `r', `w' and `x'. Prefixing
- `+' grants the permission, `-' removes it. The third parameter is
- a comma seperated list of commands or windows (specified either by
- number or title). The special list `#' refers to all windows, `?'
- to all commands. If USERNAMES consists of a single `*', all known
- users is affected. A command can be executed when the user has
- the `x' bit for it. The user can type input to a window when he
- has its `w' bit set and no other user obtains a writelock for this
- window. Other bits are currently ignored. To withdraw the
- writelock from another user in e.g. window 2: `aclchg USERNAME
- -w+w 2'. To allow readonly access to the session: `aclchg USERNAME
- -w "#"'. As soon as a user's name is known to screen, he can
- attach to the session and (per default) has full permissions for
- all command and windows. Execution permission for the acl
- commands, `at' and others should also be removed or the user may
- be able to regain write permission. Multi-user mode only.
-
-
-File: screen.info, Node: Acldel, Next: Wall, Prev: Aclchg, Up: Multiuser Session
-
-Acldel
-------
-
- - Command: acldel USERNAME
- (none)
- Remove a user from screen's access control list. If currently
- attached, all the user's displays are detached from the session.
- He cannot attach again. Multi-user mode only.
-
-
-File: screen.info, Node: Wall, Next: Writelock, Prev: Acldel, Up: Multiuser Session
-
-Wall
-----
-
- - Command: wall MESSAGE
- (none)
- Write a message to all displays. The message will appear in the
- terminal's status line.
-
-
-File: screen.info, Node: Writelock, Prev: Wall, Up: Multiuser Session
-
-Writelock
----------
-
- - Command: writelock ON|OFF|AUTO
- (none)
- In addition to access control lists, not all users may be able to
- write to the same window at once. Per default, writelock is in
- `auto' mode and grants exclusive input permission to the user who
- is the first to switch to the particular window. When he leaves
- the window, other users may obtain the writelock (automatically).
- The writelock of the current window is disabled by the command
- `writelock off'. If the user issues the command `writelock on' he
- keeps the exclusive write permission while switching to other
- windows.
-
- - Command: defwritelock ON|OFF|AUTO
- (none)
- Sets the default writelock behaviour for new windows. Initially
- all windows will be created with automatic writelocks.
-
-
-File: screen.info, Node: Session Name, Next: Suspend, Prev: Multiuser Session, Up: Session Management
-
-Session Name
-============
-
- - Command: sessionname [NAME]
- (none)
- Rename the current session. Note that for `screen -list' the name
- shows up with the process-id prepended. If the argument NAME is
- omitted, the name of this session is displayed.
- *Caution*: The `$STY' environment variable still reflects the old
- name. This may result in confusion. The default is constructed
- from the tty and host names.
-
-
-File: screen.info, Node: Suspend, Next: Quit, Prev: Session Name, Up: Session Management
-
-Suspend
-=======
-
- - Command: suspend
- (`C-a z', `C-a C-z')
- Suspend `screen'. The windows are in the detached state while
- `screen' is suspended. This feature relies on the parent shell
- being able to do job control.
-
-
-File: screen.info, Node: Quit, Prev: Suspend, Up: Session Management
-
-Quit
-====
-
- - Command: quit
- (`C-a C-\')
- Kill all windows and terminate `screen'. Note that on VT100-style
- terminals the keys `C-4' and `C-\' are identical. So be careful
- not to type `C-a C-4' when selecting window no. 4. Use the empty
- bind command (as in `bind "^\"') to remove a key binding (*note
- Key Binding::.).
-
-
-File: screen.info, Node: Window Settings, Next: Virtual Terminal, Prev: Session Management, Up: Top
-
-Window Settings
-***************
-
- These commands control the way `screen' treats individual windows in
-a session. *Note Virtual Terminal::, for commands to control the
-terminal emulation itself.
-
-* Menu:
-
-* Naming Windows:: Control the name of the window
-* Console:: See the host's console messages
-* Kill:: Destroy an unwanted window
-* Login:: Control `/etc/utmp' logging
-* Mode:: Control the file mode of the pty
-* Monitor:: Watch for activity in a window
-* Windows:: List the active windows
-* Hardstatus:: Set a window's hardstatus line
-
diff --git a/doc/screen.info-2 b/doc/screen.info-2
index dfeec60..2995343 100644
--- a/doc/screen.info-2
+++ b/doc/screen.info-2
@@ -3,7 +3,7 @@ file ./screen.texinfo.
This file documents the `Screen' virtual terminal manager.
- Copyright (c) 1993 Free Software Foundation, Inc.
+ Copyright (c) 1993-1995 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
@@ -20,6 +20,420 @@ versions, except that this permission notice may be stated in a
translation approved by the Foundation.

+File: screen.info, Node: Detach, Next: Power Detach, Up: Session Management
+
+Detach
+======
+
+ - Command: autodetach STATE
+ (none)
+ Sets whether `screen' will automatically detach upon hangup, which
+ saves all your running programs until they are resumed with a
+ `screen -r' command. When turned off, a hangup signal will
+ terminate `screen' and all the processes it contains. Autodetach is
+ on by default.
+
+ - Command: detach
+ (`C-a d', `C-a C-d')
+ Detach the `screen' session (disconnect it from the terminal and
+ put it into the background). A detached `screen' can be resumed by
+ invoking `screen' with the `-r' option. (*note Invoking Screen::.)
+
+ - Command: password [CRYPTED_PW]
+ (none)
+ Present a crypted password in your `.screenrc' file and screen will
+ ask for it, whenever someone attempts to resume a detached
+ session. This is useful, if you have privileged programs running
+ under `screen' and you want to protect your session from reattach
+ attempts by users that managed to assume your uid. (I.e. any
+ superuser.) If no crypted password is specified, screen prompts
+ twice a password and places its encryption in the paste buffer.
+ Default is `none', which disables password checking.
+
+
+File: screen.info, Node: Power Detach, Next: Lock, Prev: Detach, Up: Session Management
+
+Power Detach
+============
+
+ - Command: pow_detach
+ (`C-a D')
+ Mainly the same as `detach', but also sends a HANGUP signal to the
+ parent process of `screen'.
+ *Caution*: This will result in a logout if `screen' was started
+ from your login shell.
+
+ - Command: pow_detach_msg [MESSAGE]
+ (none)
+ The MESSAGE specified here is output whenever a power detach is
+ performed. It may be used as a replacement for a logout message or
+ to reset baud rate, etc. Without parameter, the current message
+ is shown.
+
+
+File: screen.info, Node: Lock, Next: Multiuser Session, Prev: Power Detach, Up: Session Management
+
+Lock
+====
+
+ - Command: lockscreen
+ (`C-a x', `C-a C-x')
+ Call a screenlock program (`/local/bin/lck' or `/usr/bin/lock' or
+ a builtin, if no other is available). Screen does not accept any
+ command keys until this program terminates. Meanwhile processes in
+ the windows may continue, as the windows are in the detached state.
+ The screenlock program may be changed through the environment
+ variable `$LOCKPRG' (which must be set in the shell from which
+ `screen' is started) and is executed with the user's uid and gid.
+
+ Warning: When you leave other shells unlocked and have no password
+ set on `screen', the lock is void: One could easily re-attach from
+ an unlocked shell. This feature should rather be called
+ `lockterminal'.
+
+
+File: screen.info, Node: Multiuser Session, Next: Session Name, Prev: Lock, Up: Session Management
+
+Multiuser Session
+=================
+
+ These commands allow other users to gain access to one single
+`screen' session. When attaching to a multiuser `screen' the
+sessionname is specified as `username/sessionname' to the `-S' command
+line option. `Screen' must be compiled with multiuser support to
+enable features described here.
+
+* Menu:
+
+* Multiuser:: Enable / Disable multiuser mode.
+* Acladd:: Enable a specific user.
+* Aclchg:: Change a users permissions.
+* Acldel:: Disable a specific user.
+* Aclgrp:: Grant a user permissions to other users.
+* Displays:: List all active users at their displays.
+* Umask:: Predefine access to new windows.
+* Wall:: Write a message to all users.
+* Writelock:: Grant exclusive window access.
+* Su:: Substitute user.
+
+
+File: screen.info, Node: Multiuser, Next: Acladd, Up: Multiuser Session
+
+Multiuser
+---------
+
+ - Command: multiuser STATE
+ (none)
+ Switch between single-user and multi-user mode. Standard screen
+ operation is single-user. In multi-user mode the commands
+ `acladd', `aclchg' and `acldel' can be used to enable (and
+ disable) other users accessing this `screen'.
+
+
+File: screen.info, Node: Acladd, Next: Aclchg, Prev: Multiuser, Up: Multiuser Session
+
+Acladd
+------
+
+ - Command: acladd USERNAMES
+ - Command: addacl USERNAMES
+ (none)
+ Enable users to fully access this screen session. USERNAMES can be
+ one user or a comma separated list of users. This command enables
+ to attach to the `screen' session and performs the equivalent of
+ `aclchg USERNAMES +rwx "#?"'. To add a user with restricted access,
+ use the `aclchg' command below. `Addacl' is a synonym to `acladd'.
+ Multi-user mode only.
+
+
+File: screen.info, Node: Aclchg, Next: Acldel, Prev: Acladd, Up: Multiuser Session
+
+Aclchg
+------
+
+ - Command: aclchg USERNAMES PERMBITS LIST
+ - Command: chacl USERNAMES PERMBITS LIST
+ (none)
+ Change permissions for a comma separated list of users.
+ Permission bits are represented as `r', `w' and `x'. Prefixing
+ `+' grants the permission, `-' removes it. The third parameter is
+ a comma separated list of commands or windows (specified either by
+ number or title). The special list `#' refers to all windows, `?'
+ to all commands. If USERNAMES consists of a single `*', all known
+ users is affected. A command can be executed when the user has
+ the `x' bit for it. The user can type input to a window when he
+ has its `w' bit set and no other user obtains a writelock for this
+ window. Other bits are currently ignored. To withdraw the
+ writelock from another user in e.g. window 2: `aclchg USERNAME
+ -w+w 2'. To allow read-only access to the session: `aclchg
+ USERNAME -w "#"'. As soon as a user's name is known to screen, he
+ can attach to the session and (per default) has full permissions
+ for all command and windows. Execution permission for the acl
+ commands, `at' and others should also be removed or the user may
+ be able to regain write permission. `Chacl' is a synonym to
+ `aclchg'. Multi-user mode only.
+
+
+File: screen.info, Node: Acldel, Next: Aclgrp, Prev: Aclchg, Up: Multiuser Session
+
+Acldel
+------
+
+ - Command: acldel USERNAME
+ (none)
+ Remove a user from screen's access control list. If currently
+ attached, all the user's displays are detached from the session.
+ He cannot attach again. Multi-user mode only.
+
+
+File: screen.info, Node: Aclgrp, Next: Displays, Prev: Acldel, Up: Multiuser Session
+
+Aclgrp
+------
+
+ - Command: aclgrp USERNAME [GROUPNAME]
+ (none)
+ Creates groups of users that share common access rights. The name
+ of the group is the username of the group leader. Each member of
+ the group inherits the permissions that are granted to the
+ group leader. That means, if a user fails an access check, another
+ check is made for the group leader. A user is removed from all
+ groups the special value `none' is used for GROUPNAME. If the
+ second parameter is omitted all groups the user is in are listed.
+
+
+File: screen.info, Node: Displays, Next: Umask, Prev: Aclgrp, Up: Multiuser Session
+
+Displays
+--------
+
+ - Command: displays
+ (`C-a *')
+ Shows a tabular listing of all currently connected user
+ front-ends (displays). This is most useful for multiuser
+ sessions.
+
+
+File: screen.info, Node: Umask, Next: Wall, Prev: Displays, Up: Multiuser Session
+
+aclumask
+--------
+
+ - Command: aclumask [[USERS]+BITS |[USERS]-BITS .... ]
+ - Command: umask [[USERS]+BITS |[USERS]-BITS .... ]
+ (none)
+ This specifies the access other users have to windows that will
+ be created by the caller of the command. USERS may be no, one
+ or a comma separated list of known usernames. If no users are
+ specified, a list of all currently known users is assumed. BITS
+ is any combination of access control bits allowed defined
+ with the `aclchg' command. The special username `?' predefines the
+ access that not yet known users will be granted to any
+ window initially. The special username `??' predefines the access
+ that not yet known users are granted to any command. Rights of
+ the special username nobody cannot be changed (see the `su'
+ command). `Umask' is a synonym to `aclumask'.
+
+
+File: screen.info, Node: Wall, Next: Writelock, Prev: Umask, Up: Multiuser Session
+
+Wall
+----
+
+ - Command: wall MESSAGE
+ (none)
+ Write a message to all displays. The message will appear in the
+ terminal's status line.
+
+
+File: screen.info, Node: Writelock, Next: Su, Prev: Wall, Up: Multiuser Session
+
+Writelock
+---------
+
+ - Command: writelock ON|OFF|AUTO
+ (none)
+ In addition to access control lists, not all users may be able to
+ write to the same window at once. Per default, writelock is in
+ `auto' mode and grants exclusive input permission to the user who
+ is the first to switch to the particular window. When he leaves
+ the window, other users may obtain the writelock (automatically).
+ The writelock of the current window is disabled by the command
+ `writelock off'. If the user issues the command `writelock on' he
+ keeps the exclusive write permission while switching to other
+ windows.
+
+ - Command: defwritelock ON|OFF|AUTO
+ (none)
+ Sets the default writelock behavior for new windows. Initially all
+ windows will be created with no writelocks.
+
+
+File: screen.info, Node: Su, Prev: Writelock, Up: Multiuser Session
+
+Su
+--
+
+ - Command: su [USERNAME [PASSWORD [PASSWORD2]]]
+ (none)
+ Substitute the user of a display. The command prompts for all
+ parameters that are omitted. If passwords are specified as
+ parameters, they have to be specified un-crypted. The first
+ password is matched against the systems passwd database, the
+ second password is matched against the `screen' password as
+ set with the commands `acladd' or `password'. `Su' may be useful
+ for the `screen' administrator to test multiuser setups. When
+ the identification fails, the user has access to the commands
+ available for user `nobody'. These are `detach', `license',
+ `version', `help' and `displays'.
+
+
+File: screen.info, Node: Session Name, Next: Suspend, Prev: Multiuser Session, Up: Session Management
+
+Session Name
+============
+
+ - Command: sessionname [NAME]
+ (none)
+ Rename the current session. Note that for `screen -list' the name
+ shows up with the process-id prepended. If the argument NAME is
+ omitted, the name of this session is displayed.
+ *Caution*: The `$STY' environment variable still reflects the old
+ name. This may result in confusion. The default is constructed
+ from the tty and host names.
+
+
+File: screen.info, Node: Suspend, Next: Quit, Prev: Session Name, Up: Session Management
+
+Suspend
+=======
+
+ - Command: suspend
+ (`C-a z', `C-a C-z')
+ Suspend `screen'. The windows are in the detached state while
+ `screen' is suspended. This feature relies on the parent shell
+ being able to do job control.
+
+
+File: screen.info, Node: Quit, Prev: Suspend, Up: Session Management
+
+Quit
+====
+
+ - Command: quit
+ (`C-a C-\')
+ Kill all windows and terminate `screen'. Note that on VT100-style
+ terminals the keys `C-4' and `C-\' are identical. So be careful
+ not to type `C-a C-4' when selecting window no. 4. Use the empty
+ bind command (as in `bind "^\"') to remove a key binding (*note
+ Key Binding::.).
+
+
+File: screen.info, Node: Regions, Next: Window Settings, Prev: Session Management, Up: Top
+
+Regions
+*******
+
+ Screen has the ability to display more than one window on the user's
+display. This is done by splitting the screen in regions, which can
+contain different windows.
+
+* Menu:
+
+* Split:: Split a region into two
+* Focus:: Change to the next region
+* Only:: Delete all other regions
+* Remove:: Delete the current region
+* Caption:: Control the window's caption
+
+
+File: screen.info, Node: Split, Next: Focus, Up: Regions
+
+Split
+=====
+
+ - Command: split
+ (`C-a S')
+ Split the current region into two new ones. All regions on the
+ display are resized to make room for the new region. The blank
+ window is displayed on the new region.
+
+
+File: screen.info, Node: Focus, Next: Only, Prev: Split, Up: Regions
+
+Focus
+=====
+
+ - Command: focus
+ (`C-a Tab')
+ Move the input focus to the next region. This is done in a cyclic
+ way so that the top region is selected after the bottom one.
+
+
+File: screen.info, Node: Only, Next: Remove, Prev: Focus, Up: Regions
+
+Only
+====
+
+ - Command: only
+ (`C-a Q')
+ Kill all regions but the current one.
+
+
+File: screen.info, Node: Remove, Next: Caption, Prev: Only, Up: Regions
+
+Remove
+======
+
+ - Command: remove
+ (`C-a X')
+ Kill the current region. This is a no-op if there is only one
+ region.
+
+
+File: screen.info, Node: Caption, Prev: Remove, Up: Regions
+
+Caption
+=======
+
+ - Command: caption `always'|`splitonly' [STRING]
+ - Command: caption `string' [STRING]
+ (none)
+ This command controls the display of the window captions. Normally
+ a caption is only used if more than one window is shown on the
+ display (split screen mode). But if the type is set to `always',
+ `screen' shows a caption even if only one window is displayed. The
+ default is `splitonly'.
+
+ The second form changes the text used for the caption. You can use
+ all string escapes (*Note String Escapes::). `Screen' uses a
+ default of `%3n %t'.
+
+ You can mix both forms by providing the string as an additional
+ argument.
+
+
+File: screen.info, Node: Window Settings, Next: Virtual Terminal, Prev: Regions, Up: Top
+
+Window Settings
+***************
+
+ These commands control the way `screen' treats individual windows in
+a session. *Note Virtual Terminal::, for commands to control the
+terminal emulation itself.
+
+* Menu:
+
+* Naming Windows:: Control the name of the window
+* Console:: See the host's console messages
+* Kill:: Destroy an unwanted window
+* Login:: Control `/etc/utmp' logging
+* Mode:: Control the file mode of the pty
+* Monitor:: Watch for activity in a window
+* Windows:: List the active windows
+* Hardstatus:: Set a window's hardstatus line
+
+
File: screen.info, Node: Naming Windows, Next: Console, Up: Window Settings
Naming Windows (Titles)
@@ -178,9 +592,9 @@ Console
- Command: console [STATE]
(none)
- Grabs or ungrabs the machines console output to a window. When the
- argument is omitted the current state is displayed. *Note*: Only
- the owner of `/dev/console' can grab the console output. This
+ Grabs or un-grabs the machines console output to a window. When
+ the argument is omitted the current state is displayed. *Note*:
+ Only the owner of `/dev/console' can grab the console output. This
command is only available if the host supports the ioctl
`TIOCCONS'.
@@ -196,8 +610,9 @@ Kill
If there is an `exec' command running (*note Exec::.) then it is
killed. Otherwise the process (e.g. shell) running in the window
receives a `HANGUP' condition, the window structure is removed and
- screen switches to the previously displayed window. When the last
- window is destroyed, `screen' exits.
+ screen (your display) switches to another window. When the last
+ window is destroyed, `screen' exits. After a kill screen switches
+ to the previously displayed window.
*Caution*: `emacs' users may find themselves killing their `emacs'
session when trying to delete the current line. For this reason,
it is probably wise to use a different command character (*note
@@ -237,7 +652,7 @@ Mode
The mode of each newly allocated pseudo-tty is set to MODE. MODE
is an octal number as used by chmod(1). Defaults to 0622 for
windows which are logged in, 0600 for others (e.g. when `-ln' was
- specified for creation. *Note Screen Command::).
+ specified for creation. *note Screen Command::.).

File: screen.info, Node: Monitor, Next: Windows, Prev: Mode, Up: Window Settings
@@ -252,10 +667,10 @@ Monitoring
The notification message can be redefined by means of the
`activity' command. Each occurrence of `%' in MESSAGE is replaced
by the number of the window in which activity has occurred, and
- each occurrence of `~' is replaced by the definition for bell in
+ each occurrence of `^G' is replaced by the definition for bell in
your termcap (usually an audible bell). The default message is
- 'Activity in window %'
+ 'Activity in window %n'
Note that monitoring is off for all windows by default, but can be
altered by use of the `monitor' command (`C-a M').
@@ -284,17 +699,20 @@ Windows
(`C-a w', `C-a C-w')
Uses the message line to display a list of all the windows. Each
window is listed by number with the name of the program running in
- the window (or its title); the current window is marked with a `*';
- the previous window is marked with a `-'; all the windows that are
- logged in are marked with a `$' (*note Login::.); a background
- window that has received a bell is marked with a `!'; a background
- window that is being monitored and has had activity occur is
- marked with an `@' (*note Monitor::.); a window which has output
- logging turned on is marked with `(L)'; windows occupied by other
- users are marked with `&'; windows in the zombie state are marked
- with `Z'. If this list is too long to fit on the terminal's
- status line only the portion around the current window is
- displayed.
+ the window (or its title).
+
+ The current window is marked with a `*'; the previous window is
+ marked with a `-'; all the windows that are logged in are marked
+ with a `$' (*note Login::.); a background window that has received
+ a bell is marked with a `!'; a background window that is being
+ monitored and has had activity occur is marked with an `@' (*note
+ Monitor::.); a window which has output logging turned on is marked
+ with `(L)'; windows occupied by other users are marked with `&' or
+ `&&' if the window is shared by other users; windows in the zombie
+ state are marked with `Z'.
+
+ If this list is too long to fit on the terminal's status line only
+ the portion around the current window is displayed.

File: screen.info, Node: Hardstatus, Prev: Windows, Up: Window Settings
@@ -304,24 +722,27 @@ Hardstatus
`Screen' maintains a hardstatus line for every window. If a window
gets selected, the display's hardstatus will be updated to match the
-window's hardstatus line. If the display has no hardstatus the line
-will be displayed as a standard screen message. The hardstatus line
-can be changed with the ANSI Application Program Command (APC):
-`ESC_<string>ESC\'. As a convenience for xterm users the sequence
-`ESC]0..2;<string>^G' is also accepted.
+window's hardstatus line. The hardstatus line can be changed with the
+ANSI Application Program Command (APC): `ESC_<string>ESC\'. As a
+convenience for xterm users the sequence `ESC]0..2;<string>^G' is also
+accepted.
- - Command: defhstatus
+ - Command: defhstatus [STATUS]
(none)
The hardstatus line that all new windows will get is set to STATUS.
This command is useful to make the hardstatus of every window
display the window number or title or the like. STATUS may
contain the same directives as in the window messages, but the
directive escape character is `^E' (octal 005) instead of `%'.
- This was done to make a misinterpretion of program generated
+ This was done to make a misinterpretation of program generated
hardstatus lines impossible. If the parameter STATUS is omitted,
the current default string is displayed. Per default the
hardstatus line of new windows is empty.
+ - Command: hstatus STATUS
+ (none)
+ Changes the current window's hardstatus line to STATUS.
+

File: screen.info, Node: Virtual Terminal, Next: Copy and Paste, Prev: Window Settings, Up: Top
@@ -329,7 +750,7 @@ Virtual Terminal
****************
Each window in a `screen' session emulates a VT100 terminal, with
-some extra functions added. The VT100 emulator is hardcoded, no other
+some extra functions added. The VT100 emulator is hard-coded, no other
terminal types can be emulated. The commands described here modify the
terminal emulation.
@@ -395,7 +816,7 @@ functions, respectively.
ESC * Pcs (A) Designate character set as G2
ESC + Pcs (A) Designate character set as G3
ESC [ Pn ; Pn H Direct Cursor Addressing
- ESC [ Pn ; Pn f Direct Cursor Addressing
+ ESC [ Pn ; Pn f same as above
ESC [ Pn J Erase in Display
Pn = None or 0 From Cursor to End of Screen
1 From Beginning of Screen to Cursor
@@ -408,6 +829,11 @@ functions, respectively.
ESC [ Pn B Cursor Down
ESC [ Pn C Cursor Right
ESC [ Pn D Cursor Left
+ ESC [ Pn E Cursor next line
+ ESC [ Pn F Cursor previous line
+ ESC [ Pn G Cursor horizontal position
+ ESC [ Pn ` same as above
+ ESC [ Pn d Cursor vertical position
ESC [ Ps ;...; Ps m Select Graphic Rendition
Ps = None or 0 Default Rendition
1 Bold
@@ -445,6 +871,7 @@ functions, respectively.
ESC [ Pn P (A) Delete Character
ESC [ Pn S Scroll Scrolling Region Up
ESC [ Pn T Scroll Scrolling Region Down
+ ESC [ Pn ^ same as above
ESC [ Ps ;...; Ps h Set Mode
ESC [ Ps ;...; Ps l Reset Mode
Ps = 4 (A) Insert Mode
@@ -567,9 +994,9 @@ Digraph
resulting character is inserted in the input stream. For example,
if the user enters `a"', an a-umlaut will be inserted. If the
first character entered is a 0 (zero), `screen' will treat the
- following charcters (up to three) as an octal number instead. The
- optional argument PRESET is treated as user input, thus one can
- create an "umlaut" key. For example the command `bindkey ^K
+ following characters (up to three) as an octal number instead.
+ The optional argument PRESET is treated as user input, thus one
+ can create an "umlaut" key. For example the command `bindkey ^K
digraph '"'' enables the user to generate an a-umlaut by typing
`CTRL-K a'.
@@ -583,16 +1010,17 @@ Bell
(none)
When a bell character is sent to a background window, `screen'
displays a notification in the message line. The notification
- message can be re-defined by means of the `bell' command. Each
- occurrence of `%' in MESSAGE is replaced by the number of the
- window to which a bell has been sent, and each occurrence of `~'
- is replaced by the definition for bell in your termcap (usually an
- audible bell). The default message is
+ message can be re-defined by this command. Each occurrence of `%'
+ in MESSAGE is replaced by the number of the window to which a bell
+ has been sent, and each occurrence of `^G' is replaced by the
+ definition for bell in your termcap (usually an audible bell).
+ The default message is
- 'Bell in window %'
+ 'Bell in window %n'
An empty message can be supplied to the `bell_msg' command to
- suppress output of a message line (`bell_msg ""').
+ suppress output of a message line (`bell_msg ""'). Without
+ parameter, the current message is shown.
- Command: vbell [STATE]
(`C-a C-g')
@@ -640,13 +1068,34 @@ Info
Uses the message line to display some information about the current
window: the cursor position in the form `(COLUMN,ROW)' starting
with `(1,1)', the terminal width and height plus the size of the
- scrollback buffer in lines, like in `(80,24)+50', various flag
- settings (flow-control, insert mode, origin mode, wrap mode,
- application-keypad mode, output logging, activity monitoring, and
- redraw (`+' indicates enabled, `-' not)), the currently active
- character set (`G0', `G1', `G2', or `G3'), and in square brackets
- the terminal character sets that are currently designated as `G0'
- through `G3'. For system information use `time'.
+ scrollback buffer in lines, like in `(80,24)+50', the current
+ state of window XON/XOFF flow control is shown like this (see also
+ *Note Flow Control::):
+ +flow automatic flow control, currently on.
+ -flow automatic flow control, currently off.
+ +(+)flow flow control enabled. Agrees with automatic control.
+ -(+)flow flow control disabled. Disagrees with automatic control.
+ +(-)flow flow control enabled. Disagrees with automatic control.
+ -(-)flow flow control disabled. Agrees with automatic control.
+
+ The current line wrap setting (`+wrap' indicates enabled, `-wrap'
+ not) is also shown. The flags `ins', `org', `app', `log', `mon'
+ and `nored' are displayed when the window is in insert mode,
+ origin mode, application-keypad mode, has output logging, insert
+ mode, origin mode, application-keypad mode, output logging,
+ activity monitoring or partial redraw enabled.
+
+ The currently active character set (`G0', `G1', `G2', or `G3'),
+ and in square brackets the terminal character sets that are
+ currently designated as `G0' through `G3'. Additional modes
+ depending on the type of the window are displayed at the end of
+ the status line (*note Window Types::.).
+
+ If the state machine of the terminal emulator is in a non-default
+ state, the info line is started with a string identifying the
+ current state.
+
+ For system information use `time'.

File: screen.info, Node: Redisplay, Next: Wrap, Prev: Info, Up: Virtual Terminal
@@ -661,8 +1110,8 @@ Redisplay
lines. The previous setting of full/partial refresh for each
window is restored with `allpartial off'. This is a global flag
that immediately takes effect on all windows overriding the
- `partial' settings. It does not change the default redraw
- behaviour of newly created windows.
+ `partial' settings. It does not change the default redraw behavior
+ of newly created windows.
- Command: partial STATE
(none)
@@ -729,6 +1178,12 @@ Window Size
Set the display height to a specified number of lines. When no
argument is given it toggles between 24 and 42 lines display.
+ - Command: fit
+ (`C-a F')
+ Change the window size to the size of the current region. This
+ command is needed because screen doesn't adapt the window size
+ automatically if the window is displayed more than once.
+

File: screen.info, Node: Character Processing, Prev: Window Size, Up: Virtual Terminal
@@ -748,7 +1203,7 @@ Character Processing
- Command: gr [STATE]
(none)
- Turn GR charset switching on/off. Whenever screens sees an input
+ Turn GR charset switching on/off. Whenever screen sees an input
char with an 8th bit set, it will use the charset stored in the GR
slot and print the character with the 8th bit stripped. The
default (see also `defgr') is not to process GR switching because
@@ -798,458 +1253,3 @@ Character Processing
windows is changed. Shows current default if called without
argument.
-
-File: screen.info, Node: Copy and Paste, Next: Subprocess Execution, Prev: Virtual Terminal, Up: Top
-
-Copy and Paste
-**************
-
- For those confined to a hardware terminal, these commands provide a
-cut and paste facility more powerful than those provided by most
-windowing systems.
-
-* Menu:
-
-* Copy:: Copy from scrollback to buffer
-* Paste:: Paste from buffer into window
-* Registers:: Longer-term storage
-* Screen-Exchange:: Sharing data between screen users
-* History:: Recalling previous input
-
-
-File: screen.info, Node: Copy, Next: Paste, Up: Copy and Paste
-
-Copying
-=======
-
- - Command: copy
- (`C-a [', `C-a C-[', `C-a ESC')
- Enter copy/scrollback mode. This allows you to copy text from the
- current window and its history into the paste buffer. In this mode
- a `vi'-like full screen editor is active, with controls as
- outlined below.
-
-* Menu:
-
-* Line Termination:: End copied lines with CR/LF
-* Scrollback:: Set the size of the scrollback buffer
-* Copy Mode Keys:: Remap keys in copy mode
-* Movement:: Move around in the scrollback buffer
-* Marking:: Select the text you want
-* Repeat count:: Repeat a command
-* Searching:: Find the text you want
-* Specials:: Other random keys
-
-
-File: screen.info, Node: Line Termination, Next: Scrollback, Up: Copy
-
-CR/LF
------
-
- - Command: crlf [STATE]
- (none)
- This affects the copying of text regions with the `C-a [' command.
- If it is set to `on', lines will be separated by the two character
- sequence `CR'/`LF'. Otherwise only `LF' is used. `crlf' is off
- by default. When no parameter is given, the state is toggled.
-
-
-File: screen.info, Node: Scrollback, Next: Copy Mode Keys, Prev: Line Termination, Up: Copy
-
-Scrollback
-----------
-
- - Command: defscrollback NUM
- (none)
- Same as the `scrollback' command except that the default setting
- for new windows is changed. Defaults to 100.
-
- - Command: scrollback NUM
- (none)
- Set the size of the scrollback buffer for new windows to NUM
- lines. The default scrollback is 100 lines. Use `C-a i' to view
- the current setting.
-
-
-File: screen.info, Node: Copy Mode Keys, Next: Movement, Prev: Scrollback, Up: Copy
-
-markkeys
---------
-
- - Command: markkeys STRING
- (none)
- This is a method of changing the keymap used for copy/history
- mode. The string is made up of OLDCHAR=NEWCHAR pairs which are
- separated by `:'. Example: The command `markkeys h=^B:l=^F:$=^E'
- would set some keys to be more familiar to `emacs' users. If your
- terminal sends characters, that cause you to abort copy mode, then
- this command may help by binding these characters to do nothing.
- The no-op character is `' and is used like this: `markkeys @=L=H'
- if you do not want to use the `H' or `L' commands any longer. As
- shown in this example, multiple keys can be assigned to one
- function in a single statement.
-
-
-File: screen.info, Node: Movement, Next: Marking, Prev: Copy Mode Keys, Up: Copy
-
-Movement Keys
--------------
-
-`h', `j', `k', `l' move the cursor line by line or column by column.
-
-`0', `^' and `$' move to the leftmost column or to the first or last
-non-whitespace character on the line.
-
-`H', `M' and `L' move the cursor to the leftmost column of the top,
-center or bottom line of the window.
-
-`+' and `-' move the cursor to the leftmost column of the next or
-previous line.
-
-`G' moves to the specified absolute line (default: end of buffer).
-
-`|' moves to the specified absolute column.
-
-`w', `b', `e' move the cursor word by word.
-
-`C-u' and `C-d' scroll the display up/down by the specified amount of
-lines while preserving the cursor position. (Default: half screenfull).
-
-`C-b' and `C-f' move the cursor up/down a full screen.
-
-`g' moves to the beginning of the buffer.
-
-`%' jumps to the specified percentage of the buffer.
-
- Note that Emacs-style movement keys can be specified by a .screenrc
-command. (`markkeys "h=^B:l=^F:$=^E"') There is no simple method for a
-full emacs-style keymap, however, as this involves multi-character
-codes.
-
-
-File: screen.info, Node: Marking, Next: Repeat count, Prev: Movement, Up: Copy
-
-Marking
--------
-
- The copy range is specified by setting two marks. The text between
-these marks will be highlighted. Press `space' to set the first or
-second mark respectively.
-
-`Y' and `y' can be used to mark one whole line or to mark from start of
-line.
-
-`W' marks exactly one word.
-
-
-File: screen.info, Node: Repeat count, Next: Searching, Prev: Marking, Up: Copy
-
-Repeat Count
-------------
-
- Any command in copy mode can be prefixed with a number (by pressing
-digits `0...9') which is taken as a repeat count. Example: `C-a C-[ H
-10 j 5 Y' will copy lines 11 to 15 into the paste buffer.
-
-
-File: screen.info, Node: Searching, Next: Specials, Prev: Repeat count, Up: Copy
-
-Searching
----------
-
-`/' `vi'-like search forward.
-
-`?' `vi'-like search backward.
-
-`C-a s' `emacs' style incremental search forward.
-
-`C-r' `emacs' style reverse i-search.
-
-
-File: screen.info, Node: Specials, Prev: Searching, Up: Copy
-
-Specials
---------
-
- There are, however, some keys that act differently here from in
-`vi'. `Vi' does not allow to yank rectangular blocks of text, but
-`screen' does. Press
-
-`c' or `C' to set the left or right margin respectively. If no repeat
-count is given, both default to the current cursor position.
-Example: Try this on a rather full text screen: `C-a [ M 20 l SPACE c
-10 l 5 j C SPACE'.
-
-This moves one to the middle line of the screen, moves in 20 columns
-left, marks the beginning of the paste buffer, sets the left column,
-moves 5 columns down, sets the right column, and then marks the end of
-the paste buffer. Now try:
-`C-a [ M 20 l SPACE 10 l 5 j SPACE'
-
-and notice the difference in the amount of text copied.
-
-`J' joins lines. It toggles between 3 modes: lines separated by a
-newline character (012), lines glued seamless, or lines separated by a
-single space. Note that you can prepend the newline character with a
-carriage return character, by issuing a `set crlf on'.
-
-`v' is for all the `vi' users who use `:set numbers' - it toggles the
-left margin between column 9 and 1.
-
-`a' before the final space key turns on append mode. Thus the contents
-of the paste buffer will not be overwritten, but appended to.
-
-`A' turns on append mode and sets a (second) mark.
-
-`>' sets the (second) mark and writes the contents of the paste buffer
-to the screen-exchange file (`/tmp/screen-exchange' per default) once
-copy-mode is finished. *Note Screen-Exchange::.
-This example demonstrates how to dump the whole scrollback buffer to
-that file:
-`C-a [ g SPACE G $ >'.
-
-`C-g' gives information about the current line and column.
-
-`x' exchanges the first mark and the current cursor position. You can
-use this to adjust an already placed mark.
-
-`@' does nothing. Absolutely nothing. Does not even exit copy mode.
-
-All keys not described here exit copy mode.
-
-
-File: screen.info, Node: Paste, Next: Registers, Prev: Copy, Up: Copy and Paste
-
-Paste
-=====
-
- - Command: paste [REGISTERS [DESTINATION]]
- (`C-a ]', `C-a C-]')
- Write the (concatenated) contents of the specified registers to
- the stdin stream of the current window. The register `.' is
- treated as the paste buffer. If no parameter is specified the user
- is prompted to enter a single register. The paste buffer can be
- filled with the `copy', `history' and `readbuf' commands. Other
- registers can be filled with the `register', `readreg' and `paste'
- commands. If `paste' is called with a second argument, the
- contents of the specified registers is pasted into the named
- destination register rather than the window. If `.' is used as the
- second argument, the display's paste buffer is the destination.
- Note, that `paste' uses a wide variety of resources: Usually both,
- a current window and a current display are required. But whenever
- a second argument is specified no current window is needed. When
- the source specification only contains registers (not the paste
- buffer) then there need not be a current display (terminal
- attached), as the registers are a global resource. The paste
- buffer exists once for every user.
-
- - Command: pastefont [STATE]
- Tell screen to include font information in the paste buffer. The
- default is not to do so. This command is especially usefull for
- multi character fonts like kanji.
-
- - Command: slowpaste MSEC
- (none)
- Define the speed text is inserted by the `paste' command. If the
- slowpaste value is nonzero text is written character by character.
- `screen' will pause for MSEC milliseconds after each write to
- allow the application to process the input. only use `slowpaste' if
- your underlying system exposes flow control problems while pasting
- large amounts of text.
-
- - Command: readreg [REGISTER [FILENAME]]
- (none)
- Does one of two things, dependent on number of arguments: with
- zero or one arguments it it duplicates the paste buffer contents
- into the register specified or entered at the prompt. With two
- arguments it reads the contents of the named file into the
- register, just as `readbuf' reads the screen-exchange file into
- the paste buffer. The following example will paste the system's
- password file into the screen window (using register p, where a
- copy remains):
-
- C-a : readreg p /etc/passwd
- C-a : paste p
-
-
-File: screen.info, Node: Registers, Next: Screen-Exchange, Prev: Paste, Up: Copy and Paste
-
-Registers
-=========
-
- - Command: copy_reg [KEY]
- (none)
- Removed. Use `readreg' instead.
-
- - Command: ins_reg [KEY]
- (none)
- Removed. Use `paste' instead.
-
- - Command: process [KEY]
- (none)
- Stuff the contents of the specified register into the `screen'
- input queue. If no argument is given you are prompted for a
- register name. The text is parsed as if it had been typed in from
- the user's keyboard. This command can be used to bind multiple
- actions to a single key.
-
- - Command: register KEY STRING
- (none)
- Save the specified STRING to the register KEY.
-
- - Command: stuff STRING
- (none)
- Stuff the string STRING in the input buffer of the current window.
- This is like the `paste' command, but with much less overhead.
- You cannot paste large buffers with the `stuff' command. It is most
- useful for key bindings. *Note Bindkey::
-
-
-
-File: screen.info, Node: Screen-Exchange, Next: History, Prev: Registers, Up: Copy and Paste
-
-Screen-Exchange
-===============
-
- - Command: bufferfile [EXCHANGE-FILE]
- (none)
- Change the filename used for reading and writing with the paste
- buffer. If the EXCHANGE-FILE parameter is omitted, `screen'
- reverts to the default of `/tmp/screen-exchange'. The following
- example will paste the system's password file into the screen
- window (using the paste buffer, where a copy remains):
-
- C-a : bufferfile /etc/passwd
- C-a < C-a ]
- C-a : bufferfile
-
- - Command: readbuf
- (`C-a <')
- Reads the contents of the current screen-exchange file into the
- paste buffer.
-
- - Command: removebuf
- (`C-a =')
- Unlinks the screen-exchange file.
-
- - Command: writebuf
- (`C-a >')
- Writes the contents of the paste buffer to a public accessible
- screen-exchange file. This is thought of as a primitive means of
- communication between `screen' users on the same host. See also
- `C-a ESC' (*note Copy::.).
-
-
-File: screen.info, Node: History, Prev: Screen-Exchange, Up: Copy and Paste
-
-History
-=======
-
- - Command: history
- (`C-a {')
- Usually users work with a shell that allows easy access to previous
- commands. For example, `csh' has the command `!!' to repeat the
- last command executed. `screen' provides a primitive way of
- recalling "the command that started ...": You just type the first
- letter of that command, then hit `C-a {' and `screen' tries to
- find a previous line that matches with the prompt character to the
- left of the cursor. This line is pasted into this window's input
- queue. Thus you have a crude command history (made up by the
- visible window and its scrollback buffer).
-
-
-File: screen.info, Node: Subprocess Execution, Next: Key Binding, Prev: Copy and Paste, Up: Top
-
-Subprocess Execution
-********************
-
- Control Input or Output of a window by another filter process. Use
-with care!
-
-* Menu:
-
-* Exec:: The `exec' command syntax.
-* Using Exec:: Weird things that filters can do.
-
-
-File: screen.info, Node: Exec, Next: Using Exec, Up: Subprocess Execution
-
-Exec
-====
-
- - Command: exec [[FDPAT] NEWCOMMAND [ARGS ... ]]
- (none)
- Run a unix subprocess (specified by an executable path NEWCOMMAND
- and its optional arguments) in the current window. The flow of
- data between newcommand's stdin/stdout/stderr, the process already
- running (shell) and screen itself (window) is controlled by the
- filedescriptor pattern FDPAT. This pattern is basically a three
- character sequence representing stdin, stdout and stderr of
- newcommand. A dot (`.') connects the file descriptor to screen. An
- exclamation mark (`!') causes the file descriptor to be connected
- to the already running process. A colon (`:') combines both.
- User input will go to newcommand unless newcommand requests the
- old process' output (FDPATs first character is `!' or `:') or a
- pipe symbol (`|') is added to the end of FDPAT.
- Invoking `exec' without arguments shows name and arguments of the
- currently running subprocess in this window.
- When a subprocess is running the `kill' command will affect it
- instead of the window's process.
- Refer to the postscript file `doc/fdpat.ps' for a confusing
- illustration of all 21 possible combinations. Each drawing shows
- the digits 2, 1, 0 representing the three file descriptors of
- newcommand. The box marked `W' is usual pty that has the
- application-process on its slave side. The box marked `P' is the
- secondary pty that now has screen at its master side.
-
-
-File: screen.info, Node: Using Exec, Prev: Exec, Up: Subprocess Execution
-
-Using Exec
-==========
-
-Abbreviations:
-
- * Whitespace between the word `exec' and FDPAT and the command name
- can be omitted.
-
- * Trailing dots and a FDPAT consisting only of dots can be omitted.
-
- * A simple `|' is synonymous for the `!..|' pattern.
-
- * The word `exec' can be omitted when the `|' abbreviation is used.
-
- * The word `exec' can always be replaced by leading `!'.
-
-Examples:
-
-`!/bin/sh'
-`exec /bin/sh'
-`exec ... /bin/sh'
- Creates another shell in the same window, while the original shell
- is still running. Output of both shells is displayed and user
- input is sent to the new `/bin/sh'.
-
-`!!stty 19200'
-`exec!stty 19200'
-`exec !.. stty 19200'
- Set the speed of the window's tty. If your stty command operates
- on stdout, then add another `!'. This is a useful command, when a
- screen window is directly connected to a serial line that needs to
- be configured.
-
-`|less'
-`exec !..| less'
- This adds a pager to the window output. The special character `|'
- is needed to give the user control over the pager although it gets
- its input from the window's process. This works, because `less'
- listens on stderr (a behavior that `screen' would not expect
- without the `|') when its stdin is not a tty. `Less' versions
- newer than 177 fail miserably here; good old `pg' still works.
-
-`!:sed -n s/.*Error.*/\007/p'
- Sends window output to both, the user and the sed command. The sed
- inserts an additional bell character (oct. 007) to the window
- output seen by screen. This will cause 'Bell in window x'
- messages, whenever the string `Error' appears in the window.
-
diff --git a/doc/screen.info-3 b/doc/screen.info-3
index 66f750a..809a4e8 100644
--- a/doc/screen.info-3
+++ b/doc/screen.info-3
@@ -3,7 +3,7 @@ file ./screen.texinfo.
This file documents the `Screen' virtual terminal manager.
- Copyright (c) 1993 Free Software Foundation, Inc.
+ Copyright (c) 1993-1995 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
@@ -20,6 +20,475 @@ versions, except that this permission notice may be stated in a
translation approved by the Foundation.

+File: screen.info, Node: Copy and Paste, Next: Subprocess Execution, Prev: Virtual Terminal, Up: Top
+
+Copy and Paste
+**************
+
+ For those confined to a hardware terminal, these commands provide a
+cut and paste facility more powerful than those provided by most
+windowing systems.
+
+* Menu:
+
+* Copy:: Copy from scrollback to buffer
+* Paste:: Paste from buffer into window
+* Registers:: Longer-term storage
+* Screen-Exchange:: Sharing data between screen users
+* History:: Recalling previous input
+
+
+File: screen.info, Node: Copy, Next: Paste, Up: Copy and Paste
+
+Copying
+=======
+
+ - Command: copy
+ (`C-a [', `C-a C-[', `C-a ESC')
+ Enter copy/scrollback mode. This allows you to copy text from the
+ current window and its history into the paste buffer. In this mode
+ a `vi'-like full screen editor is active, with controls as
+ outlined below.
+
+* Menu:
+
+* Line Termination:: End copied lines with CR/LF
+* Scrollback:: Set the size of the scrollback buffer
+* Copy Mode Keys:: Remap keys in copy mode
+* Movement:: Move around in the scrollback buffer
+* Marking:: Select the text you want
+* Repeat count:: Repeat a command
+* Searching:: Find the text you want
+* Specials:: Other random keys
+
+
+File: screen.info, Node: Line Termination, Next: Scrollback, Up: Copy
+
+CR/LF
+-----
+
+ - Command: crlf [STATE]
+ (none)
+ This affects the copying of text regions with the `C-a [' command.
+ If it is set to `on', lines will be separated by the two character
+ sequence `CR'/`LF'. Otherwise only `LF' is used. `crlf' is off
+ by default. When no parameter is given, the state is toggled.
+
+
+File: screen.info, Node: Scrollback, Next: Copy Mode Keys, Prev: Line Termination, Up: Copy
+
+Scrollback
+----------
+
+ - Command: defscrollback NUM
+ (none)
+ Same as the `scrollback' command except that the default setting
+ for new windows is changed. Defaults to 100.
+
+ - Command: scrollback NUM
+ (none)
+ Set the size of the scrollback buffer for the current window to
+ NUM lines. The default scrollback is 100 lines. Use `C-a i' to
+ view the current setting.
+
+ - Command: compacthist [STATE]
+ (none)
+ This tells screen weather to suppress trailing blank lines when
+ scrolling up text into the history buffer. Turn compacting `on' to
+ hold more useful lines in your scrollback buffer.
+
+
+File: screen.info, Node: Copy Mode Keys, Next: Movement, Prev: Scrollback, Up: Copy
+
+markkeys
+--------
+
+ - Command: markkeys STRING
+ (none)
+ This is a method of changing the keymap used for copy/history
+ mode. The string is made up of OLDCHAR=NEWCHAR pairs which are
+ separated by `:'. Example: The command `markkeys h=^B:l=^F:$=^E'
+ would set some keys to be more familiar to `emacs' users. If your
+ terminal sends characters, that cause you to abort copy mode, then
+ this command may help by binding these characters to do nothing.
+ The no-op character is `' and is used like this: `markkeys @=L=H'
+ if you do not want to use the `H' or `L' commands any longer. As
+ shown in this example, multiple keys can be assigned to one
+ function in a single statement.
+
+
+File: screen.info, Node: Movement, Next: Marking, Prev: Copy Mode Keys, Up: Copy
+
+Movement Keys
+-------------
+
+`h', `j', `k', `l' move the cursor line by line or column by column.
+
+`0', `^' and `$' move to the leftmost column or to the first or last
+non-whitespace character on the line.
+
+`H', `M' and `L' move the cursor to the leftmost column of the top,
+center or bottom line of the window.
+
+`+' and `-' move the cursor to the leftmost column of the next or
+previous line.
+
+`G' moves to the specified absolute line (default: end of buffer).
+
+`|' moves to the specified absolute column.
+
+`w', `b', `e' move the cursor word by word.
+
+`C-u' and `C-d' scroll the display up/down by the specified amount of
+lines while preserving the cursor position. (Default: half screenfull).
+
+`C-b' and `C-f' move the cursor up/down a full screen.
+
+`g' moves to the beginning of the buffer.
+
+`%' jumps to the specified percentage of the buffer.
+
+ Note that Emacs-style movement keys can be specified by a .screenrc
+command. (`markkeys "h=^B:l=^F:$=^E"') There is no simple method for a
+full emacs-style keymap, however, as this involves multi-character
+codes.
+
+
+File: screen.info, Node: Marking, Next: Repeat count, Prev: Movement, Up: Copy
+
+Marking
+-------
+
+ The copy range is specified by setting two marks. The text between
+these marks will be highlighted. Press `space' to set the first or
+second mark respectively.
+
+`Y' and `y' can be used to mark one whole line or to mark from start of
+line.
+
+`W' marks exactly one word.
+
+
+File: screen.info, Node: Repeat count, Next: Searching, Prev: Marking, Up: Copy
+
+Repeat Count
+------------
+
+ Any command in copy mode can be prefixed with a number (by pressing
+digits `0...9') which is taken as a repeat count. Example: `C-a C-[ H
+10 j 5 Y' will copy lines 11 to 15 into the paste buffer.
+
+
+File: screen.info, Node: Searching, Next: Specials, Prev: Repeat count, Up: Copy
+
+Searching
+---------
+
+`/' `vi'-like search forward.
+
+`?' `vi'-like search backward.
+
+`C-a s' `emacs' style incremental search forward.
+
+`C-r' `emacs' style reverse i-search.
+
+
+File: screen.info, Node: Specials, Prev: Searching, Up: Copy
+
+Specials
+--------
+
+ There are, however, some keys that act differently here from in
+`vi'. `Vi' does not allow to yank rectangular blocks of text, but
+`screen' does. Press
+
+`c' or `C' to set the left or right margin respectively. If no repeat
+count is given, both default to the current cursor position.
+Example: Try this on a rather full text screen: `C-a [ M 20 l SPACE c
+10 l 5 j C SPACE'.
+
+This moves one to the middle line of the screen, moves in 20 columns
+left, marks the beginning of the paste buffer, sets the left column,
+moves 5 columns down, sets the right column, and then marks the end of
+the paste buffer. Now try:
+`C-a [ M 20 l SPACE 10 l 5 j SPACE'
+
+and notice the difference in the amount of text copied.
+
+`J' joins lines. It toggles between 4 modes: lines separated by a
+newline character (012), lines glued seamless, lines separated by a
+single space or comma separated lines. Note that you can prepend the
+newline character with a carriage return character, by issuing a `set
+crlf on'.
+
+`v' is for all the `vi' users who use `:set numbers' - it toggles the
+left margin between column 9 and 1.
+
+`a' before the final space key turns on append mode. Thus the contents
+of the paste buffer will not be overwritten, but appended to.
+
+`A' turns on append mode and sets a (second) mark.
+
+`>' sets the (second) mark and writes the contents of the paste buffer
+to the screen-exchange file (`/tmp/screen-exchange' per default) once
+copy-mode is finished. *Note Screen-Exchange::.
+This example demonstrates how to dump the whole scrollback buffer to
+that file:
+`C-a [ g SPACE G $ >'.
+
+`C-g' gives information about the current line and column.
+
+`x' exchanges the first mark and the current cursor position. You can
+use this to adjust an already placed mark.
+
+`@' does nothing. Absolutely nothing. Does not even exit copy mode.
+
+All keys not described here exit copy mode.
+
+
+File: screen.info, Node: Paste, Next: Registers, Prev: Copy, Up: Copy and Paste
+
+Paste
+=====
+
+ - Command: paste [REGISTERS [DESTINATION]]
+ (`C-a ]', `C-a C-]')
+ Write the (concatenated) contents of the specified registers to
+ the stdin stream of the current window. The register `.' is
+ treated as the paste buffer. If no parameter is specified the user
+ is prompted to enter a single register. The paste buffer can be
+ filled with the `copy', `history' and `readbuf' commands. Other
+ registers can be filled with the `register', `readreg' and `paste'
+ commands. If `paste' is called with a second argument, the
+ contents of the specified registers is pasted into the named
+ destination register rather than the window. If `.' is used as the
+ second argument, the display's paste buffer is the destination.
+ Note, that `paste' uses a wide variety of resources: Usually both,
+ a current window and a current display are required. But whenever
+ a second argument is specified no current window is needed. When
+ the source specification only contains registers (not the paste
+ buffer) then there need not be a current display (terminal
+ attached), as the registers are a global resource. The paste
+ buffer exists once for every user.
+
+ - Command: pastefont [STATE]
+ Tell screen to include font information in the paste buffer. The
+ default is not to do so. This command is especially usefull for
+ multi character fonts like kanji.
+
+ - Command: slowpaste MSEC
+ - Command: defslowpaste MSEC
+ (none)
+ Define the speed text is inserted in the current window by the
+ `paste' command. If the slowpaste value is nonzero text is written
+ character by character. `screen' will pause for MSEC milliseconds
+ after each write to allow the application to process the input.
+ only use `slowpaste' if your underlying system exposes flow
+ control problems while pasting large amounts of text.
+ `defslowpaste' specifies the default for new windows.
+
+ - Command: readreg [REGISTER [FILENAME]]
+ (none)
+ Does one of two things, dependent on number of arguments: with
+ zero or one arguments it it duplicates the paste buffer contents
+ into the register specified or entered at the prompt. With two
+ arguments it reads the contents of the named file into the
+ register, just as `readbuf' reads the screen-exchange file into
+ the paste buffer. The following example will paste the system's
+ password file into the screen window (using register p, where a
+ copy remains):
+
+ C-a : readreg p /etc/passwd
+ C-a : paste p
+
+
+File: screen.info, Node: Registers, Next: Screen-Exchange, Prev: Paste, Up: Copy and Paste
+
+Registers
+=========
+
+ - Command: copy_reg [KEY]
+ (none)
+ Removed. Use `readreg' instead.
+
+ - Command: ins_reg [KEY]
+ (none)
+ Removed. Use `paste' instead.
+
+ - Command: process [KEY]
+ (none)
+ Stuff the contents of the specified register into the `screen'
+ input queue. If no argument is given you are prompted for a
+ register name. The text is parsed as if it had been typed in from
+ the user's keyboard. This command can be used to bind multiple
+ actions to a single key.
+
+ - Command: register KEY STRING
+ (none)
+ Save the specified STRING to the register KEY.
+
+ - Command: stuff STRING
+ (none)
+ Stuff the string STRING in the input buffer of the current window.
+ This is like the `paste' command, but with much less overhead.
+ You cannot paste large buffers with the `stuff' command. It is most
+ useful for key bindings. *Note Bindkey::
+
+
+
+File: screen.info, Node: Screen-Exchange, Next: History, Prev: Registers, Up: Copy and Paste
+
+Screen-Exchange
+===============
+
+ - Command: bufferfile [EXCHANGE-FILE]
+ (none)
+ Change the filename used for reading and writing with the paste
+ buffer. If the EXCHANGE-FILE parameter is omitted, `screen'
+ reverts to the default of `/tmp/screen-exchange'. The following
+ example will paste the system's password file into the screen
+ window (using the paste buffer, where a copy remains):
+
+ C-a : bufferfile /etc/passwd
+ C-a < C-a ]
+ C-a : bufferfile
+
+ - Command: readbuf
+ (`C-a <')
+ Reads the contents of the current screen-exchange file into the
+ paste buffer.
+
+ - Command: removebuf
+ (`C-a =')
+ Unlinks the screen-exchange file.
+
+ - Command: writebuf
+ (`C-a >')
+ Writes the contents of the paste buffer to a public accessible
+ screen-exchange file. This is thought of as a primitive means of
+ communication between `screen' users on the same host. See also
+ `C-a ESC' (*note Copy::.).
+
+
+File: screen.info, Node: History, Prev: Screen-Exchange, Up: Copy and Paste
+
+History
+=======
+
+ - Command: history
+ (`C-a {')
+ Usually users work with a shell that allows easy access to previous
+ commands. For example, `csh' has the command `!!' to repeat the
+ last command executed. `screen' provides a primitive way of
+ recalling "the command that started ...": You just type the first
+ letter of that command, then hit `C-a {' and `screen' tries to
+ find a previous line that matches with the prompt character to the
+ left of the cursor. This line is pasted into this window's input
+ queue. Thus you have a crude command history (made up by the
+ visible window and its scrollback buffer).
+
+
+File: screen.info, Node: Subprocess Execution, Next: Key Binding, Prev: Copy and Paste, Up: Top
+
+Subprocess Execution
+********************
+
+ Control Input or Output of a window by another filter process. Use
+with care!
+
+* Menu:
+
+* Exec:: The `exec' command syntax.
+* Using Exec:: Weird things that filters can do.
+
+
+File: screen.info, Node: Exec, Next: Using Exec, Up: Subprocess Execution
+
+Exec
+====
+
+ - Command: exec [[FDPAT] NEWCOMMAND [ARGS ... ]]
+ (none)
+ Run a unix subprocess (specified by an executable path NEWCOMMAND
+ and its optional arguments) in the current window. The flow of
+ data between newcommands stdin/stdout/stderr, the process
+ originally started (let us call it "application-process") and
+ screen itself (window) is controlled by the filedescriptor pattern
+ FDPAT. This pattern is basically a three character sequence
+ representing stdin, stdout and stderr of newcommand. A dot (`.')
+ connects the file descriptor to screen. An exclamation mark (`!')
+ causes the file descriptor to be connected to the
+ application-process. A colon (`:') combines both.
+ User input will go to newcommand unless newcommand receives the
+ application-process' output (FDPATs first character is `!' or `:')
+ or a pipe symbol (`|') is added to the end of FDPAT.
+ Invoking `exec' without arguments shows name and arguments of the
+ currently running subprocess in this window. Only one subprocess
+ can be running per window.
+ When a subprocess is running the `kill' command will affect it
+ instead of the windows process. Only one subprocess a time can be
+ running in each window.
+ Refer to the postscript file `doc/fdpat.ps' for a confusing
+ illustration of all 21 possible combinations. Each drawing shows
+ the digits 2, 1, 0 representing the three file descriptors of
+ newcommand. The box marked `W' is usual pty that has the
+ application-process on its slave side. The box marked `P' is the
+ secondary pty that now has screen at its master side.
+
+
+File: screen.info, Node: Using Exec, Prev: Exec, Up: Subprocess Execution
+
+Using Exec
+==========
+
+Abbreviations:
+
+ * Whitespace between the word `exec' and FDPAT and the command name
+ can be omitted.
+
+ * Trailing dots and a FDPAT consisting only of dots can be omitted.
+
+ * A simple `|' is synonymous for the `!..|' pattern.
+
+ * The word `exec' can be omitted when the `|' abbreviation is used.
+
+ * The word `exec' can always be replaced by leading `!'.
+
+Examples:
+
+`!/bin/sh'
+`exec /bin/sh'
+`exec ... /bin/sh'
+ All of the above are equivalent. Creates another shell in the
+ same window, while the original shell is still running. Output of
+ both shells is displayed and user input is sent to the new
+ `/bin/sh'.
+
+`!!stty 19200'
+`exec!stty 19200'
+`exec !.. stty 19200'
+ All of the above are equivalent. Set the speed of the window's
+ tty. If your stty command operates on stdout, then add another
+ `!'. This is a useful command, when a screen window is directly
+ connected to a serial line that needs to be configured.
+
+`|less'
+`exec !..| less'
+ Both are equivalent. This adds a pager to the window output. The
+ special character `|' is needed to give the user control over the
+ pager although it gets its input from the window's process. This
+ works, because `less' listens on stderr (a behavior that `screen'
+ would not expect without the `|') when its stdin is not a tty.
+ `Less' versions newer than 177 fail miserably here; good old `pg'
+ still works.
+
+`!:sed -n s/.*Error.*/\007/p'
+ Sends window output to both, the user and the sed command. The sed
+ inserts an additional bell character (oct. 007) to the window
+ output seen by screen. This will cause 'Bell in window x'
+ messages, whenever the string `Error' appears in the window.
+
+
File: screen.info, Node: Key Binding, Next: Flow Control, Prev: Subprocess Execution, Up: Top
Key Binding
@@ -78,7 +547,7 @@ would bind the space key to the command that displays a list of windows
available as `C-a space'), bind `C-f' to the command "create a window
with a TELNET connection to foobar", and bind ESC to the command that
creates an non-login window with title `root' in slot #9, with a
-super-user shell and a scrollbackbuffer of 1000 lines.
+superuser shell and a scrollback buffer of 1000 lines.

File: screen.info, Node: Command Character, Next: Help, Prev: Bind Examples, Up: Key Binding
@@ -89,13 +558,13 @@ Command Character
- Command: escape XY
(none)
Set the command character to X and the character generating a
- literal command character to Y (just like with the `-e' option).
- Each argument is either a single character, a two-character
- sequence of the form `^x' (meaning `C-x'), a backslash followed by
- an octal number (specifying the ASCII code of the character), or a
- backslash followed by a second character, such as `\^' or `\\'.
- The default is `^Aa', but ```' is recommended by one of the
- authors.
+ literal command character (by triggering the `meta' command) to Y
+ (similar to the `-e' option). Each argument is either a single
+ character, a two-character sequence of the form `^x' (meaning
+ `C-x'), a backslash followed by an octal number (specifying the
+ ASCII code of the character), or a backslash followed by a second
+ character, such as `\^' or `\\'. The default is `^Aa', but ```'
+ is recommended by one of the authors.
- Command: defescape XY
(none)
@@ -161,11 +630,11 @@ Bindkey
have two entries in the translation table. You can select the
application mode entry by specifying the `-a' option.
- The `-t' option tells screen not to do intercharacter timing. One
- cannot turn off the timing if a termcap capabilty is used.
+ The `-t' option tells screen not to do inter-character timing. One
+ cannot turn off the timing if a termcap capability is used.
`cmd' can be any of screen's commands with an arbitrary number of
- `args'. If `cmd' is omitted the keybinding is removed from the
+ `args'. If `cmd' is omitted the key-binding is removed from the
table.

@@ -187,15 +656,15 @@ Make the "F1" key switch to window one.
bindkey -t foo stuff barfoo
-Make `foo' an abrevation of the word `barfoo'. Timeout is disabled so
+Make `foo' an abbreviation of the word `barfoo'. Timeout is disabled so
that users can type slowly.
bindkey "\024" mapdefault
-This keybinding makes `C-t' an escape character for keybindings. If you
-did the above `stuff barfoo' binding, you can enter the word `foo' by
-typing `C-t foo'. If you want to insert a `C-t' you have to press the
-key twice (i.e. escape the escape binding).
+This key-binding makes `C-t' an escape character for key-bindings. If
+you did the above `stuff barfoo' binding, you can enter the word `foo'
+by typing `C-t foo'. If you want to insert a `C-t' you have to press
+the key twice (i.e. escape the escape binding).
bindkey -k F1 command
@@ -430,7 +899,8 @@ the terminal, while all other windows are still active (the printer
port is enabled and disabled again for each chunk of output). As a
side-effect, programs running in different windows can send output to
the printer simultaneously. Data sent to the printer is not displayed
-in the window.
+in the window. The `info' command displays a line starting with `PRIN'
+while the printer is active.
Some capabilities are only put into the `$TERMCAP' variable of the
virtual terminal if they can be efficiently implemented by the physical
@@ -473,15 +943,15 @@ The `termcap' command
going through all the hassles involved in creating a custom
termcap entry. Plus, you can optionally customize the termcap
generated for the windows. You have to place these commands in
- one of the screenrc starup files, as they are meaningless once the
- terminal emulator is booted.
+ one of the screenrc startup files, as they are meaningless once
+ the terminal emulator is booted.
If your system uses the terminfo database rather than termcap,
- `screen' will understand the `terminfo' command which has the same
- effects as the `termcap' command. Two separate commands are
+ `screen' will understand the `terminfo' command, which has the
+ same effects as the `termcap' command. Two separate commands are
provided, as there are subtle syntactic differences, e.g. when
parameter interpolation (using `%') is required. Note that the
- termcap names of the capabilities have to be used with the
+ termcap names of the capabilities should also be used with the
`terminfo' command.
In many cases, where the arguments are valid in both terminfo and
@@ -608,11 +1078,11 @@ often not possible to place these capabilities in the terminfo database.
`CS'
(str)
- Switch cursor keys to application mode.
+ Switch cursor-keys to application mode.
`CE'
(str)
- Switch cursor keys to cursor mode.
+ Switch cursor-keys to cursor mode.
`AN'
(bool)
@@ -631,7 +1101,7 @@ often not possible to place these capabilities in the terminfo database.
`AF'
(str)
- Change character forground color in an ANSI conform way. This
+ Change character foreground color in an ANSI conform way. This
capability will almost always be set to `\E[3%dm' (`\E[3%p1%dm' on
terminfo machines).
@@ -648,6 +1118,11 @@ often not possible to place these capabilities in the terminfo database.
Describe a translation of characters to strings depending on the
current font. (*note Character Translation::.).
+`TF'
+ (bool)
+ Add missing capabilities to the termcap/info entry. (Set by
+ default).
+

File: screen.info, Node: Autonuke, Next: Obuflimit, Prev: Special Capabilities, Up: Termcap
@@ -714,7 +1189,7 @@ characters over several national language font pages.
<MAPPING> describes to what string a single character will be
translated. A template mechanism is used, as most of the time the codes
have a lot in common (for example strings to switch to and from another
-charset). Each occurence of `%' in <TEMPLATE> gets substituted with the
+charset). Each occurrence of `%' in <TEMPLATE> gets substituted with the
TEMPLATE-ARG specified together with the character. If your strings are
not similar at all, then use `%' as a template and place the full
string in <TEMPLATE-ARG>. A quoting mechanism was added to make it
@@ -735,7 +1210,7 @@ therefore a lot of quoting is needed to create a single `\'.
translates the unquoted `%' char, it will be sent to the terminal
whenever screen switches to the corresponding <DESIGNATOR>. In this
special case the template is assumed to be just `%' because the charset
-switch sequence and the character mappings normaly haven't much in
+switch sequence and the character mappings normally haven't much in
common.
This example shows one use of the extension:
@@ -790,592 +1265,31 @@ Hardware Status Line
====================
- Command: hardstatus [STATE]
+ - Command: hardstatus [`always']`lastline'|`message'|`ignore' [STRING]
+ - Command: hardstatus `string' [STRING]
(none)
- Toggles the use of the terminal's hardware status line. If `on',
- `screen' will use this facility to display one line messages.
- Otherwise these messages are overlayed in reverse video mode at the
- display line. Note that the hardstatus feature can only be used if
- the termcap/terminfo capabilities "hs", "ts", "fs" and "ds" are set
- properly. Default is `on' whenever the "hs" capability is present.
-
-
-File: screen.info, Node: Last Message, Next: Message Wait, Prev: Hardware Status Line, Up: Message Line
-
-Display Last Message
-====================
-
- - Command: lastmsg
- (`C-a m', `C-a C-m')
- Repeat the last message displayed in the message line. Useful if
- you're typing when a message appears, because (unless your
- terminal has a hardware status line) the message goes away when
- you press a key.
-
-
-File: screen.info, Node: Message Wait, Prev: Last Message, Up: Message Line
-
-Message Wait
-============
-
- - Command: msgminwait SEC
- (none)
- Defines the time `screen' delays a new message when another is
- currently displayed. Defaults to 1 second.
-
- - Command: msgwait SEC
- (none)
- Defines the time a message is displayed, if `screen' is not
- disturbed by other activity. Defaults to 5 seconds.
-
-
-File: screen.info, Node: Logging, Next: Startup, Prev: Message Line, Up: Top
-
-Logging
-*******
-
- This section describes the commands for keeping a record of your
-session.
-
-* Menu:
-
-* Hardcopy:: Dump the current screen to a file
-* Log:: Log the output of a window to a file
-
-
-File: screen.info, Node: Hardcopy, Next: Log, Up: Logging
-
-hardcopy
-========
-
- - Command: hardcopy
- (`C-a h', `C-a C-h')
- Writes out the current display contents to the file `hardcopy.N'
- in the window's default directory, where N is the number of the
- current window. This either appends or overwrites the file if it
- exists, as determined by the `hardcopy_append' command.
-
- - Command: hardcopy_append STATE
- (none)
- If set to `on', `screen' will append to the `hardcopy.N' files
- created by the command `hardcopy'; otherwise, these files are
- overwritten each time.
-
- - Command: hardcopydir DIRECTORY
- (none)
- Defines a directory where hardcopy files will be placed. If unset
- hardcopys are dumped in screen's current working directory.
-
-
-File: screen.info, Node: Log, Prev: Hardcopy, Up: Logging
-
-log
-===
-
- - Command: log [STATE]
- (`C-a H')
- Begins/ends logging of the current window to the file
- `screenlog.N' in the window's default directory, where N is the
- number of the current window. This filename can be changed with
- the `logfile' command. If no parameter is given, the logging
- state is toggled. The session log is appended to the previous
- contents of the file if it already exists. The current contents
- and the contents of the scrollback history are not included in the
- session log. Default is `off'.
-
- - Command: logfile FILENAME
- (none)
- Defines the name the logfiles will get. The default is
- `screenlog.%n'.
-
-
-File: screen.info, Node: Startup, Next: Miscellaneous, Prev: Logging, Up: Top
-
-Startup
-*******
-
- This section describes commands which are only useful in the
-`.screenrc' file, for use at startup.
-
-* Menu:
-
-* echo:: Display a message.
-* sleep:: Pause execution of the `.screenrc'.
-* Startup Message:: Control display of the copyright notice.
-
-
-File: screen.info, Node: echo, Next: sleep, Up: Startup
-
-echo
-====
-
- - Command: echo [-n] MESSAGE
- (none)
- The echo command may be used to annoy `screen' users with a
- 'message of the day'. Typically installed in a global screenrc.
- The option `-n' may be used to suppress the line feed. See also
- `sleep'. Echo is also useful for online checking of environment
- variables.
-
-
-File: screen.info, Node: sleep, Next: Startup Message, Prev: echo, Up: Startup
-
-sleep
-=====
-
- - Command: sleep NUM
- (none)
- This command will pause the execution of a .screenrc file for NUM
- seconds. Keyboard activity will end the sleep. It may be used to
- give users a chance to read the messages output by `echo'.
-
-
-File: screen.info, Node: Startup Message, Prev: sleep, Up: Startup
-
-Startup Message
-===============
-
- - Command: startup_message STATE
- (none)
- Select whether you want to see the copyright notice during startup.
- Default is `on', as you probably noticed.
-
-
-File: screen.info, Node: Miscellaneous, Next: Environment, Prev: Startup, Up: Top
-
-Miscellaneous commands
-**********************
-
- The commands described here do not fit well under any of the other
-categories.
-
-* Menu:
-
-* At:: Execute a command at other displays or windows.
-* Break:: Send a break signal to the window.
-* Debug:: Suppress/allow debugging output.
-* License:: Display the disclaimer page.
-* Nethack:: Use `nethack'-like error messages.
-* Number:: Change the current window's number.
-* Silence:: Notify on inactivity.
-* Time:: Display the time and load average.
-* Version:: Display the version of `screen'.
-* Zombie:: Keep dead windows.
-* Printcmd:: Set command for VT100 printer port emulation.
-* Sorendition:: Change the text highlighting method.
-
-
-File: screen.info, Node: At, Next: Break, Up: Miscellaneous
-
-At
-==
-
- - Command: at [IDENTIFIER][#|*|%] COMMAND [ARGS]
- (none)
- Execute a command at other displays or windows as if it had been
- entered there. `At' changes the context (the `current window' or
- `current display' setting) of the command. If the first parameter
- describes a non-unique context, the command will be executed
- multiple times. If the first parameter is of the form
- `IDENTIFIER*' then identifier is matched against user names. The
- command is executed once for each display of the selected user(s).
- If the first parameter is of the form `IDENTIFIER%' identifier is
- matched against displays. Displays are named after the ttys they
- attach. The prefix `/dev/' or `/dev/tty' may be omitted from the
- identifier. If IDENTIFIER has a `#' or nothing appended it is
- matched against window numbers and titles. Omitting an identifier
- in front of the `#', `*' or `%' character selects all users,
- displays or windows because a prefix-match is performed. Note that
- on the affected display(s) a short message will describe what
- happened. Caution: Permission is checked for the owners or the
- affected display(s), not for the initiator of the `at' command.
-
-
-File: screen.info, Node: Break, Next: Debug, Prev: At, Up: Miscellaneous
-
-Break
-=====
-
- - Command: break [DURATION]
- (none)
- Send a break signal for DURATION*0.25 seconds to this window.
- Most useful if a character device is attached to the window rather
- than a shell process.
-
- - Command: pow_break
- (none)
- Reopen the window's terminal line and send a break condition.
-
-
-File: screen.info, Node: Debug, Next: License, Prev: Break, Up: Miscellaneous
-
-Debug
-=====
-
- - Command: debug [ON|OFF]
- (none)
- Turns runtime debugging on or off. If `screen' has been compiled
- with option `-DDEBUG' debugging is available and is turned on per
- default. Note that this command only affects debugging output
- from the main `SCREEN' process.
-
-
-File: screen.info, Node: License, Next: Nethack, Prev: Debug, Up: Miscellaneous
-
-License
-=======
-
- - Command: license
- (none)
- Display the disclaimer page. This is done whenever `screen' is
- started without options, which should be often enough.
-
-
-File: screen.info, Node: Nethack, Next: Number, Prev: License, Up: Miscellaneous
-
-Nethack
-=======
-
- - Command: nethack STATE
- (none)
- Changes the kind of error messages used by `screen'. When you are
- familiar with the game `nethack', you may enjoy the nethack-style
- messages which will often blur the facts a little, but are much
- funnier to read. Anyway, standard messages often tend to be
- unclear as well.
-
- This option is only available if `screen' was compiled with the
- NETHACK flag defined (*note Installation::.). The default setting
- is then determined by the presence of the environment variable
- `$NETHACKOPTIONS'.
-
-
-File: screen.info, Node: Number, Next: Silence, Prev: Nethack, Up: Miscellaneous
-
-Number
-======
-
- - Command: number [N]
- (`C-a N')
- Change the current window's number. If the given number N is
- already used by another window, both windows exchange their
- numbers. If no argument is specified, the current window number
- (and title) is shown.
-
-
-File: screen.info, Node: Silence, Next: Time, Prev: Number, Up: Miscellaneous
-
-Silence
-=======
-
- - Command: silence [STATE|SEC]
- (none)
- Toggles silence monitoring of windows. When silence is turned on
- and an affected window is switched into the background, you will
- receive the silence notification message in the status line after
- a specified period of inactivity (silence). The default timeout
- can be changed with the `silencewait' command or by specifying a
- number of seconds instead of `on' or `off'. Silence is initially
- off for all windows.
-
- - Command: silencewait SECONDS
- (none)
- Define the time that all windows monitored for silence should wait
- before displaying a message. Default is 30 seconds.
-
-
-File: screen.info, Node: Time, Next: Version, Prev: Silence, Up: Miscellaneous
-
-Time
-====
-
- - Command: time
- (`C-a t', `C-a C-t')
- Uses the message line to display the time of day, the host name,
- and the load averages over 1, 5, and 15 minutes (if this is
- available on your system). For window-specific information use
- `info' (*note Info::.).
-
-
-File: screen.info, Node: Version, Next: Zombie, Prev: Time, Up: Miscellaneous
-
-Version
-=======
-
- - Command: version
- (`C-a v')
- Display the version and modification date in the message line.
-
-
-File: screen.info, Node: Zombie, Next: Printcmd, Prev: Version, Up: Miscellaneous
-
-Zombie
-======
-
- - Command: zombie [KEYX]
- - Command: defzombie [KEYX]
- (none)
- Per default windows are removed from the window list as soon as the
- windows process (e.g. shell) exits. When a string of two keys is
- specified to the zombie command, `dead' windows will remain in the
- list. The `kill' kommand may be used to remove the window.
- Pressing the first key in the dead window has the same effect.
- Pressing the second key, however, screen will attempt to resurrect
- the window. The process that was initially running in the window
- will be launched again. Calling `zombie' without parameters will
- clear the zombie setting, thus making windows disappear when the
- process terminates.
-
- As the zombie setting is affected globally for all windows, this
- command should only be called `defzombie'. Until we need this as a
- per window setting, the commands `zombie' and `defzombie' are
- synonymous.
-
-
-File: screen.info, Node: Printcmd, Next: Sorendition, Prev: Zombie, Up: Miscellaneous
-
-Printcmd
-========
-
- - Command: printcmd [CMD]
- (none)
- If CMD is not an empty string, screen will not use the terminal
- capabilities `po/pf' for printing if it detects an ansi print
- sequence `ESC [ 5 i', but pipe the output into CMD. This should
- normally be a command like `lpr' or `cat > /tmp/scrprint'.
- `Printcmd' without an argument displays the current setting. The
- ansi sequence `ESC \' ends printing and closes the pipe.
-
- Warning: Be careful with this command! If other user have write
- access to your terminal, they will be able to fire off print
- commands.
-
-
-File: screen.info, Node: Sorendition, Prev: Printcmd, Up: Miscellaneous
-
-Sorendition
-===========
-
- - Command: sorendition [ATTR [COLOR]]
- (none)
- Change the way screen does highlighting for text marking and
- printing messages. ATTR is a hexadecimal number and describes the
- attributes (inverse, underline, ...) the text will get. COLOR is
- a 2 digit number and changes the forground/background of the
- highlighted text. Some knowledge of screen's internal character
- representation is needed to make the characters appear in the
- desired way. The default is currently `10 99' (standout, default
- colors).
-
-
-File: screen.info, Node: Environment, Next: Files, Prev: Miscellaneous, Up: Top
-
-Environment Variables
-*********************
-
-`COLUMNS'
- Number of columns on the terminal (overrides termcap entry).
-
-`HOME'
- Directory in which to look for .screenrc.
-
-`ISCREENRC'
- Alternate user screenrc file.
-
-`LINES'
- Number of lines on the terminal (overrides termcap entry).
-
-`LOCKPRG'
- Screen lock program.
-
-`NETHACKOPTIONS'
- Turns on `nethack' option.
-
-`PATH'
- Used for locating programs to run.
-
-`SCREENCAP'
- For customizing a terminal's `TERMCAP' value.
-
-`SCREENDIR'
- Alternate socket directory.
-
-`SCREENRC'
- Alternate user screenrc file.
-
-`SHELL'
- Default shell program for opening windows (default `/bin/sh').
-
-`STY'
- Alternate socket name. If `screen' is invoked, and the environment
- variable `STY' is set, then it creates only a window in the
- running `screen' session rather than starting a new session.
-
-`SYSSCREENRC'
- Alternate system screenrc file.
-
-`TERM'
- Terminal name.
-
-`TERMCAP'
- Terminal description.
-
-
-File: screen.info, Node: Files, Next: Credits, Prev: Environment, Up: Top
-
-Files Referenced
-****************
-
-`.../screen-3.?.??/etc/screenrc'
-`.../screen-3.?.??/etc/etcscreenrc'
- Examples in the `screen' distribution package for private and
- global initialization files.
-
-``$SYSSCREENRC''
-`/local/etc/screenrc'
- `screen' initialization commands
-
-``$ISCREENRC''
-``$SCREENRC''
-``$HOME'/.iscreenrc'
-``$HOME'/.screenrc'
- Read in after /local/etc/screenrc
-
-``$ISCREENDIR'/S-LOGIN'
-``$SCREENDIR'/S-LOGIN'
-`/local/screens/S-LOGIN'
- Socket directories (default)
-
-`/usr/tmp/screens/S-LOGIN'
- Alternate socket directories.
-
-`SOCKET DIRECTORY/.termcap'
- Written by the `dumptermcap' command
-
-`/usr/tmp/screens/screen-exchange or'
-`/tmp/screen-exchange'
- `screen' interprocess communication buffer
-
-`hardcopy.[0-9]'
- Screen images created by the hardcopy command
-
-`screenlog.[0-9]'
- Output log files created by the log command
-
-`/usr/lib/terminfo/?/* or'
-`/etc/termcap'
- Terminal capability databases
-
-`/etc/utmp'
- Login records
-
-``$LOCKPRG''
- Program for locking the terminal.
-
-
-File: screen.info, Node: Credits, Next: Bugs, Prev: Files, Up: Top
-
-Credits
-*******
-
-Authors
-=======
-
- Originally created by Oliver Laumann, this latest version was
-produced by Wayne Davison, Juergen Weigert and Michael Schroeder.
-
-Contributors
-============
-
- Ken Beal (kbeal@amber.ssd.csd.harris.com),
- Rudolf Koenig (rfkoenig@informatik.uni-erlangen.de),
- Toerless Eckert (eckert@informatik.uni-erlangen.de),
- Wayne Davison (davison@borland.com),
- Patrick Wolfe (pat@kai.com, kailand!pat),
- Bart Schaefer (schaefer@cse.ogi.edu),
- Nathan Glasser (nathan@brokaw.lcs.mit.edu),
- Larry W. Virden (lvirden@cas.org),
- Howard Chu (hyc@hanauma.jpl.nasa.gov),
- Tim MacKenzie (tym@dibbler.cs.monash.edu.au),
- Markku Jarvinen (mta@{cc,cs,ee}.tut.fi),
- Marc Boucher (marc@CAM.ORG),
- Doug Siebert (dsiebert@isca.uiowa.edu),
- Ken Stillson (stillson@tsfsrv.mitre.org),
- Ian Frechett (frechett@spot.Colorado.EDU),
- Brian Koehmstedt (bpk@gnu.ai.mit.edu),
- Don Smith (djs6015@ultb.isc.rit.edu),
- Frank van der Linden (vdlinden@fwi.uva.nl),
- Martin Schweikert (schweik@cpp.ob.open.de),
- David Vrona (dave@sashimi.lcu.com),
- E. Tye McQueen (tye%spillman.UUCP@uunet.uu.net),
- Matthew Green (mrgreen@mame.mu.oz.au),
- Christopher Williams (cgw@unt.edu),
- Matt Mosley (mattm@access.digex.net),
- Gregory Neil Shapiro (gshapiro@wpi.WPI.EDU),
- Jason Merrill (jason@jarthur.Claremont.EDU).
-
-Version
-=======
-
- This manual describes version 3.7.0 of the `screen' program. Its
-roots are a merge of a custom version 2.3PR7 by Wayne Davison and
-several enhancements to Oliver Laumann's version 2.0. Note that all
-versions numbered 2.x are copyright by Oliver Laumann.
-
- See also *Note Availability::.
-
-
-File: screen.info, Node: Bugs, Next: Installation, Prev: Credits, Up: Top
-
-Bugs
-****
-
- Just like any other significant piece of software, `screen' has a
-few bugs and missing features. Please send in a bug report if you have
-found a bug not mentioned here.
-
-* Menu:
-
-* Known Bugs:: Problems we know about.
-* Reporting Bugs:: How to contact the maintainers.
-* Availability:: Where to find the lastest screen version.
-
-
-File: screen.info, Node: Known Bugs, Next: Reporting Bugs, Up: Bugs
-
-Known Bugs
-==========
-
- * `dm' (delete mode) and `xs' are not handled correctly (they are
- ignored). `xn' is treated as a magic-margin indicator.
-
- * `screen' has no clue about double-high or double-wide characters.
- But this is the only area where `vttest' is allowed to fail.
-
- * It is not possible to change the environment variable `$TERMCAP'
- when reattaching under a different terminal type.
-
- * The support of terminfo based systems is very limited. Adding extra
- capabilities to `$TERMCAP' may not have any effects.
-
- * `screen' does not make use of hardware tabs.
-
- * `screen' must be installed setuid root in order to be able to
- correctly change the owner of the tty device file for each window.
- Special permission may also be required to write the file
- `/etc/utmp'.
-
- * Entries in `/etc/utmp' are not removed when `screen' is killed
- with SIGKILL. This will cause some programs (like "w" or "rwho")
- to advertise that a user is logged on who really isn't.
-
- * `screen' may give a strange warning when your tty has no utmp
- entry.
-
- * When the modem line was hung up, `screen' may not automatically
- detach (or quit) unless the device driver sends a HANGUP signal.
- To detach such a `screen' session use the -D or -d command line
- option.
-
- * A weird imagination is most useful to gain full advantage of all
- the features.
+ This command configures the use and emulation of the terminal's
+ hardstatus line. The first form toggles whether `screen' will use
+ the hardware status line to display messages. If the flag is set
+ to `off', these messages are overlaid in reverse video mode at the
+ display line. The default setting is `on'.
+
+ The second form tells screen what to do if the terminal doesn't
+ have a hardstatus line (i.e. the termcap/terminfo capabilities
+ "hs", "ts", "fs" and "ds" are not set). If the type `lastline' is
+ used, screen will reserve the last line of the display for the
+ hardstatus. `message' uses `screen''s message mechanism and
+ `ignore' tells `screen' never to display the hardstatus. If you
+ prepend the word `always' to the type, `screen' will use the type
+ even if the terminal supports a hardstatus line.
+
+ The third form specifies the contents of the hardstatus line.
+ `%h' is used as default string, i.e. the stored hardstatus of the
+ current window (settable via `\E]0;^G' or `\E_\\') is displayed.
+ You can customize this to any string you like including string
+ escapes (*Note String Escapes::). If you leave out the argument
+ STRING, the current string is displayed.
+
+ You can mix the second and third form by providing the string as
+ additional argument.
diff --git a/doc/screen.info-4 b/doc/screen.info-4
index f466b1a..727e2af 100644
--- a/doc/screen.info-4
+++ b/doc/screen.info-4
@@ -3,7 +3,7 @@ file ./screen.texinfo.
This file documents the `Screen' virtual terminal manager.
- Copyright (c) 1993 Free Software Foundation, Inc.
+ Copyright (c) 1993-1995 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
@@ -20,6 +20,755 @@ versions, except that this permission notice may be stated in a
translation approved by the Foundation.

+File: screen.info, Node: Last Message, Next: Message Wait, Prev: Hardware Status Line, Up: Message Line
+
+Display Last Message
+====================
+
+ - Command: lastmsg
+ (`C-a m', `C-a C-m')
+ Repeat the last message displayed in the message line. Useful if
+ you're typing when a message appears, because (unless your
+ terminal has a hardware status line) the message goes away when
+ you press a key.
+
+
+File: screen.info, Node: Message Wait, Prev: Last Message, Up: Message Line
+
+Message Wait
+============
+
+ - Command: msgminwait SEC
+ (none)
+ Defines the time `screen' delays a new message when another is
+ currently displayed. Defaults to 1 second.
+
+ - Command: msgwait SEC
+ (none)
+ Defines the time a message is displayed, if `screen' is not
+ disturbed by other activity. Defaults to 5 seconds.
+
+
+File: screen.info, Node: Logging, Next: Startup, Prev: Message Line, Up: Top
+
+Logging
+*******
+
+ This section describes the commands for keeping a record of your
+session.
+
+* Menu:
+
+* Hardcopy:: Dump the current screen to a file
+* Log:: Log the output of a window to a file
+
+
+File: screen.info, Node: Hardcopy, Next: Log, Up: Logging
+
+hardcopy
+========
+
+ - Command: hardcopy
+ (`C-a h', `C-a C-h')
+ Writes out the current display contents to the file `hardcopy.N'
+ in the window's default directory, where N is the number of the
+ current window. This either appends or overwrites the file if it
+ exists, as determined by the `hardcopy_append' command.
+
+ - Command: hardcopy_append STATE
+ (none)
+ If set to `on', `screen' will append to the `hardcopy.N' files
+ created by the command `hardcopy'; otherwise, these files are
+ overwritten each time.
+
+ - Command: hardcopydir DIRECTORY
+ (none)
+ Defines a directory where hardcopy files will be placed. If unset
+ hardcopys are dumped in screen's current working directory.
+
+
+File: screen.info, Node: Log, Prev: Hardcopy, Up: Logging
+
+log
+===
+
+ - Command: log [STATE]
+ (`C-a H')
+ Begins/ends logging of the current window to the file
+ `screenlog.N' in the window's default directory, where N is the
+ number of the current window. This filename can be changed with
+ the `logfile' command. If no parameter is given, the logging
+ state is toggled. The session log is appended to the previous
+ contents of the file if it already exists. The current contents
+ and the contents of the scrollback history are not included in the
+ session log. Default is `off'.
+
+ - Command: logfile FILENAME
+ - Command: logfile FLUSH SECS
+ (none)
+ Defines the name the logfiles will get. The default is
+ `screenlog.%n'. The second form changes the number of seconds
+ `screen' will wait before flushing the logfile buffer to the
+ file-system. The default value is 10 seconds.
+
+ - Command: logtstamp [STATE]
+ - Command: logtstamp `after' SECS
+ - Command: logtstamp `string' STRING
+ (none)
+ This command controls logfile time-stamp mechanism of screen. If
+ time-stamps are turned `on', screen adds a string containing the
+ current time to the logfile after two minutes of inactivity. When
+ output continues and more than another two minutes have passed, a
+ second time-stamp is added to document the restart of the output.
+ You can change this timeout with the second form of the command.
+ The third form is used for customizing the time-stamp string (`--
+ %n:%t -- time-stamp -- %M/%d/%y %c:%s --\n' by default).
+
+
+File: screen.info, Node: Startup, Next: Miscellaneous, Prev: Logging, Up: Top
+
+Startup
+*******
+
+ This section describes commands which are only useful in the
+`.screenrc' file, for use at startup.
+
+* Menu:
+
+* echo:: Display a message.
+* sleep:: Pause execution of the `.screenrc'.
+* Startup Message:: Control display of the copyright notice.
+
+
+File: screen.info, Node: echo, Next: sleep, Up: Startup
+
+echo
+====
+
+ - Command: echo [`-n'] MESSAGE
+ (none)
+ The echo command may be used to annoy `screen' users with a
+ 'message of the day'. Typically installed in a global screenrc.
+ The option `-n' may be used to suppress the line feed. See also
+ `sleep'. Echo is also useful for online checking of environment
+ variables.
+
+
+File: screen.info, Node: sleep, Next: Startup Message, Prev: echo, Up: Startup
+
+sleep
+=====
+
+ - Command: sleep NUM
+ (none)
+ This command will pause the execution of a .screenrc file for NUM
+ seconds. Keyboard activity will end the sleep. It may be used to
+ give users a chance to read the messages output by `echo'.
+
+
+File: screen.info, Node: Startup Message, Prev: sleep, Up: Startup
+
+Startup Message
+===============
+
+ - Command: startup_message STATE
+ (none)
+ Select whether you want to see the copyright notice during startup.
+ Default is `on', as you probably noticed.
+
+
+File: screen.info, Node: Miscellaneous, Next: String Escapes, Prev: Startup, Up: Top
+
+Miscellaneous commands
+**********************
+
+ The commands described here do not fit well under any of the other
+categories.
+
+* Menu:
+
+* At:: Execute a command at other displays or windows.
+* Break:: Send a break signal to the window.
+* Debug:: Suppress/allow debugging output.
+* License:: Display the disclaimer page.
+* Nethack:: Use `nethack'-like error messages.
+* Nonblock:: Disable flow-control to a display.
+* Number:: Change the current window's number.
+* Silence:: Notify on inactivity.
+* Time:: Display the time and load average.
+* Verbose:: Display window creation commands.
+* Version:: Display the version of `screen'.
+* Zombie:: Keep dead windows.
+* Printcmd:: Set command for VT100 printer port emulation.
+* Sorendition:: Change the text highlighting method.
+
+
+File: screen.info, Node: At, Next: Break, Up: Miscellaneous
+
+At
+==
+
+ - Command: at [IDENTIFIER][#|*|%] COMMAND [ARGS]
+ (none)
+ Execute a command at other displays or windows as if it had been
+ entered there. `At' changes the context (the `current window' or
+ `current display' setting) of the command. If the first parameter
+ describes a non-unique context, the command will be executed
+ multiple times. If the first parameter is of the form
+ `IDENTIFIER*' then identifier is matched against user names. The
+ command is executed once for each display of the selected user(s).
+ If the first parameter is of the form `IDENTIFIER%' identifier is
+ matched against displays. Displays are named after the ttys they
+ attach. The prefix `/dev/' or `/dev/tty' may be omitted from the
+ identifier. If IDENTIFIER has a `#' or nothing appended it is
+ matched against window numbers and titles. Omitting an identifier
+ in front of the `#', `*' or `%' character selects all users,
+ displays or windows because a prefix-match is performed. Note that
+ on the affected display(s) a short message will describe what
+ happened. Note that the `#' character works as a comment
+ introducer when it is preceded by whitespace. This can be escaped
+ by prefixing `#' with a `\'. Permission is checked for the
+ initiator of the `at' command, not for the owners of the affected
+ display(s). Caveat: When matching against windows, the command is
+ executed at least once per window. Commands that change the
+ internal arrangement of windows (like `other') may be called
+ again. In shared windows the command will be repeated for each
+ attached display. Beware, when issuing toggle commands like
+ `login'! Some commands (e.g. `stuff', `\*Qprocess' or `paste')
+ require that a display is associated with the target windows.
+ These commands may not work correctly under `at' looping over
+ windows.
+
+
+File: screen.info, Node: Break, Next: Debug, Prev: At, Up: Miscellaneous
+
+Break
+=====
+
+ - Command: break [DURATION]
+ (none)
+ Send a break signal for DURATION*0.25 seconds to this window. For
+ non-Posix systems the time interval is rounded up to full seconds.
+ Most useful if a character device is attached to the window rather
+ than a shell process (*note Window Types::.). The maximum duration
+ of a break signal is limited to 15 seconds.
+
+ - Command: pow_break
+ (none)
+ Reopen the window's terminal line and send a break condition.
+
+ - Command: breaktype [TCSENDBREAK|TIOCSBRK|TCSBRK]
+ (none)
+ Choose one of the available methods of generating a break signal
+ for terminal devices. This command should affect the current
+ window only. But it still behaves identical to `defbreaktype'.
+ This will be changed in the future. Calling `breaktype' with no
+ parameter displays the break setting for the current window.
+
+ - Command: defbreaktype [TCSENDBREAK|TIOCSBRK|TCSBRK]
+ (none)
+ Choose one of the available methods of generating a break signal
+ for terminal devices opened afterwards. The preferred methods are
+ `tcsendbreak' and `TIOCSBRK'. The third, `TCSBRK', blocks the
+ complete `screen' session for the duration of the break, but it
+ may be the only way to generate long breaks. `tcsendbreak' and
+ `TIOCSBRK' may or may not produce long breaks with spikes (e.g. 4
+ per second). This is not only system dependant, this also differs
+ between serial board drivers. Calling `defbreaktype' with no
+ parameter displays the current setting.
+
+
+File: screen.info, Node: Debug, Next: License, Prev: Break, Up: Miscellaneous
+
+Debug
+=====
+
+ - Command: debug [ON|OFF]
+ (none)
+ Turns runtime debugging on or off. If `screen' has been compiled
+ with option `-DDEBUG' debugging is available and is turned on per
+ default. Note that this command only affects debugging output
+ from the main `SCREEN' process correctly. Debug output from
+ attacher processes can only be turned off once and forever.
+
+
+File: screen.info, Node: License, Next: Nethack, Prev: Debug, Up: Miscellaneous
+
+License
+=======
+
+ - Command: license
+ (none)
+ Display the disclaimer page. This is done whenever `screen' is
+ started without options, which should be often enough.
+
+
+File: screen.info, Node: Nethack, Next: Nonblock, Prev: License, Up: Miscellaneous
+
+Nethack
+=======
+
+ - Command: nethack STATE
+ (none)
+ Changes the kind of error messages used by `screen'. When you are
+ familiar with the game `nethack', you may enjoy the nethack-style
+ messages which will often blur the facts a little, but are much
+ funnier to read. Anyway, standard messages often tend to be
+ unclear as well.
+
+ This option is only available if `screen' was compiled with the
+ NETHACK flag defined (*note Installation::.). The default setting
+ is then determined by the presence of the environment variable
+ `$NETHACKOPTIONS'.
+
+
+File: screen.info, Node: Nonblock, Next: Number, Prev: Nethack, Up: Miscellaneous
+
+Nonblock
+========
+
+ - Command: nonblock STATE
+ Enable or disable flow control for the current user interface
+ (display). It is used to prevent a slow display from slowing down
+ the processing of data output by a window. This command may be
+ helpful when multiple displays show the same window. `Nonblock'
+ is initially off for all displays.
+
+
+File: screen.info, Node: Number, Next: Silence, Prev: Nonblock, Up: Miscellaneous
+
+Number
+======
+
+ - Command: number [N]
+ (`C-a N')
+ Change the current window's number. If the given number N is
+ already used by another window, both windows exchange their
+ numbers. If no argument is specified, the current window number
+ (and title) is shown.
+
+
+File: screen.info, Node: Silence, Next: Time, Prev: Number, Up: Miscellaneous
+
+Silence
+=======
+
+ - Command: silence [STATE|SEC]
+ (none)
+ Toggles silence monitoring of windows. When silence is turned on
+ and an affected window is switched into the background, you will
+ receive the silence notification message in the status line after
+ a specified period of inactivity (silence). The default timeout
+ can be changed with the `silencewait' command or by specifying a
+ number of seconds instead of `on' or `off'. Silence is initially
+ off for all windows.
+
+ - Command: defsilence STATE
+ (none)
+ Same as the `silence' command except that the default setting for
+ new windows is changed. Initial setting is `off'.
+
+ - Command: silencewait SECONDS
+ (none)
+ Define the time that all windows monitored for silence should wait
+ before displaying a message. Default is 30 seconds.
+
+
+File: screen.info, Node: Time, Next: Verbose, Prev: Silence, Up: Miscellaneous
+
+Time
+====
+
+ - Command: time
+ (`C-a t', `C-a C-t')
+ Uses the message line to display the time of day, the host name,
+ and the load averages over 1, 5, and 15 minutes (if this is
+ available on your system). For window-specific information use
+ `info' (*note Info::.).
+
+
+File: screen.info, Node: Verbose, Next: Version, Prev: Time, Up: Miscellaneous
+
+Verbose
+=======
+
+ - Command: verbose [ON|OFF]
+ If verbose is switched on, the command name is echoed, whenever a
+ window is created (or resurrected from zombie state). Default is
+ off. Without parameter, the current setting is shown.
+
+
+File: screen.info, Node: Version, Next: Zombie, Prev: Verbose, Up: Miscellaneous
+
+Version
+=======
+
+ - Command: version
+ (`C-a v')
+ Display the version and modification date in the message line.
+
+
+File: screen.info, Node: Zombie, Next: Printcmd, Prev: Version, Up: Miscellaneous
+
+Zombie
+======
+
+ - Command: zombie [KEYS]
+ - Command: defzombie [KEYS]
+ (none)
+ Per default windows are removed from the window list as soon as the
+ windows process (e.g. shell) exits. When a string of two keys is
+ specified to the zombie command, `dead' windows will remain in the
+ list. The `kill' command may be used to remove the window.
+ Pressing the first key in the dead window has the same effect.
+ Pressing the second key, however, screen will attempt to resurrect
+ the window. The process that was initially running in the window
+ will be launched again. Calling `zombie' without parameters will
+ clear the zombie setting, thus making windows disappear when the
+ process terminates.
+
+ As the zombie setting is affected globally for all windows, this
+ command should only be called `defzombie'. Until we need this as a
+ per window setting, the commands `zombie' and `defzombie' are
+ synonymous.
+
+
+File: screen.info, Node: Printcmd, Next: Sorendition, Prev: Zombie, Up: Miscellaneous
+
+Printcmd
+========
+
+ - Command: printcmd [CMD]
+ (none)
+ If CMD is not an empty string, screen will not use the terminal
+ capabilities `po/pf' for printing if it detects an ansi print
+ sequence `ESC [ 5 i', but pipe the output into CMD. This should
+ normally be a command like `lpr' or `cat > /tmp/scrprint'.
+ `Printcmd' without an argument displays the current setting. The
+ ansi sequence `ESC \' ends printing and closes the pipe.
+
+ Warning: Be careful with this command! If other user have write
+ access to your terminal, they will be able to fire off print
+ commands.
+
+
+File: screen.info, Node: Sorendition, Prev: Printcmd, Up: Miscellaneous
+
+Sorendition
+===========
+
+ - Command: sorendition [ATTR [COLOR]]
+ (none)
+ Change the way screen does highlighting for text marking and
+ printing messages. ATTR is a hexadecimal number and describes the
+ attributes (inverse, underline, ...) the text will get. COLOR is
+ a 2 digit number and changes the foreground/background of the
+ highlighted text. Some knowledge of screen's internal character
+ representation is needed to make the characters appear in the
+ desired way. The default is currently `10 99' (standout, default
+ colors).
+
+
+File: screen.info, Node: String Escapes, Next: Environment, Prev: Miscellaneous, Up: Top
+
+String Escapes
+**************
+
+ Screen provides an escape mechanism to insert information like the
+current time into messages or file names. The escape character is `%'
+with one exception: inside of a window's hardstatus `^%' (`^E') is used
+instead.
+
+ Here is the full list of supported escapes:
+
+`%'
+ the escape character itself
+
+`a'
+ either `am' or `pm'
+
+`A'
+ either `AM' or `PM'
+
+`c'
+ current time `HH:MM' in 24h format
+
+`C'
+ current time `HH:MM' in 12h format
+
+`d'
+ day number
+
+`D'
+ weekday name
+
+`h'
+ hardstatus of the window
+
+`l'
+ current load of the system
+
+`m'
+ month number
+
+`M'
+ month name
+
+`n'
+ window number
+
+`s'
+ seconds
+
+`t'
+ window title
+
+`u'
+ all other users on this window
+
+`w'
+ all window numbers and names
+
+`W'
+ all window numbers and names except the current one
+
+`y'
+ last two digits of the year number
+
+`Y'
+ full year number
+
+`?'
+ the part to the next `%?' is displayed only if an escape expands
+ to an nonempty string
+
+`:'
+ else part of `%?' The `c' and `C' escape may be qualified with a
+`0' to make screen use zero instead of space as fill character. The `n'
+escape understands a length qualifier (e.g. `%3n').
+
+
+File: screen.info, Node: Environment, Next: Files, Prev: String Escapes, Up: Top
+
+Environment Variables
+*********************
+
+`COLUMNS'
+ Number of columns on the terminal (overrides termcap entry).
+
+`HOME'
+ Directory in which to look for .screenrc.
+
+`LINES'
+ Number of lines on the terminal (overrides termcap entry).
+
+`LOCKPRG'
+ Screen lock program.
+
+`NETHACKOPTIONS'
+ Turns on `nethack' option.
+
+`PATH'
+ Used for locating programs to run.
+
+`SCREENCAP'
+ For customizing a terminal's `TERMCAP' value.
+
+`SCREENDIR'
+ Alternate socket directory.
+
+`SCREENRC'
+ Alternate user screenrc file.
+
+`SHELL'
+ Default shell program for opening windows (default `/bin/sh').
+
+`STY'
+ Alternate socket name. If `screen' is invoked, and the environment
+ variable `STY' is set, then it creates only a window in the
+ running `screen' session rather than starting a new session.
+
+`SYSSCREENRC'
+ Alternate system screenrc file.
+
+`TERM'
+ Terminal name.
+
+`TERMCAP'
+ Terminal description.
+
+
+File: screen.info, Node: Files, Next: Credits, Prev: Environment, Up: Top
+
+Files Referenced
+****************
+
+`.../screen-3.?.??/etc/screenrc'
+`.../screen-3.?.??/etc/etcscreenrc'
+ Examples in the `screen' distribution package for private and
+ global initialization files.
+
+``$SYSSCREENRC''
+`/local/etc/screenrc'
+ `screen' initialization commands
+
+``$SCREENRC''
+``$HOME'/.iscreenrc'
+``$HOME'/.screenrc'
+ Read in after /local/etc/screenrc
+
+``$SCREENDIR'/S-LOGIN'
+`/local/screens/S-LOGIN'
+ Socket directories (default)
+
+`/usr/tmp/screens/S-LOGIN'
+ Alternate socket directories.
+
+`SOCKET DIRECTORY/.termcap'
+ Written by the `dumptermcap' command
+
+`/usr/tmp/screens/screen-exchange or'
+`/tmp/screen-exchange'
+ `screen' interprocess communication buffer
+
+`hardcopy.[0-9]'
+ Screen images created by the hardcopy command
+
+`screenlog.[0-9]'
+ Output log files created by the log command
+
+`/usr/lib/terminfo/?/* or'
+`/etc/termcap'
+ Terminal capability databases
+
+`/etc/utmp'
+ Login records
+
+``$LOCKPRG''
+ Program for locking the terminal.
+
+
+File: screen.info, Node: Credits, Next: Bugs, Prev: Files, Up: Top
+
+Credits
+*******
+
+Authors
+=======
+
+ Originally created by Oliver Laumann, this latest version was
+produced by Wayne Davison, Juergen Weigert and Michael Schroeder.
+
+Contributors
+============
+
+ Ken Beal (kbeal@amber.ssd.csd.harris.com),
+ Rudolf Koenig (rfkoenig@informatik.uni-erlangen.de),
+ Toerless Eckert (eckert@informatik.uni-erlangen.de),
+ Wayne Davison (davison@borland.com),
+ Patrick Wolfe (pat@kai.com, kailand!pat),
+ Bart Schaefer (schaefer@cse.ogi.edu),
+ Nathan Glasser (nathan@brokaw.lcs.mit.edu),
+ Larry W. Virden (lvirden@cas.org),
+ Howard Chu (hyc@hanauma.jpl.nasa.gov),
+ Tim MacKenzie (tym@dibbler.cs.monash.edu.au),
+ Markku Jarvinen (mta@{cc,cs,ee}.tut.fi),
+ Marc Boucher (marc@CAM.ORG),
+ Doug Siebert (dsiebert@isca.uiowa.edu),
+ Ken Stillson (stillson@tsfsrv.mitre.org),
+ Ian Frechett (frechett@spot.Colorado.EDU),
+ Brian Koehmstedt (bpk@gnu.ai.mit.edu),
+ Don Smith (djs6015@ultb.isc.rit.edu),
+ Frank van der Linden (vdlinden@fwi.uva.nl),
+ Martin Schweikert (schweik@cpp.ob.open.de),
+ David Vrona (dave@sashimi.lcu.com),
+ E. Tye McQueen (tye%spillman.UUCP@uunet.uu.net),
+ Matthew Green (mrg@mame.mu.oz.au),
+ Christopher Williams (cgw@unt.edu),
+ Matt Mosley (mattm@access.digex.net),
+ Gregory Neil Shapiro (gshapiro@wpi.WPI.EDU),
+ Jason Merrill (jason@jarthur.Claremont.EDU).
+
+Version
+=======
+
+ This manual describes version 3.9.0 of the `screen' program. Its
+roots are a merge of a custom version 2.3PR7 by Wayne Davison and
+several enhancements to Oliver Laumann's version 2.0. Note that all
+versions numbered 2.x are copyright by Oliver Laumann.
+
+ See also *Note Availability::.
+
+
+File: screen.info, Node: Bugs, Next: Installation, Prev: Credits, Up: Top
+
+Bugs
+****
+
+ Just like any other significant piece of software, `screen' has a
+few bugs and missing features. Please send in a bug report if you have
+found a bug not mentioned here.
+
+* Menu:
+
+* Known Bugs:: Problems we know about.
+* Reporting Bugs:: How to contact the maintainers.
+* Availability:: Where to find the lastest screen version.
+
+
+File: screen.info, Node: Known Bugs, Next: Reporting Bugs, Up: Bugs
+
+Known Bugs
+==========
+
+ * `dm' (delete mode) and `xs' are not handled correctly (they are
+ ignored). `xn' is treated as a magic-margin indicator.
+
+ * `screen' has no clue about double-high or double-wide characters.
+ But this is the only area where `vttest' is allowed to fail.
+
+ * It is not possible to change the environment variable `$TERMCAP'
+ when reattaching under a different terminal type.
+
+ * The support of terminfo based systems is very limited. Adding extra
+ capabilities to `$TERMCAP' may not have any effects.
+
+ * `screen' does not make use of hardware tabs.
+
+ * `screen' must be installed setuid root on most systems in order to
+ be able to correctly change the owner of the tty device file for
+ each window. Special permission may also be required to write the
+ file `/etc/utmp'.
+
+ * Entries in `/etc/utmp' are not removed when `screen' is killed
+ with SIGKILL. This will cause some programs (like "w" or "rwho")
+ to advertise that a user is logged on who really isn't.
+
+ * `screen' may give a strange warning when your tty has no utmp
+ entry.
+
+ * When the modem line was hung up, `screen' may not automatically
+ detach (or quit) unless the device driver sends a HANGUP signal.
+ To detach such a `screen' session use the -D or -d command line
+ option.
+
+ * If a password is set, the command line options -d and -D still
+ detach a session without asking.
+
+ * Both `breaktype' and `defbreaktype' change the break generating
+ method used by all terminal devices. The first should change a
+ window specific setting, where the latter should change only the
+ default for new windows.
+
+ * When attaching to a multiuser session, the user's `.screenrc' file
+ is not sourced. Each users personal settings have to be included
+ in the `.screenrc' file from which the session is booted, or have
+ to be changed manually.
+
+ * A weird imagination is most useful to gain full advantage of all
+ the features.
+
+
File: screen.info, Node: Reporting Bugs, Next: Availability, Prev: Known Bugs, Up: Bugs
Reporting Bugs
@@ -30,11 +779,11 @@ Reporting Bugs
Include the version number of `Screen' which you are using. Also
include in your message the hardware and operating system, the compiler
used to compile, a description of the bug behavior, and the conditions
-that triggered the bug. Please recompile `screen' with the `-DDEBUG
--DTMPTEST' options enabled, reproduce the bug, and have a look at the
-debug output written to the directory `/tmp/debug'. If necessary quote
-suspect passages from the debug output and show the contents of your
-`config.h' if it matters.
+that triggered the bug. Please recompile `screen' with the `-DDEBUG'
+options enabled, reproduce the bug, and have a look at the debug output
+written to the directory `/tmp/debug'. If necessary quote suspect
+passages from the debug output and show the contents of your `config.h'
+if it matters.

File: screen.info, Node: Availability, Prev: Reporting Bugs, Up: Bugs
@@ -46,9 +795,10 @@ Availability
The latest official release of `screen' available via anonymous ftp
from `prep.ai.mit.edu', `nic.funet.fi' or any other `GNU' distribution
-site. The latest beta testing release of `screen' is available from
-`ftp.uni-erlangen.de (131.188.1.43)', in the directory
-`pub/utilities/screen'.
+site. The home site of `screen' is `ftp.uni-erlangen.de
+(131.188.3.71)', in the directory `pub/utilities/screen'. The
+subdirectory `private' contains the latest beta testing release. If
+you want to help, send a note to screen@uni-erlangen.de.

File: screen.info, Node: Installation, Next: Concept Index, Prev: Bugs, Up: Top
@@ -76,7 +826,7 @@ Socket Directory
compile-time. If `screen' is installed setuid root, then the
administrator should compile screen with an adequate (not NFS mounted)
`SOCKDIR'. If `screen' is not running setuid-root, the user can specify
-any mode 777 directory in the environment variable `$SCREENDIR'.
+any mode 700 directory in the environment variable `$SCREENDIR'.

File: screen.info, Node: Compiling Screen, Prev: Socket Directory, Up: Installation
@@ -126,6 +876,7 @@ Concept Index
* bug report: Reporting Bugs.
* bugs: Bugs.
* capabilities: Special Capabilities.
+* command character: Command Character.
* command line options: Invoking Screen.
* command summary: Command Summary.
* compiling screen: Compiling Screen.
@@ -133,6 +884,7 @@ Concept Index
* copy and paste: Copy and Paste.
* customization: Customization.
* environment: Environment.
+* escape character: Command Character.
* files: Files.
* flow control: Flow Control.
* input translation: Input Translation.
@@ -145,11 +897,14 @@ Concept Index
* multiuser session: Multiuser Session.
* options: Invoking Screen.
* overview: Overview.
+* regions: Regions.
* screenrc: Startup Files.
* scrollback: Copy.
* socket directory: Socket Directory.
+* string escapes: String Escapes.
* terminal capabilities: Special Capabilities.
* title: Naming Windows.
+* window types: Window Types.

File: screen.info, Node: Command Index, Next: Keystroke Index, Prev: Concept Index, Up: Top
@@ -164,7 +919,10 @@ Command Index
* acladd: Acladd.
* aclchg: Aclchg.
* acldel: Acldel.
+* aclgrp: Aclgrp.
+* aclumask: Umask.
* activity: Monitor.
+* addacl: Acladd.
* allpartial: Redisplay.
* at: At.
* autodetach: Detach.
@@ -173,19 +931,25 @@ Command Index
* bind: Bind.
* bindkey: Bindkey.
* break: Break.
+* breaktype: Break.
* bufferfile: Screen-Exchange.
* c1: Character Processing.
+* caption: Caption.
+* caption: Caption.
+* chacl: Aclchg.
* charset: Character Processing.
* chdir: Chdir.
* clear: Clear.
* colon: Colon.
* command: Command Character.
+* compacthist: Scrollback.
* console: Console.
* copy: Copy.
* copy_reg: Registers.
* crlf: Line Termination.
* debug: Debug.
* defautonuke: Autonuke.
+* defbreaktype: Break.
* defc1: Character Processing.
* defcharset: Character Processing.
* defescape: Command Character.
@@ -198,24 +962,33 @@ Command Index
* defmonitor: Monitor.
* defobuflimit: Obuflimit.
* defscrollback: Scrollback.
+* defshell: Shell.
+* defsilence: Silence.
+* defslowpaste: Paste.
* defwrap: Wrap.
* defwritelock: Writelock.
* defzombie: Zombie.
* detach: Detach.
* digraph: Digraph.
+* displays: Displays.
* dumptermcap: Dump Termcap.
* echo: echo.
* escape: Command Character.
* exec: Exec.
+* fit: Window Size.
* flow: Flow.
+* focus: Focus.
* gr: Character Processing.
* hardcopy: Hardcopy.
* hardcopydir: Hardcopy.
* hardcopy_append: Hardcopy.
* hardstatus: Hardware Status Line.
+* hardstatus: Hardware Status Line.
+* hardstatus: Hardware Status Line.
* height: Window Size.
* help: Help.
* history: History.
+* hstatus: Hardstatus.
* info: Info.
* ins_reg: Registers.
* kanji: Character Processing.
@@ -225,7 +998,11 @@ Command Index
* lockscreen: Lock.
* log: Log.
* logfile: Log.
+* logfile: Log.
* login: Login.
+* logtstamp: Log.
+* logtstamp: Log.
+* logtstamp: Log.
* mapdefault: Bindkey Control.
* mapnotnext: Bindkey Control.
* maptimeout: Bindkey Control.
@@ -237,8 +1014,10 @@ Command Index
* multiuser: Multiuser.
* nethack: Nethack.
* next: Next and Previous.
+* nonblock: Nonblock.
* number: Number.
* obuflimit: Obuflimit.
+* only: Only.
* other: Other Window.
* partial: Redisplay.
* password: Detach.
@@ -255,6 +1034,7 @@ Command Index
* readreg: Paste.
* redisplay: Redisplay.
* register: Registers.
+* remove: Remove.
* removebuf: Screen-Exchange.
* reset: Reset.
* screen: Screen Command.
@@ -269,8 +1049,10 @@ Command Index
* sleep: sleep.
* slowpaste: Paste.
* sorendition: Sorendition.
+* split: Split.
* startup_message: Startup Message.
* stuff: Registers.
+* su: Su.
* suspend: Suspend.
* term: Term.
* termcap: Termcap Syntax.
@@ -278,10 +1060,12 @@ Command Index
* terminfo: Termcap Syntax.
* time: Time.
* title: Title Command.
+* umask: Umask.
* unsetenv: Setenv.
* vbell: Bell.
* vbellwait: Bell.
* vbell_msg: Bell.
+* verbose: Verbose.
* version: Version.
* wall: Wall.
* width: Window Size.
@@ -308,6 +1092,7 @@ omitted from the key sequences, since it is the same for all bindings.
* ": Select.
* ': Select.
+* *: Displays.
* .: Dump Termcap.
* 0...9: Select.
* :: Colon.
@@ -316,8 +1101,8 @@ omitted from the key sequences, since it is the same for all bindings.
* >: Screen-Exchange.
* ?: Help.
* {: History.
-* a: Command Character.
* A: Title Command.
+* a: Command Character.
* c: Screen Command.
* C: Clear.
* C-a: Other Window.
@@ -346,29 +1131,34 @@ omitted from the key sequences, since it is the same for all bindings.
* D: Power Detach.
* d: Detach.
* ESC: Copy.
+* F: Window Size.
* f: Flow.
* H: Log.
* h: Hardcopy.
* i: Info.
* k: Kill.
-* L: Login.
* l: Redisplay.
+* L: Login.
* m: Last Message.
* M: Monitor.
* N: Number.
* n: Next and Previous.
* p: Next and Previous.
* q: XON/XOFF.
+* Q: Only.
* r: Wrap.
+* S: Split.
* s: XON/XOFF.
* SPC: Next and Previous.
* t: Time.
+* TAB: Focus.
* v: Version.
* w: Windows.
* W: Window Size.
* x: Lock.
-* Z: Reset.
+* X: Remove.
* z: Suspend.
+* Z: Reset.
* [: Copy.
* ]: Paste.
diff --git a/doc/screen.info-5 b/doc/screen.info-5
new file mode 100644
index 0000000..e45ab2b
--- /dev/null
+++ b/doc/screen.info-5
@@ -0,0 +1,545 @@
+This is Info file screen.info, produced by Makeinfo-1.55 from the input
+file ./screen.texinfo.
+
+ This file documents the `Screen' virtual terminal manager.
+
+ Copyright (c) 1993-1995 Free Software Foundation, Inc.
+
+ Permission is granted to make and distribute verbatim copies of this
+manual provided the copyright notice and this permission notice are
+preserved on all copies.
+
+ Permission is granted to copy and distribute modified versions of
+this manual under the conditions for verbatim copying, provided that
+the entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
+
+ Permission is granted to copy and distribute translations of this
+manual into another language, under the above conditions for modified
+versions, except that this permission notice may be stated in a
+translation approved by the Foundation.
+
+
+File: screen.info, Node: Credits, Next: Bugs, Prev: Files, Up: Top
+
+Credits
+*******
+
+ Authors
+ =======
+
+ Originally created by Oliver Laumann, this
+latest version was produced by Wayne Davison, Juergen Weigert and
+Michael Schroeder.
+
+ Contributors
+ ============
+
+ Ken Beal (kbeal@amber.ssd.csd.harris.com),
+ Rudolf Koenig (rfkoenig@informatik.uni-erlangen.de),
+ Toerless Eckert (eckert@informatik.uni-erlangen.de),
+ Wayne Davison (davison@borland.com),
+ Patrick Wolfe (pat@kai.com, kailand!pat),
+ Bart Schaefer (schaefer@cse.ogi.edu),
+ Nathan Glasser (nathan@brokaw.lcs.mit.edu),
+ Larry W. Virden (lvirden@cas.org),
+ Howard Chu (hyc@hanauma.jpl.nasa.gov),
+ Tim MacKenzie (tym@dibbler.cs.monash.edu.au),
+ Markku Jarvinen (mta@{cc,cs,ee}.tut.fi),
+ Marc Boucher (marc@CAM.ORG),
+ Doug Siebert (dsiebert@isca.uiowa.edu),
+ Ken Stillson (stillson@tsfsrv.mitre.org),
+ Ian Frechett (frechett@spot.Colorado.EDU),
+ Brian Koehmstedt (bpk@gnu.ai.mit.edu),
+ Don Smith (djs6015@ultb.isc.rit.edu),
+ Frank van der Linden (vdlinden@fwi.uva.nl),
+ Martin Schweikert (schweik@cpp.ob.open.de),
+ David Vrona (dave@sashimi.lcu.com),
+ E. Tye McQueen (tye%spillman.UUCP@uunet.uu.net),
+ Matthew Green (mrg@mame.mu.oz.au),
+ Christopher Williams (cgw@unt.edu),
+ Matt Mosley (mattm@access.digex.net),
+ Gregory Neil Shapiro (gshapiro@wpi.WPI.EDU),
+ Jason Merrill (jason@jarthur.Claremont.EDU).
+
+ Version
+ =======
+
+ This manual describes version 3.8.0 of the
+`screen' program. Its roots are a merge of a custom version 2.3PR7 by
+Wayne Davison and several enhancements to Oliver Laumann's version 2.0.
+Note that all versions numbered 2.x are copyright by Oliver Laumann.
+
+ See also *Note Availability::.
+
+
+File: screen.info, Node: Bugs, Next: Installation, Prev: Credits, Up: Top
+
+Bugs
+****
+
+ Just like any other significant piece of
+software, `screen' has a few bugs and missing features. Please send in
+a bug report if you have found a bug not mentioned here.
+
+ * Menu:
+
+ * Known Bugs:: Problems we know about.
+ * Reporting Bugs:: How to contact the maintainers.
+ * Availability:: Where to find the lastest screen version.
+
+
+File: screen.info, Node: Known Bugs, Next: Reporting Bugs, Up: Bugs
+
+Known Bugs
+==========
+
+ * `dm' (delete mode) and `xs' are not handled
+ correctly (they are ignored). `xn' is treated
+ as a magic-margin indicator.
+
+ * `screen' has no clue about double-high or
+ double-wide characters. But this is the only
+ area where `vttest' is allowed to fail.
+
+ * It is not possible to change the environment
+ variable `$TERMCAP' when reattaching under a
+ different terminal type.
+
+ * The support of terminfo based systems is very
+ limited. Adding extra capabilities to
+ `$TERMCAP' may not have any effects.
+
+ * `screen' does not make use of hardware tabs.
+
+ * `screen' must be installed setuid root in
+ order to be able to correctly change the owner
+ of the tty device file for each window.
+ Special permission may also be required to
+ write the file `/etc/utmp'.
+
+ * Entries in `/etc/utmp' are not removed when
+ `screen' is killed with SIGKILL. This will
+ cause some programs (like "w" or "rwho") to
+ advertise that a user is logged on who really
+ isn't.
+
+ * `screen' may give a strange warning when your
+ tty has no utmp entry.
+
+ * When the modem line was hung up, `screen' may
+ not automatically detach (or quit) unless the
+ device driver sends a HANGUP signal. To detach
+ such a `screen' session use the -D or -d
+ command line option.
+
+ * If a password is set, the command line options
+ -d and -D still detach a session without
+ asking.
+
+ * Read permission on windows is never checked
+ for. All users that can attach to the session
+ can read window contents.
+
+ * Both `breaktype' and `defbreaktype' change the
+ break generating method used by all terminal
+ devices. The first should change a window
+ specific setting, where the latter should
+ change only the default for new windows.
+
+ * When attaching to a multiuser session, the
+ user's `.screenrc' file is not sourced. Each
+ users personal settings have to be included in
+ the `.screenrc' file from which the session is
+ booted, or have to be changed manually.
+
+ * A weird imagination is most useful to gain
+ full advantage of all the features.
+
+
+File: screen.info, Node: Reporting Bugs, Next: Availability, Prev: Known Bugs, Up: Bugs
+
+Reporting Bugs
+==============
+
+ If you find a bug in `Screen', please send
+electronic mail to `screen@uni-erlangen.de', and also to
+`bug-gnu-utils@prep.ai.mit.edu'. Include the version number of
+`Screen' which you are using. Also include in your message the
+hardware and operating system, the compiler used to compile, a
+description of the bug behavior, and the conditions that triggered the
+bug. Please recompile `screen' with the `-DDEBUG -DTMPTEST' options
+enabled, reproduce the bug, and have a look at the debug output written
+to the directory `/tmp/debug'. If necessary quote suspect passages from
+the debug output and show the contents of your `config.h' if it matters.
+
+
+File: screen.info, Node: Availability, Prev: Reporting Bugs, Up: Bugs
+
+Availability
+============
+
+ `Screen' is available under the `GNU' copyleft.
+
+ The latest official release of `screen'
+available via anonymous ftp from `prep.ai.mit.edu', `nic.funet.fi' or
+any other `GNU' distribution site. The home site of `screen' is
+`ftp.uni-erlangen.de (131.188.1.43)', in the directory
+`pub/utilities/screen'. The subdirectory `private' contains the latest
+beta testing release. If you want to help, send a note to
+screen@uni-erlangen.de.
+
+
+File: screen.info, Node: Installation, Next: Concept Index, Prev: Bugs, Up: Top
+
+Installation
+************
+
+ Since `screen' uses pseudo-ttys, the select
+system call, and UNIX-domain sockets/named pipes, it will not run under
+a system that does not include these features of 4.2 and 4.3 BSD UNIX.
+
+ * Menu:
+
+ * Socket Directory:: Where screen stores its handle.
+ * Compiling Screen::
+
+
+File: screen.info, Node: Socket Directory, Next: Compiling Screen, Up: Installation
+
+Socket Directory
+================
+
+ The socket directory defaults either to
+`$HOME/.screen' or simply to `/tmp/screens' or preferably to
+`/usr/local/screens' chosen at compile-time. If `screen' is installed
+setuid root, then the administrator should compile screen with an
+adequate (not NFS mounted) `SOCKDIR'. If `screen' is not running
+setuid-root, the user can specify any mode 700 directory in the
+environment variable `$SCREENDIR'.
+
+
+File: screen.info, Node: Compiling Screen, Prev: Socket Directory, Up: Installation
+
+Compiling Screen
+================
+
+ To compile and install screen:
+
+ The `screen' package comes with a `GNU Autoconf'
+configuration script. Before you compile the package run
+
+ `sh ./configure'
+
+ This will create a `config.h' and `Makefile' for
+your machine. If `configure' fails for some reason, then look at the
+examples and comments found in the `Makefile.in' and `config.h.in'
+templates. Rename `config.status' to `config.status.MACHINE' when you
+want to keep configuration data for multiple architectures. Running `sh
+./config.status.MACHINE' recreates your configuration significantly
+faster than rerunning `configure'.
+ Read through the "User Configuration" section of
+`config.h', and verify that it suits your needs. A comment near the
+top of this section explains why it's best to install screen setuid to
+root. Check for the place for the global `screenrc'-file and for the
+socket directory.
+ Check the compiler used in `Makefile', the prefix
+path where to install `screen'. Then run
+
+ `make'
+
+ If `make' fails to produce one of the files
+`term.h', `comm.h' or `tty.c', then use `FILENAME.X.dist' instead. For
+additional information about installation of `screen' refer to the file
+`INSTALLATION', coming with this package.
+
+
+File: screen.info, Node: Concept Index, Next: Command Index, Prev: Installation, Up: Top
+
+Concept Index
+*************
+
+ * Menu:
+
+ * .screenrc: Startup Files.
+ * availability: Availability.
+ * binding: Key Binding.
+ * bug report: Reporting Bugs.
+ * bugs: Bugs.
+ * capabilities: Special Capabilities.
+ * Command Character: Command Character.
+ * command line options: Invoking Screen.
+ * command summary: Command Summary.
+ * compiling screen: Compiling Screen.
+ * control sequences: Control Sequences.
+ * copy and paste: Copy and Paste.
+ * customization: Customization.
+ * environment: Environment.
+ * Escape Character: Command Character.
+ * files: Files.
+ * flow control: Flow Control.
+ * input translation: Input Translation.
+ * installation: Installation.
+ * introduction: Getting Started.
+ * invoking: Invoking Screen.
+ * key binding: Key Binding.
+ * marking: Copy.
+ * message line: Message Line.
+ * multiuser session: Multiuser Session.
+ * options: Invoking Screen.
+ * overview: Overview.
+ * regions: Regions.
+ * screenrc: Startup Files.
+ * scrollback: Copy.
+ * socket directory: Socket Directory.
+ * terminal capabilities: Special Capabilities.
+ * title: Naming Windows.
+
+
+File: screen.info, Node: Command Index, Next: Keystroke Index, Prev: Concept Index, Up: Top
+
+Command Index
+*************
+
+ This is a list of all the commands supported by
+`screen'.
+
+ * Menu:
+
+ * acladd: Acladd.
+ * aclchg: Aclchg.
+ * acldel: Acldel.
+ * aclgrp: Aclgrp.
+ * aclumask: Umask.
+ * activity: Monitor.
+ * addacl: Acladd.
+ * allpartial: Redisplay.
+ * at: At.
+ * autodetach: Detach.
+ * autonuke: Autonuke.
+ * bell_msg: Bell.
+ * bind: Bind.
+ * bindkey: Bindkey.
+ * break: Break.
+ * breaktype: Break.
+ * bufferfile: Screen-Exchange.
+ * c1: Character Processing.
+ * chacl: Aclchg.
+ * charset: Character Processing.
+ * chdir: Chdir.
+ * clear: Clear.
+ * colon: Colon.
+ * command: Command Character.
+ * console: Console.
+ * copy: Copy.
+ * copy_reg: Registers.
+ * crlf: Line Termination.
+ * debug: Debug.
+ * defautonuke: Autonuke.
+ * defbreaktype: Break.
+ * defc1: Character Processing.
+ * defcharset: Character Processing.
+ * defescape: Command Character.
+ * defflow: Flow.
+ * defgr: Character Processing.
+ * defhstatus: Hardstatus.
+ * defkanji: Character Processing.
+ * deflogin: Login.
+ * defmode: Mode.
+ * defmonitor: Monitor.
+ * defobuflimit: Obuflimit.
+ * defscrollback: Scrollback.
+ * defshell: Shell.
+ * defsilence: Silence.
+ * defslowpaste: Paste.
+ * defwrap: Wrap.
+ * defwritelock: Writelock.
+ * defzombie: Zombie.
+ * detach: Detach.
+ * digraph: Digraph.
+ * displays: Displays.
+ * dumptermcap: Dump Termcap.
+ * echo: echo.
+ * escape: Command Character.
+ * exec: Exec.
+ * flow: Flow.
+ * focus: Focus.
+ * gr: Character Processing.
+ * hardcopy: Hardcopy.
+ * hardcopydir: Hardcopy.
+ * hardcopy_append: Hardcopy.
+ * hardstatus: Hardware Status Line.
+ * height: Window Size.
+ * help: Help.
+ * history: History.
+ * info: Info.
+ * ins_reg: Registers.
+ * kanji: Character Processing.
+ * kill: Kill.
+ * lastmsg: Last Message.
+ * license: License.
+ * lockscreen: Lock.
+ * log: Log.
+ * logfile: Log.
+ * login: Login.
+ * mapdefault: Bindkey Control.
+ * mapnotnext: Bindkey Control.
+ * maptimeout: Bindkey Control.
+ * markkeys: Copy Mode Keys.
+ * meta: Command Character.
+ * monitor: Monitor.
+ * msgminwait: Message Wait.
+ * msgwait: Message Wait.
+ * multiuser: Multiuser.
+ * nethack: Nethack.
+ * next: Next and Previous.
+ * nonblock: Nonblock.
+ * number: Number.
+ * obuflimit: Obuflimit.
+ * one: One.
+ * other: Other Window.
+ * partial: Redisplay.
+ * password: Detach.
+ * paste: Paste.
+ * pastefont: Paste.
+ * pow_break: Break.
+ * pow_detach: Power Detach.
+ * pow_detach_msg: Power Detach.
+ * preselect: Select.
+ * prev: Next and Previous.
+ * printcmd: Printcmd.
+ * process: Registers.
+ * quit: Quit.
+ * readbuf: Screen-Exchange.
+ * readreg: Paste.
+ * redisplay: Redisplay.
+ * register: Registers.
+ * remove: Remove.
+ * removebuf: Screen-Exchange.
+ * reset: Reset.
+ * screen: Screen Command.
+ * scrollback: Scrollback.
+ * select: Select.
+ * sessionname: Session Name.
+ * setenv: Setenv.
+ * shell: Shell.
+ * shelltitle: Shell.
+ * silence: Silence.
+ * silencewait: Silence.
+ * sleep: sleep.
+ * slowpaste: Paste.
+ * sorendition: Sorendition.
+ * split: Split.
+ * startup_message: Startup Message.
+ * stuff: Registers.
+ * su: Su.
+ * suspend: Suspend.
+ * term: Term.
+ * termcap: Termcap Syntax.
+ * termcapinfo: Termcap Syntax.
+ * terminfo: Termcap Syntax.
+ * time: Time.
+ * title: Title Command.
+ * umask: Umask.
+ * unsetenv: Setenv.
+ * vbell: Bell.
+ * vbellwait: Bell.
+ * vbell_msg: Bell.
+ * verbose: Verbose.
+ * version: Version.
+ * wall: Wall.
+ * width: Window Size.
+ * windows: Windows.
+ * wrap: Wrap.
+ * writebuf: Screen-Exchange.
+ * writelock: Writelock.
+ * xoff: XON/XOFF.
+ * xon: XON/XOFF.
+ * zombie: Zombie.
+
+
+File: screen.info, Node: Keystroke Index, Prev: Command Index, Up: Top
+
+Keystroke Index
+***************
+
+ This is a list of the default key bindings.
+
+ The leading escape character (*note Command
+Character::.) has been omitted from the key sequences, since it is the
+same for all bindings.
+
+ * Menu:
+
+ * ": Select.
+ * ': Select.
+ * *: Displays.
+ * .: Dump Termcap.
+ * 0...9: Select.
+ * :: Colon.
+ * <: Screen-Exchange.
+ * =: Screen-Exchange.
+ * >: Screen-Exchange.
+ * ?: Help.
+ * {: History.
+ * A: Title Command.
+ * a: Command Character.
+ * C: Clear.
+ * c: Screen Command.
+ * C-a: Other Window.
+ * C-c: Screen Command.
+ * C-d: Detach.
+ * C-f: Flow.
+ * C-g: Bell.
+ * C-h: Hardcopy.
+ * C-i: Info.
+ * C-k: Kill.
+ * C-l: Redisplay.
+ * C-m: Last Message.
+ * C-n: Next and Previous.
+ * C-p: Next and Previous.
+ * C-q: XON/XOFF.
+ * C-r: Wrap.
+ * C-s: XON/XOFF.
+ * C-t: Time.
+ * C-v: Digraph.
+ * C-w: Windows.
+ * C-x: Lock.
+ * C-z: Suspend.
+ * C-[: Copy.
+ * C-\: Quit.
+ * C-]: Paste.
+ * d: Detach.
+ * D: Power Detach.
+ * ESC: Copy.
+ * F: Focus.
+ * f: Flow.
+ * h: Hardcopy.
+ * H: Log.
+ * i: Info.
+ * k: Kill.
+ * L: Login.
+ * l: Redisplay.
+ * M: Monitor.
+ * m: Last Message.
+ * n: Next and Previous.
+ * N: Number.
+ * p: Next and Previous.
+ * q: XON/XOFF.
+ * Q: One.
+ * r: Wrap.
+ * s: XON/XOFF.
+ * S: Split.
+ * SPC: Next and Previous.
+ * t: Time.
+ * v: Version.
+ * W: Window Size.
+ * w: Windows.
+ * x: Lock.
+ * X: Remove.
+ * z: Suspend.
+ * Z: Reset.
+ * [: Copy.
+ * ]: Paste.
+
+
diff --git a/doc/screen.texinfo b/doc/screen.texinfo
index a500018..1267d94 100644
--- a/doc/screen.texinfo
+++ b/doc/screen.texinfo
@@ -1,11 +1,12 @@
\input texinfo @c -*-texinfo-*-
@c %**start of header
+@c vi:set wm=5
@setfilename screen.info
@settitle Screen User's Manual
@finalout
@setchapternewpage odd
@c %**end of header
-@set version 3.7.0
+@set version 3.9.0
@c For examples, use a literal escape in info.
@ifinfo
@@ -18,7 +19,7 @@
@ifinfo
This file documents the @code{Screen} virtual terminal manager.
-Copyright (c) 1993 Free Software Foundation, Inc.
+Copyright (c) 1993-1995 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
@@ -46,11 +47,11 @@ by the Foundation.
@title Screen
@subtitle The virtual terminal manager
@subtitle for Version @value{version}
-@subtitle Oct 1995
+@subtitle Jul 1999
@page
@vskip 0pt plus 1filll
-Copyright @copyright{} 1993 Free Software Foundation, Inc.
+Copyright @copyright{} 1993-1995 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
@@ -83,8 +84,9 @@ This file documents the @code{Screen} virtual terminal manager, version
* Commands:: List all of the commands.
* New Window:: Running a program in a new window.
* Selecting:: Selecting a window to display.
-* Session Management:: Suspending or detaching a session.
-* Window Settings:: titles, logging, etc.
+* Session Management:: Suspend/detach, grant access, connect sessions.
+* Regions:: Split-screen commands.
+* Window Settings:: Titles, logging, etc.
* Virtual Terminal:: Controlling the @code{screen} VT100 emulation.
* Copy and Paste:: Exchanging text between windows and sessions.
* Subprocess Execution:: I/O filtering with @code{exec}.
@@ -95,6 +97,7 @@ This file documents the @code{Screen} virtual terminal manager, version
* Logging:: Keeping a record of your session.
* Startup:: Functions only useful at @code{screen} startup.
* Miscellaneous:: Various other commands.
+* String Escapes:: Inserting current information into strings
* Environment:: Environment variables used by @code{screen}.
* Files:: Files used by @code{screen}.
* Credits:: Who's who of @code{screen}.
@@ -112,7 +115,7 @@ This file documents the @code{Screen} virtual terminal manager, version
Screen is a full-screen window manager that multiplexes a physical
terminal between several processes, typically interactive shells. Each
virtual terminal provides the functions of the DEC VT100 terminal and,
-in addition, several control functions from the ANSI X3.64 (ISO 6429)
+in addition, several control functions from the ISO 6429 (ECMA 48, ANSI X3.64)
and ISO 2022 standards (e.g. insert/delete line and support for multiple
character sets). There is a scrollback history buffer for each virtual
terminal and a copy-and-paste mechanism that allows the user to move
@@ -127,7 +130,7 @@ windows, turn output logging on and off, copy text between windows, view
the scrollback history, switch between windows, etc. All windows run
their programs completely independent of each other. Programs continue
to run when their window is currently not visible and even when the
-whole screen session is detached from the users terminal.
+whole screen session is detached from the user's terminal.
When a program terminates, @code{screen} (per default) kills the window
that contained it. If this window was in the foreground, the display
@@ -143,6 +146,11 @@ Character}) and all the key bindings (@pxref{Key Binding}) can be fully
customized to be anything you like, though they are always two
characters in length.
+@code{Screen} does not understand the prefix @kbd{C-} to mean control.
+Please use the caret notation (@kbd{^A} instead of @kbd{C-a}) as arguments
+to e.g. the @code{escape} command or the @code{-e} option. @code{Screen}
+will also print out control characters in caret notation.
+
The standard way to create a new window is to type @kbd{C-a c}. This
creates a new window running a shell and switches to that window
immediately, regardless of the state of the process running in the
@@ -236,9 +244,28 @@ Do not start @code{screen}, but instead detach a @code{screen} session
running elsewhere (@pxref{Detach}). @samp{-d} has the same effect as
typing @kbd{C-a d} from the controlling terminal for the session.
@samp{-D} is the equivalent to the power detach key. If no session can
-be detached, this option is ignored. The combination @code{screen -D
--r} can be used to log out from a remote terminal and transport the
-session running there to your current terminal.
+be detached, this option is ignored. In combination with the
+@code{-r}/@code{-R} option more powerful effects can be achieved:
+
+@table @code
+@item -d -r
+Reattach a session and if necessary detach it first.
+@item -d -R
+Reattach a session and if necessary detach or even create it first.
+@item -d -RR
+Reattach a session and if necessary detach or create it.
+Use the first session if more than one session is available.
+@item -D -r
+Reattach a session. If necessary detach and logout remotely first.
+@item -D -R
+Attach here and now. In detail this means: If a session is running,
+then reattach. If necessary detach and logout remotely first. If it
+was not running create it and notify the user.
+This is the author's favorite.
+@item -D -RR
+Attach here and now. Whatever that means, just do it.
+@end table
+
@emph{Note}: It is a good idea to check the status of your sessions
with @code{screen -list} before using this option.
@@ -251,7 +278,7 @@ sets the default command caracter. In a multiuser session all users
added will start off with this command character. But when attaching
to an already running session, this option only changes the command
character of the attaching user.
-This option is equivalent to the commands @code{defescape} or
+This option is equivalent to the commands @code{defescape} or
@code{escape} respectively. (@pxref{Command Character}).
@item -f
@@ -276,15 +303,21 @@ Control}). Its use is discouraged.
Turn login mode on or off (for @file{/etc/utmp} updating). This option
is equivalent to the @code{deflogin} command (@pxref{Login}).
-@item -ls
-@itemx -list
+@item -ls [@var{match}]
+@itemx -list [@var{match}]
Do not start @code{screen}, but instead print a list of session
identification strings (usually of the form @var{pid.tty.host};
@pxref{Session Name}). Sessions marked @samp{detached} can be resumed
with @code{screen -r}. Those marked @samp{attached} are running and
-have a controlling terminal. Sessions marked as @samp{dead} should be
-thoroughly checked and removed. Ask your system administrator if you are
-not sure why they died. Remove sessions with the @samp{-wipe} option.
+have a controlling terminal. If the session runs in multiuser mode,
+it is marked @samp{multi}. Sessions marked as @samp{unreachable} either
+live on a different host or are dead.
+An unreachable session is considered dead, when its name matches either the
+name of the local host, or the specified parameter, if any.
+See the @code{-r} flag for a description how to construct matches.
+Sessions marked as @samp{dead} should be thoroughly checked and removed.
+Ask your system administrator if you are not sure.
+Remove sessions with the @samp{-wipe} option.
@item -L
Tell @code{screen} that your auto-margin terminal allows programs to
@@ -296,24 +329,46 @@ scrolling. This can also be set in your @file{.screenrc} by specifying
Tell @code{screen} to ignore the @code{$STY} environment variable. When
this option is used, a new session will always be created, regardless of
whether @code{screen} is being called from within another @code{screen}
-session or not.
+session or not. This flag has a special meaning in connection
+with the @samp{-d} option:
+@table @code
+@item -m -d
+Start @code{screen} in @emph{detached} mode. This creates a new
+session but doesn't attach to it. This is useful for system startup
+scripts.
+@item -m -D
+This also starts @code{screen} in @emph{detached} mode, but doesn't fork
+a new process. The command exits if the session terminates.
+@end table
+
+@item -q
+Suppress printing of error messages. In combination with @samp{-ls} the exit
+value is set as follows: 9 indicates a directory without sessions. 10
+indicates a directory with running but not attachable sessions. 11 (or more)
+indicates 1 (or more) usable sessions.
+In combination with @samp{-r} the exit value is as follows: 10 indicates that
+there is no session to resume. 12 (or more) indicates that there are 2 (or
+more) sessions to resume and you should specify which one to choose.
+In all other cases @samp{-q} has no effect.
@item -r [@var{pid.sessionname}]
@itemx -r @var{sessionowner/[pid.sessionname]}
Resume a detached @code{screen} session. No other options (except
-@samp{-d} or @samp{-D}) may be specified, though the session name
+combinations with @samp{-d} or @samp{-D}) may be specified, though
+the session name
(@pxref{Session Name}) may be needed to distinguish between multiple
detached @code{screen} sessions.
-The second form is used to connect to another users screen session which
-runs in multi-user mode. This indicates that screen should look for
-sessions in another users directory. This requires setuid-root.
+The second form is used to connect to another user's screen session which
+runs in multiuser mode. This indicates that screen should look for
+sessions in another user's directory. This requires setuid-root.
@item -R
Resume the first appropriate detached @code{screen} session. If
successful, all other command-line options are ignored. If no detached
session exists, start a new session using the specified options, just as
if @samp{-R} had not been specified. This option is set by default if
-screen is run as a login-shell.
+screen is run as a login-shell. For combinations with the
+@samp{-D}/@samp{-d} option see there.
@item -s @var{program}
Set the default shell to be @var{program}. By default, @code{screen}
@@ -336,9 +391,12 @@ This option is equivalent to the @code{shelltitle} command
@item -v
Print the version number.
-@item -wipe
+@item -wipe [@var{match}]
List available screens like @code{screen -ls}, but remove destroyed
-sessions instead of marking them as @samp{dead}.
+sessions instead of marking them as @samp{dead}.
+An unreachable session is considered dead, when its name matches either
+the name of the local host, or the explicitly given parameter, if any.
+See the @code{-r} flag for a description how to construct matches.
@item -x
Attach to a session which is already attached elsewhere (multi-display
@@ -452,13 +510,20 @@ The following table shows the default key bindings:
Prompt for a window identifier and switch.
@xref{Selecting}.
-@item @kbd{C-a 0@dots{}9}
-(select 0@dots{}select 9)@*
-Switch to window number 0@dots{}9. @xref{Selecting}.
+@item @kbd{C-a 0@dots{}9, -}
+(select 0@dots{}select 9, select -)@*
+Switch to window number 0@dots{}9, or the blank window.
+@xref{Selecting}.
+
+@item @kbd{C-a @key{Tab}}
+(focus)@*
+Switch the input focus to the next region. @xref{Regions}.
@item @kbd{C-a C-a}
(other)@*
-Toggle to the window displayed previously. @xref{Selecting}.
+Toggle to the window displayed previously. If this window does no
+longer exist, @code{other} has the same effect as @code{next}.
+@xref{Selecting}.
@item @kbd{C-a a}
(meta)@*
@@ -471,7 +536,7 @@ Allow the user to enter a title for the current window.
@xref{Naming Windows}.
@item @kbd{C-a b}
-itemx @kbd{C-a C-b}
+@itemx @kbd{C-a C-b}
(break)@*
Send a break to the tty.
@xref{Break}.
@@ -505,6 +570,10 @@ Detach and logout. @xref{Power Detach}.
(flow)@*
Cycle flow among @samp{on}, @samp{off} or @samp{auto}. @xref{Flow}.
+@item @kbd{C-a F}
+(fit)@*
+Resize the window to the current region size. @xref{Window Size}.
+
@item @kbd{C-a C-g}
(vbell)@*
Toggle visual bell mode. @xref{Bell}.
@@ -571,6 +640,10 @@ Switch to the previous window (opposite of @kbd{C-a n}).
(xon)@*
Send a ^Q (ASCII XON) to the current window. @xref{XON/XOFF}.
+@item @kbd{C-a Q}
+(only)@*
+Delete all regions but the current one. @xref{Regions}.
+
@item @kbd{C-a r}
@itemx @kbd{C-a C-r}
(wrap)@*
@@ -582,6 +655,10 @@ automatic margins on or off). @xref{Wrap}.
(xoff)@*
Send a ^S (ASCII XOFF) to the current window. @xref{XON/XOFF}.
+@item @kbd{C-a S}
+(split)@*
+Split the current region into two new ones. @xref{Regions}.
+
@item @kbd{C-a t}
@itemx @kbd{C-a C-t}
(time)@*
@@ -609,6 +686,10 @@ Toggle between 80 and 132 columns. @xref{Window Size}.
(lockscreen)@*
Lock your terminal. @xref{Lock}.
+@item @kbd{C-a X}
+(remove)@*
+Kill the current region. @xref{Regions}.
+
@item @kbd{C-a z}
@itemx @kbd{C-a C-z}
(suspend)@*
@@ -648,6 +729,7 @@ Write the contents of the paste buffer to the stdin queue of the
current window. @xref{Paste}.
@item @kbd{C-a @{}
+@itemx @kbd{C-a @}}
(history)@*
Copy and paste a previous (command) line. @xref{History}.
@@ -672,6 +754,10 @@ Start/stop monitoring the current window for inactivity. @xref{Silence},
@item @kbd{C-a ,}
(license)@*
Show the copyright page.
+
+@item @kbd{C-a *}
+(displays)@*
+Show the listing of attached displays.
@end table
@node Command Summary, , Default Key Bindings, Commands
@@ -685,8 +771,14 @@ Allow other users in this session. @xref{Multiuser Session}.
Change a user's permissions. @xref{Multiuser Session}.
@item acldel @var{username}
Disallow other user in this session. @xref{Multiuser Session}.
+@item aclgrp @var{usrname [groupname]}
+Inherit permissions granted to a group leader. @xref{Multiuser Session}.
+@item aclumask @var{[users]+\-bits ...}
+Predefine access to new windows. @xref{Umask}.
@item activity @var{message}
Set the activity notification message. @xref{Monitor}.
+@item addacl @var{usernames}
+Synonym to @code{acladd}. @xref{Multiuser Session}.
@item allpartial @var{state}
Set all windows to partial refresh. @xref{Redisplay}.
@item at @var{[ident][@kbd{#}@var{|}@kbd{*}@var{|}@kbd{%}] command [args]}
@@ -695,7 +787,7 @@ Execute a command at other displays or windows. @xref{At}.
Automatically detach the session on SIGHUP. @xref{Detach}.
@item autonuke @var{state}
Enable a clear screen to discard unwritten output. @xref{Autonuke}.
-@item bell_msg @var{message}
+@item bell_msg @var{[message]}
Set the bell notification message. @xref{Bell}.
@item bind @var{key [command [args]]}
Bind a command to a key. @xref{Bind}.
@@ -703,10 +795,16 @@ Bind a command to a key. @xref{Bind}.
Bind a string to a series of keystrokes. @xref{Bindkey}.
@item break @var{[duration]}
Send a break signal to the current window. @xref{Break}.
+@item breaktype @var{[tcsendbreak | TCSBRK | TIOCSBRK]}
+Specify how to generate breaks. @xref{Break}.
@item bufferfile @var{[exchange-file]}
Select a file for screen-exchange. @xref{Screen-Exchange}.
@item c1 @var{[state]}
Change c1 code processing. @xref{Character Processing}.
+@item caption @var{mode} @var{[string]}
+Change caption mode and string. @xref{Regions}.
+@item chacl @var{usernames permbits list}
+Synonym to @code{aclchg}. @xref{Multiuser Session}.
@item charset @var{set}
Change character set slot designation. @xref{Character Processing}.
@item chdir @var{[directory]}
@@ -717,6 +815,8 @@ Clear the window screen. @xref{Clear}.
Enter a @code{screen} command. @xref{Colon}.
@item command
Simulate the screen escape key. @xref{Command Character}.
+@item compacthist @var{[state]}
+Selects compaction of trailing empty lines. @xref{Scrollback}.
@item console @var{[state]}
Grab or ungrab console output. @xref{Console}.
@item copy
@@ -729,6 +829,8 @@ Select line break behavior for copying. @xref{Line Termination}.
Suppress/allow debugging output. @xref{Debug}.
@item defautonuke @var{state}
Select default autonuke behavior. @xref{Autonuke}.
+@item defbreaktype @var{[tcsendbreak | TCSBRK | TIOCSBRK]}
+Specify the default for generating breaks. @xref{Break}.
@item defc1 @var{state}
Select default c1 processing behavior. @xref{Character Processing}.
@item defcharset @var{[set]}
@@ -753,16 +855,24 @@ Select default activity monitoring behavior. @xref{Monitor}.
Select default output buffer limit. @xref{Obuflimit}.
@item defscrollback @var{num}
Set default lines of scrollback. @xref{Scrollback}.
+@item defshell @var{command}
+Set the default program for new windows. @xref{Shell}.
+@item defsilence @var{state}
+Select default idle monitoring behavior. @xref{Silence}.
+@item defslowpaste @var{msec}
+Select the default inter-character timeout when pasting. @xref{Paste}.
@item defwrap @var{state}
Set default line-wrapping behavior. @xref{Wrap}.
@item defwritelock @var{on|off|auto}
-Set default writelock behavior. @xref{Multiuser}.
+Set default writelock behavior. @xref{Multiuser Session}.
@item defzombie @var{[keys]}
Keep dead windows. @xref{Zombie}.
@item detach
Disconnect @code{screen} from the terminal. @xref{Detach}.
@item digraph
Enter digraph sequence. @xref{Digraph}.
+@item displays
+List currently active user interfaces. @xref{Displays}.
@item dumptermcap
Write the window's termcap entry to a file. @xref{Dump Termcap}.
@item echo [-n] @var{message}
@@ -771,8 +881,12 @@ Display a message on startup. @xref{Startup}.
Set the command and @code{meta} characters. @xref{Command Character}.
@item exec @var{[[fdpat] command [args ...]]}
Run a subprocess (filter). @xref{Exec}.
+@item fit
+Change window size to current display size. @xref{Window Size}.
@item flow @var{[fstate]}
Set flow control behavior. @xref{Flow}.
+@item focus
+Move focus to next region. @xref{Regions}.
@item gr @var{[state]}
Change GR charset processing. @xref{Character Processing}.
@item hardcopy
@@ -789,6 +903,8 @@ Set display height. @xref{Window Size}.
Display current key bindings. @xref{Help}.
@item history
Find previous command beginning @dots{}. @xref{History}.
+@item hstatus @var{status}
+Change the window's hardstatus line. @xref{Hardstatus}.
@item info
Display terminal settings. @xref{Info}.
@item ins_reg @var{[key]}
@@ -809,12 +925,14 @@ Log all output in the current window. @xref{Log}.
Place where to collect logfiles. @xref{Log}.
@item login @var{[state]}
Log the window in @file{/etc/utmp}. @xref{Login}.
+@item logtstamp @var{[state]}
+Configure logfile time-stamps. @xref{Log}.
@item mapdefault
Use only the default mapping table for the next keystroke. @xref{Bindkey Control}.
@item mapnotnext
Don't try to do keymapping on the next keystroke. @xref{Bindkey Control}.
@item maptimeout @var{timo}
-Set the intercharacter timeout used for keymapping. @xref{Bindkey Control}.
+Set the inter-character timeout used for keymapping. @xref{Bindkey Control}.
@item markkeys @var{string}
Rebind keys in copy mode. @xref{Copy Mode Keys}.
@item meta
@@ -831,10 +949,14 @@ Go into single or multi user mode. @xref{Multiuser Session}.
Use @code{nethack}-like error messages. @xref{Nethack}.
@item next
Switch to the next window. @xref{Selecting}.
+@item nonblock @var{state}
+Disable flow control to the current display. @xref{Nonblock}.
@item number @var{[n]}
Change/display the current window's number. @xref{Number}.
@item obuflimit @var{[limit]}
Select output buffer limit. @xref{Obuflimit}.
+@item only
+Kill all other regions. @xref{Regions}.
@item other
Switch to the window you were in last. @xref{Selecting}.
@item partial @var{state}
@@ -867,6 +989,8 @@ Load a register from paste buffer or file. @xref{Registers}.
Redisplay the current window. @xref{Redisplay}.
@item register @var{key string}
Store a string to a register. @xref{Registers}.
+@item remove
+Kill current region. @xref{Regions}.
@item removebuf
Delete the screen-exchange file. @xref{Screen-Exchange}.
@item reset
@@ -895,10 +1019,14 @@ Pause during startup. @xref{Startup}.
Slow down pasting in windows. @xref{Paste}.
@item sorendition @var{[attr [color]]}
Change text highlighting. @xref{Sorendition}.
+@item split
+Split region into two parts. @xref{Regions}.
@item startup_message @var{state}
Display copyright notice on startup. @xref{Startup}.
@item stuff @var{string}
Stuff a string in the input buffer of a window. @xref{Paste}.
+@item su @var{[username [password [password2]]]}
+Identify a user. @xref{Multiuser Session}.
@item suspend
Put session in background. @xref{Suspend}.
@item term @var{term}
@@ -913,6 +1041,8 @@ Ditto, for both systems. @xref{Termcap Syntax}.
Display time and load average. @xref{Time}.
@item title @var{[windowtitle]}
Set the name of the current window. @xref{Title Command}.
+@item umask @var{[users]+\-bits ...}
+Synonym to @code{aclumask}. @xref{Umask}.
@item unsetenv @var{var}
Unset environment variable for new windows. @xref{Setenv}.
@item vbell @var{[state]}
@@ -948,9 +1078,9 @@ Keep dead windows. @xref{Zombie}.
This section describes the commands for creating a new window for
running programs. When a new window is created, the first available
-number from the range 0@dots{}9 is assigned to it. There can be no more
-than 10 windows active at any one time unless @code{screen} was compiled
-with a higher MAXWIN setting.
+number from the range 0@dots{}9 is assigned to it.
+The number of windows is limited at compile-time by the MAXWIN
+configuration parameter.
@menu
* Chdir:: Change the working directory for new windows.
@@ -958,6 +1088,7 @@ with a higher MAXWIN setting.
* Setenv:: Set environment variables for new windows.
* Shell:: Parameters for shell windows.
* Term:: Set the terminal type for new windows.
+* Window Types:: Creating different types of windows.
@end menu
@node Chdir, Screen Command, , New Window
@@ -986,18 +1117,19 @@ affect all the windows you create interactively.
(@kbd{C-a c}, @kbd{C-a C-c})@*
Establish a new window. The flow-control options (@samp{-f}, @samp{-fn}
and @samp{-fa}), title option (@samp{-t}), login options
-(@samp{-l} and @samp{-ln}) , terminal type option (@samp{-T @var{term}})
-and scrollback option (@samp{-h @var{num}}) may be specified for each
-command. If an optional number @var{n} in the range 0@dots{}9 is given,
+(@samp{-l} and @samp{-ln}) , terminal type option (@samp{-T @var{term}}),
+the all-capability-flag (@samp{-a}) and scrollback option
+(@samp{-h @var{num}}) may be specified with each command.
+The option (@samp{-M}) turns monitoring on for this window.
+The option (@samp{-L}) turns output logging on for this window.
+If an optional number @var{n} in the range 0@dots{}9 is given,
the window number @var{n} is assigned to the newly created window (or,
if this number is already in-use, the next available number). If a
command is specified after @code{screen}, this command (with the given
arguments) is started in the window; otherwise, a shell is created.
-If a tty (character special device) name (e.g. @samp{/dev/ttyS0})
-is specified as cmd, then the window is directly connected to this
-device. This is similar to the cmd @samp{kermit -l /dev/ttyS0 -c} but
-saves resources and is more efficient.
+Screen has built in some functionality of @samp{cu} and @samp{telnet}.
+@xref{Window Types}.
@end deffn
Thus, if your @file{.screenrc} contains the lines
@@ -1005,13 +1137,14 @@ Thus, if your @file{.screenrc} contains the lines
@example
# example for .screenrc:
screen 1
-screen -fn -t foobar 2 telnet foobar
+screen -fn -t foobar 2 -L telnet foobar
@end example
@noindent
@code{screen} creates a shell window (in window #1) and a window with a
TELNET connection to the machine foobar (with no flow-control using the
-title @samp{foobar} in window #2). If you do not include any
+title @samp{foobar} in window #2) and will write a logfile @samp{screenlog.2}
+of the telnet session. If you do not include any
@code{screen} commands in your @file{.screenrc} file, then @code{screen}
defaults to creating a single shell window, number zero. When the
initialization is completed, @code{screen} switches to the last window
@@ -1036,12 +1169,15 @@ Unset an environment variable.
@node Shell, Term, Setenv, New Window
@section Shell
@deffn Command shell command
+@deffnx Command defshell command
(none)@*
Set the command to be used to create a new shell. This overrides the
value of the environment variable @code{$SHELL}. This is useful if
you'd like to run a tty-enhancer which is expecting to execute the
program specified in @code{$SHELL}. If the command begins with
a @samp{-} character, the shell will be started as a login-shell.
+
+@code{defshell} is currently a synonym to the @code{shell} command.
@end deffn
@deffn Command shelltitle title
@@ -1050,13 +1186,13 @@ Set the title for all shells created during startup or by the C-a C-c
command. @xref{Naming Windows}, for details about what titles are.
@end deffn
-@node Term, , Shell, New Window
+@node Term, Window Types , Shell, New Window
@section Term
@deffn Command term term
(none)@*
In each window @code{screen} opens, it sets the @code{$TERM}
-variable to @samp{screen} by default, unless no description for
-@samp{screen} is installed in the local termcap or terminfo data base.
+variable to @code{screen} by default, unless no description for
+@code{screen} is installed in the local termcap or terminfo data base.
In that case it pretends that the terminal emulator is @samp{vt100}.
This won't do much harm, as @code{screen} is VT100/ANSI compatible. The
use of the @code{term} command is discouraged for non-default purpose.
@@ -1066,6 +1202,106 @@ the next @code{screen rlogin othermachine} command. Use the command
and resetting the default.
@end deffn
+@node Window Types, , Term, New Window
+@section Window Types
+@cindex window types
+Screen provides three different window types. New windows are created
+with @code{screen}'s @samp{screen} command (@pxref{Screen Command}).
+The first parameter to the @samp{screen} command defines which
+type of window is created. The different window types are all
+special cases of the normal type. They have been added in order
+to allow @code{screen} to be used efficiently as a console
+with 100 or more windows.
+@itemize @bullet
+@item
+The normal window contains a shell (default, if no parameter is given)
+or any other system command that could be executed from a shell.
+(e.g. @samp{slogin}, etc...).
+
+@item
+If a tty (character special device) name (e.g. @samp{/dev/ttya})
+is specified as the first parameter, then the window is directly
+connected to this device.
+This window type is similar to @samp{screen cu -l /dev/ttya}.
+Read and write access is required on the device node,
+an exclusive open is attempted on the node to mark the connection line
+as busy.
+An optional parameter is allowed consisting of a comma separated
+list of flags in the notation used by @samp{stty(1)}:
+@table @code
+@item <baud_rate>
+Usually 300, 1200, 9600 or 19200. This affects transmission as well as
+receive speed.
+@item cs8 or cs7
+Specify the transmission of eight (or seven) bits per byte.
+@item ixon or -ixon
+Enables (or disables) software flow-control (CTRL-S/CTRL-Q) for sending
+data.
+@item ixoff or -ixoff
+Enables (or disables) software flow-control for receiving data.
+@item istrip or -istrip
+Clear (or keep) the eight bit in each received byte.
+@end table
+
+You may want to specify as many of these options as applicable.
+Unspecified options cause the terminal driver to make up the parameter
+values of the connection. These values are system dependant and may be
+in defaults or values saved from a previous connection.
+
+For tty windows, the @code{info} command shows some of the modem
+control lines in the status line.
+These may include @samp{RTS}, @samp{CTS}, @samp{DTR}, @samp{CD} and
+more. This depends rather on on the available @code{ioctl()}'s and system
+header files than on the physical capabilities of the serial board.
+The name of a logical low (inactive) signal is preceded by an
+exclamation mark (@samp{!}), otherwise the signal is logical high (active).
+Unsupported but shown signals are usually shown low.
+When the @code{CLOCAL} status bit is true, the whole set of modem signals is
+placed inside curly braces (@samp{@{} and @samp{@}}).
+When the @code{CRTSCTS} or @code{TIOCSOFTCAR} bit is true, the signals
+@samp{CTS} or @samp{CD} are shown in parenthesis, respectively.
+
+For tty windows, the command @code{break} causes the Data transmission
+line (TxD) to go low for a specified period of time. This is expected
+to be interpreted as break signal on the other side.
+No data is sent and no modem control line is changed when a
+@code{break} is issued.
+
+@item
+If the first parameter is @code{//telnet}, the second parameter is
+expected to be a host name, and an optional third parameter may specify
+a TCP port number (default decimal 23). Screen will connect to a
+server listening on the remote host and use the telnet protocol to
+communicate with that server.
+
+For telnet windows, the command @code{info} shows details about
+the connection in square brackets (@samp{[} and @samp{]}) at the end of
+the status line.
+@table @code
+@item b
+BINARY. The connection is in binary mode.
+@item e
+ECHO. Local echo is disabled.
+@item c
+SGA. The connection is in `character mode' (default: `line mode').
+@item t
+TTYPE. The terminal type has been requested by the remote host. Screen
+sends the name @code{screen} unless instructed otherwise (see also the
+command @samp{term}).
+@item w
+NAWS. The remote site is notified about window size changes.
+@item f
+LFLOW. The remote host will send flow control information.
+(Ignored at the moment.)
+@end table
+Additional flags for debugging are @samp{x}, @samp{t} and @samp{n}
+(XDISPLOC, TSPEED and NEWENV).
+
+For telnet windows, the command @code{break} sends the telnet code
+@code{IAC BREAK} (decimal 243) to the remote host.
+
+@end itemize
+
@node Selecting, Session Management, New Window, Top
@chapter Selecting a Window
@@ -1076,7 +1312,7 @@ in that order by default (@pxref{New Window}).
@menu
* Next and Previous:: Forward or back one window.
* Other Window:: Switch back and forth between two windows.
-* Select:: Specify a particular window.
+* Select:: Switch to a window (and to one after @code{kill}).
@end menu
@node Next and Previous, Other Window, , Selecting
@@ -1125,9 +1361,10 @@ is assigned to this window.
Thus, the first window can be activated by @code{select 0}; there
can be no more than 10 windows present simultaneously (unless screen is
compiled with a higher MAXWIN setting).
+The special command @code{select -} switches to a blank window.
@end deffn
-@node Session Management, Window Settings, Selecting, Top
+@node Session Management, Regions, Selecting, Top
@chapter Session Management Commands
Perhaps the most useful feature of @code{screen} is the way it allows
@@ -1234,8 +1471,12 @@ described here.
* Acladd:: Enable a specific user.
* Aclchg:: Change a users permissions.
* Acldel:: Disable a specific user.
+* Aclgrp:: Grant a user permissions to other users.
+* Displays:: List all active users at their displays.
+* Umask:: Predefine access to new windows.
* Wall:: Write a message to all users.
* Writelock:: Grant exclusive window access.
+* Su:: Substitute user.
@end menu
@node Multiuser, Acladd, , Multiuser Session
@@ -1251,22 +1492,26 @@ single-user. In multi-user mode the commands @code{acladd}, @code{aclchg} and
@node Acladd, Aclchg, Multiuser, Multiuser Session
@subsection Acladd
@deffn Command acladd @var{usernames}
+@deffnx Command addacl @var{usernames}
(none)@*
Enable users to fully access this screen session. @var{Usernames} can be one
-user or a comma seperated list of users. This command enables to attach to
+user or a comma separated list of users. This command enables to attach to
the @code{screen} session and performs the equivalent of
@code{aclchg @var{usernames} +rwx "#?"}. To add a user with restricted access,
-use the @code{aclchg} command below. Multi-user mode only.
+use the @code{aclchg} command below.
+@code{Addacl} is a synonym to @code{acladd}.
+Multi-user mode only.
@end deffn
@node Aclchg, Acldel, Acladd, Multiuser Session
@subsection Aclchg
@deffn Command aclchg @var{usernames permbits list}
+@deffnx Command chacl @var{usernames permbits list}
(none)@*
-Change permissions for a comma seperated list of users.
+Change permissions for a comma separated list of users.
Permission bits are represented as @samp{r}, @samp{w} and @samp{x}.
Prefixing @samp{+} grants the permission, @samp{-} removes it. The third
-parameter is a comma seperated list of commands or windows (specified either
+parameter is a comma separated list of commands or windows (specified either
by number or title). The special list @samp{#} refers to all windows, @samp{?}
to all commands. If @var{usernames} consists of a single @samp{*}, all
known users is affected.
@@ -1274,16 +1519,17 @@ A command can be executed when the user has the @samp{x} bit for it. The user
can type input to a window when he has its @samp{w} bit set and no other
user obtains a writelock for this window. Other bits are currently ignored.
To withdraw the writelock from another user in e.g. window 2:
-@samp{aclchg @var{username} -w+w 2}. To allow readonly access
+@samp{aclchg @var{username} -w+w 2}. To allow read-only access
to the session: @samp{aclchg @var{username} -w "#"}. As soon as a user's name
is known to screen, he can attach to the session and (per default) has full
permissions for all command and windows. Execution permission for the acl
commands, @code{at} and others should also be removed or the user may be able
to regain write permission.
+@code{Chacl} is a synonym to @code{aclchg}.
Multi-user mode only.
@end deffn
-@node Acldel, Wall, Aclchg, Multiuser Session
+@node Acldel, Aclgrp, Aclchg, Multiuser Session
@subsection Acldel
@deffn Command acldel @var{username}
(none)@*
@@ -1292,7 +1538,51 @@ user's displays are detached from the session. He cannot attach again.
Multi-user mode only.
@end deffn
-@node Wall, Writelock, Acldel, Multiuser Session
+@node Aclgrp, Displays, Acldel, Multiuser Session
+@subsection Aclgrp
+@deffn Command aclgrp @var{username [groupname]}
+(none)@*
+Creates groups of users that share common access rights. The
+name of the group is the username of the group leader. Each
+member of the group inherits the permissions that are
+granted to the group leader. That means, if a user fails an
+access check, another check is made for the group leader.
+A user is removed from all groups the special value @samp{none}
+is used for @var{groupname}. If the second parameter is omitted
+all groups the user is in are listed.
+@end deffn
+
+@node Displays, Umask, Aclgrp, Multiuser Session
+@subsection Displays
+@kindex *
+@deffn Command displays
+(@kbd{C-a *})@*
+Shows a tabular listing of all currently connected user
+front-ends (displays). This is most useful for multiuser
+sessions.
+@end deffn
+
+@node Umask, Wall, Displays, Multiuser Session
+@subsection aclumask
+@deffn Command aclumask @var{[[users]+bits |[users]-bits .... ]}
+@deffnx Command umask @var{[[users]+bits |[users]-bits .... ]}
+(none)@*
+This specifies the access other users have to windows that
+will be created by the caller of the command. @var{Users} may be no,
+one or a comma separated list of known usernames. If no users are
+specified, a list of all currently known users is assumed.
+@var{Bits} is any combination of access control bits allowed
+defined with the @code{aclchg} command. The special username @samp{?}
+predefines the access that not yet known users will be
+granted to any window initially. The special username @samp{??}
+predefines the access that not yet known users are granted
+to any command. Rights of the special username nobody cannot
+be changed (see the @code{su} command).
+@code{Umask} is a synonym to @code{aclumask}.
+@end deffn
+
+
+@node Wall, Writelock, Umask, Multiuser Session
@subsection Wall
@deffn Command wall @var{message}
(none)@*
@@ -1300,7 +1590,7 @@ Write a message to all displays. The message will appear in the terminal's
status line.
@end deffn
-@node Writelock, , Wall, Multiuser Session
+@node Writelock, Su , Wall, Multiuser Session
@subsection Writelock
@deffn Command writelock @var{on|off|auto}
(none)@*
@@ -1316,14 +1606,31 @@ to other windows.
@deffn Command defwritelock @var{on|off|auto}
(none)@*
-Sets the default writelock behaviour for new windows. Initially all windows
-will be created with automatic writelocks.
+Sets the default writelock behavior for new windows. Initially all windows
+will be created with no writelocks.
@end deffn
+@node Su, , Writelock, Multiuser Session
+@subsection Su
+@deffn Command su @var{[username [password [password2]]]}
+(none)@*
+Substitute the user of a display. The command prompts for
+all parameters that are omitted. If passwords are specified
+as parameters, they have to be specified un-crypted. The
+first password is matched against the systems passwd database,
+the second password is matched against the @code{screen}
+password as set with the commands @code{acladd} or @code{password}.
+@code{Su} may be useful for the @code{screen} administrator to test
+multiuser setups.
+When the identification fails, the user has
+access to the commands available for user @samp{nobody}. These are
+@code{detach}, @code{license}, @code{version}, @code{help} and
+@code{displays}.
+@end deffn
@node Session Name, Suspend, Multiuser Session, Session Management
@section Session Name
-@deffn Command sessionname [name]
+@deffn Command sessionname @var{[name]}
(none)@*
Rename the current session. Note that for @code{screen -list} the name
shows up with the process-id prepended. If the argument @var{name} is
@@ -1356,7 +1663,77 @@ bind command (as in @code{bind "^\"}) to remove a key binding
(@pxref{Key Binding}).
@end deffn
-@node Window Settings, Virtual Terminal, Session Management, Top
+@node Regions, Window Settings, Session Management, Top
+@chapter Regions
+@cindex regions
+Screen has the ability to display more than one window on the
+user's display. This is done by splitting the screen in regions,
+which can contain different windows.
+
+@menu
+* Split:: Split a region into two
+* Focus:: Change to the next region
+* Only:: Delete all other regions
+* Remove:: Delete the current region
+* Caption:: Control the window's caption
+@end menu
+
+@node Split, Focus, , Regions
+@section Split
+@kindex S
+@deffn Command split
+(@kbd{C-a S})@*
+Split the current region into two new ones. All regions on the
+display are resized to make room for the new region. The blank
+window is displayed on the new region.
+@end deffn
+
+@node Focus, Only, Split, Regions
+@section Focus
+@kindex TAB
+@deffn Command focus
+(@kbd{C-a @key{Tab}})@*
+Move the input focus to the next region. This is done in a cyclic
+way so that the top region is selected after the bottom one.
+@end deffn
+
+@node Only, Remove, Focus, Regions
+@section Only
+@kindex Q
+@deffn Command only
+(@kbd{C-a Q})@*
+Kill all regions but the current one.
+@end deffn
+
+@node Remove, Caption, Only, Regions
+@section Remove
+@kindex X
+@deffn Command remove
+(@kbd{C-a X})@*
+Kill the current region. This is a no-op if there is only one region.
+@end deffn
+
+@node Caption, , Remove, Regions
+@section Caption
+@deffn Command caption @code{always}|@code{splitonly} [string]
+@deffnx Command caption @code{string} [string]
+(none)@*
+This command controls the display of the window captions. Normally
+a caption is only used if more than one window is shown on the
+display (split screen mode). But if the type is set to
+@code{always}, @code{screen} shows a caption
+even if only one window is displayed. The default
+is @samp{splitonly}.
+
+The second form changes the text used for the caption. You can use
+all string escapes (@xref{String Escapes}). @code{Screen} uses
+a default of @samp{%3n %t}.
+
+You can mix both forms by providing the string as an additional
+argument.
+@end deffn
+
+@node Window Settings, Virtual Terminal, Regions, Top
@chapter Window Settings
These commands control the way @code{screen} treats individual windows
@@ -1533,7 +1910,7 @@ current window's title to @samp{(unknown)} (C-a u).
@section Console
@deffn Command console @var{[state]}
(none)@*
-Grabs or ungrabs the machines console output to a window. When the argument
+Grabs or un-grabs the machines console output to a window. When the argument
is omitted the current state is displayed.
@emph{Note}: Only the owner of @file{/dev/console} can grab the console
output. This command is only available if the host supports the ioctl
@@ -1551,8 +1928,9 @@ Kill the current window.@*
If there is an @code{exec} command running (@pxref{Exec}) then it is killed.
Otherwise the process (e.g. shell) running in the window receives a
@code{HANGUP} condition,
-the window structure is removed and screen switches to the previously
-displayed window. When the last window is destroyed, @code{screen} exits.
+the window structure is removed and screen (your display) switches to another
+window. When the last window is destroyed, @code{screen} exits.
+After a kill screen switches to the previously displayed window.
@*
@emph{Caution}: @code{emacs} users may find themselves killing their
@code{emacs} session when trying to delete the current line. For this
@@ -1590,7 +1968,7 @@ login off} will map these keys to be @kbd{C-a I} and @kbd{C-a O}
The mode of each newly allocated pseudo-tty is set to @var{mode}.
@var{mode} is an octal number as used by chmod(1). Defaults to 0622 for
windows which are logged in, 0600 for others (e.g. when @code{-ln} was
-specified for creation. @xref{Screen Command}).
+specified for creation. @pxref{Screen Command}).
@end deffn
@node Monitor, Windows, Mode, Window Settings
@@ -1603,11 +1981,11 @@ When any activity occurs in a background window that is being monitored,
notification message can be redefined by means of the @code{activity}
command. Each occurrence of @samp{%} in @var{message} is replaced by
the number of the window in which activity has occurred, and each
-occurrence of @samp{~} is replaced by the definition for bell in your
+occurrence of @samp{^G} is replaced by the definition for bell in your
termcap (usually an audible bell). The default message is
@example
-'Activity in window %'
+'Activity in window %n'
@end example
Note that monitoring is off for all windows by default, but can be altered
@@ -1639,14 +2017,19 @@ the window-status display (@pxref{Windows}). Monitoring defaults to
(@kbd{C-a w}, @kbd{C-a C-w})@*
Uses the message line to display a list of all the windows. Each
window is listed by number with the name of the program running in the
-window (or its title); the current window is marked with a @samp{*};
-the previous window is marked with a @samp{-}; all the windows that are
-logged in are marked with a @samp{$} (@pxref{Login}); a background
-window that has received a bell is marked with a @samp{!}; a background
-window that is being monitored and has had activity occur is marked with
-an @samp{@@} (@pxref{Monitor}); a window which has output logging turned
-on is marked with @samp{(L)}; windows occupied by other users are marked with
-@samp{&}; windows in the zombie state are marked with @samp{Z}.
+window (or its title).
+
+The current window is marked with a @samp{*};
+the previous window is marked with a @samp{-};
+all the windows that are logged in are marked with a @samp{$} (@pxref{Login});
+a background window that has received a bell is marked with a @samp{!};
+a background window that is being monitored and has had activity occur is
+marked with an @samp{@@} (@pxref{Monitor});
+a window which has output logging turned on is marked with @samp{(L)};
+windows occupied by other users are marked with @samp{&}
+or @samp{&&} if the window is shared by other users;
+windows in the zombie state are marked with @samp{Z}.
+
If this list is too long to fit on the terminal's status line only the
portion around the current window is displayed.
@end deffn
@@ -1656,14 +2039,13 @@ portion around the current window is displayed.
@code{Screen} maintains a hardstatus line for every window. If a window
gets selected, the display's hardstatus will be updated to match
-the window's hardstatus line. If the display has no hardstatus
-the line will be displayed as a standard screen message.
+the window's hardstatus line.
The hardstatus line can be changed with the ANSI Application
Program Command (APC): @samp{ESC_<string>ESC\}. As a convenience
for xterm users the sequence @samp{ESC]0..2;<string>^G} is
also accepted.
-@deffn Command defhstatus
+@deffn Command defhstatus [status]
(none)@*
The hardstatus line that all new windows will get is set to
@var{status}.
@@ -1671,18 +2053,23 @@ This command is useful to make the hardstatus of every window
display the window number or title or the like. @var{status}
may contain the same directives as in the window messages, but
the directive escape character is @samp{^E} (octal 005) instead
-of @samp{%}. This was done to make a misinterpretion of program
+of @samp{%}. This was done to make a misinterpretation of program
generated hardstatus lines impossible.
If the parameter @var{status}
is omitted, the current default string is displayed.
Per default the hardstatus line of new windows is empty.
@end deffn
+@deffn Command hstatus status
+(none)@*
+Changes the current window's hardstatus line to @var{status}.
+@end deffn
+
@node Virtual Terminal, Copy and Paste, Window Settings, Top
@chapter Virtual Terminal
Each window in a @code{screen} session emulates a VT100 terminal, with
-some extra functions added. The VT100 emulator is hardcoded, no other
+some extra functions added. The VT100 emulator is hard-coded, no other
terminal types can be emulated.
The commands described here modify the terminal emulation.
@@ -1746,7 +2133,7 @@ ESC ) Pcs (A) Designate character set as G1
ESC * Pcs (A) Designate character set as G2
ESC + Pcs (A) Designate character set as G3
ESC [ Pn ; Pn H Direct Cursor Addressing
-ESC [ Pn ; Pn f Direct Cursor Addressing
+ESC [ Pn ; Pn f same as above
ESC [ Pn J Erase in Display
Pn = None or 0 From Cursor to End of Screen
1 From Beginning of Screen to Cursor
@@ -1759,6 +2146,11 @@ ESC [ Pn A Cursor Up
ESC [ Pn B Cursor Down
ESC [ Pn C Cursor Right
ESC [ Pn D Cursor Left
+ESC [ Pn E Cursor next line
+ESC [ Pn F Cursor previous line
+ESC [ Pn G Cursor horizontal position
+ESC [ Pn ` same as above
+ESC [ Pn d Cursor vertical position
ESC [ Ps ;...; Ps m Select Graphic Rendition
Ps = None or 0 Default Rendition
1 Bold
@@ -1796,6 +2188,7 @@ ESC [ Pn @@ (A) Insert Character
ESC [ Pn P (A) Delete Character
ESC [ Pn S Scroll Scrolling Region Up
ESC [ Pn T Scroll Scrolling Region Down
+ESC [ Pn ^ same as above
ESC [ Ps ;...; Ps h Set Mode
ESC [ Ps ;...; Ps l Reset Mode
Ps = 4 (A) Insert Mode
@@ -1920,7 +2313,7 @@ two characters typed are looked up in a builtin table and the
resulting character is inserted in the input stream. For example,
if the user enters @samp{a"}, an a-umlaut will be inserted. If the
first character entered is a 0 (zero), @code{screen}
-will treat the following charcters (up to three) as an octal
+will treat the following characters (up to three) as an octal
number instead. The optional argument @var{preset}
is treated as user input, thus one can create an "umlaut" key.
For example the command @samp{bindkey ^K digraph '"'} enables the user
@@ -1934,30 +2327,31 @@ to generate an a-umlaut by typing @samp{CTRL-K a}.
(none)@*
When a bell character is sent to a background window, @code{screen}
displays a notification in the message line. The notification message
-can be re-defined by means of the @code{bell} command. Each occurrence
+can be re-defined by this command. Each occurrence
of @samp{%} in @var{message} is replaced by the number of the window to
-which a bell has been sent, and each occurrence of @samp{~} is replaced
+which a bell has been sent, and each occurrence of @samp{^G} is replaced
by the definition for bell in your termcap (usually an audible bell).
The default message is
@example
-'Bell in window %'
+'Bell in window %n'
@end example
An empty message can be supplied to the @code{bell_msg} command to suppress
output of a message line (@code{bell_msg ""}).
+Without parameter, the current message is shown.
@end deffn
@kindex C-g
@deffn Command vbell [state]
(@kbd{C-a C-g})@*
-Sets or toggles the visual bell setting for the current window. If
+Sets or toggles the visual bell setting for the current window. If
@code{vbell} is switched to @samp{on}, but your
terminal does not support a visual bell, the visual bell message is
-displayed in the status line when the bell character is received.
-Visual bell support of a terminal is
-defined by the termcap variable @code{vb}. @xref{Bell, , Visual Bell,
-termcap, The Termcap Manual}, for more information on visual bells.
+displayed in the status line when the bell character is received.
+Visual bell support of a terminal is
+defined by the termcap variable @code{vb}. @xref{Bell, , Visual Bell,
+termcap, The Termcap Manual}, for more information on visual bells.
The equivalent terminfo capability is @code{flash}.
Per default, @code{vbell} is @samp{off}, thus the audible bell is used.
@@ -1995,14 +2389,36 @@ Clears the screen and saves its contents to the scrollback buffer.
Uses the message line to display some information about the current
window: the cursor position in the form @samp{(@var{column},@var{row})}
starting with @samp{(1,1)}, the terminal width and height plus the size
-of the scrollback buffer in lines, like in @samp{(80,24)+50}, various
-flag settings (flow-control, insert mode, origin mode, wrap mode,
-application-keypad mode, output logging, activity monitoring, and redraw
-(@samp{+} indicates enabled, @samp{-} not)), the currently active
+of the scrollback buffer in lines, like in @samp{(80,24)+50},
+the current state of window XON/XOFF flow control is shown like this
+(see also @xref{Flow Control}):
+@example
+ +flow automatic flow control, currently on.
+ -flow automatic flow control, currently off.
+ +(+)flow flow control enabled. Agrees with automatic control.
+ -(+)flow flow control disabled. Disagrees with automatic control.
+ +(-)flow flow control enabled. Disagrees with automatic control.
+ -(-)flow flow control disabled. Agrees with automatic control.
+@end example
+
+The current line wrap setting (@samp{+wrap} indicates enabled, @samp{-wrap}
+not) is also shown. The flags @samp{ins}, @samp{org}, @samp{app}, @samp{log},
+@samp{mon} and @samp{nored} are displayed when the window is in insert mode,
+origin mode, application-keypad mode, has output logging,
+insert mode, origin mode, application-keypad mode, output logging,
+activity monitoring or partial redraw enabled.
+
+The currently active
character set (@samp{G0}, @samp{G1}, @samp{G2}, or @samp{G3}), and in
square brackets the terminal character sets that are currently
-designated as @samp{G0} through @samp{G3}. For system information use
-@code{time}.
+designated as @samp{G0} through @samp{G3}.
+Additional modes depending on the type of the window are displayed at
+the end of the status line (@pxref{Window Types}).
+
+If the state machine of the terminal emulator is in a non-default state,
+the info line is started with a string identifying the current state.
+
+For system information use @code{time}.
@end deffn
@node Redisplay, Wrap, Info, Virtual Terminal
@@ -2015,7 +2431,7 @@ This affects all windows and is useful for slow terminal lines. The
previous setting of full/partial refresh for each window is restored
with @code{allpartial off}. This is a global flag that immediately takes effect
on all windows overriding the @code{partial} settings. It does not change the
-default redraw behaviour of newly created windows.
+default redraw behavior of newly created windows.
@end deffn
@deffn Command partial state
@@ -2083,6 +2499,14 @@ Set the display height to a specified number of lines. When no
argument is given it toggles between 24 and 42 lines display.
@end deffn
+@kindex F
+@deffn Command fit
+(@kbd{C-a F})@*
+Change the window size to the size of the current region. This
+command is needed because screen doesn't adapt the window size
+automatically if the window is displayed more than once.
+@end deffn
+
@node Character Processing, ,Window Size, Virtual Terminal
@section Character Processing
@@ -2099,7 +2523,7 @@ c1 positions may want to turn this off.
@end deffn
@deffn Command gr [state]
(none)@*
-Turn GR charset switching on/off. Whenever screens sees an input
+Turn GR charset switching on/off. Whenever screen sees an input
char with an 8th bit set, it will use the charset stored in the
GR slot and print the character with the 8th bit stripped. The
default (see also @samp{defgr}) is not to process GR switching because
@@ -2221,9 +2645,16 @@ for new windows is changed. Defaults to 100.
@deffn Command scrollback num
(none)@*
-Set the size of the scrollback buffer for new windows to @var{num}
-lines. The default scrollback is 100 lines. Use @kbd{C-a i} to view
-the current setting.
+Set the size of the scrollback buffer for the current window to
+@var{num} lines. The default scrollback is 100 lines. Use @kbd{C-a i}
+to view the current setting.
+@end deffn
+
+@deffn Command compacthist [state]
+(none)@*
+This tells screen weather to suppress trailing blank lines when
+scrolling up text into the history buffer. Turn compacting @samp{on}
+to hold more useful lines in your scrollback buffer.
@end deffn
@node Copy Mode Keys, Movement, Scrollback, Copy
@@ -2238,7 +2669,7 @@ users.
If your terminal sends characters, that cause you to abort copy mode,
then this command may help by binding these characters to do nothing.
The no-op character is `@' and is used like this: @code{markkeys @@=L=H}
-if you do not want to use the `H' or `L' commands any longer.
+if you do not want to use the `H' or `L' commands any longer.
As shown in this example, multiple keys can be assigned to one function
in a single statement.
@end deffn
@@ -2349,10 +2780,11 @@ the paste buffer. Now try:@*
and notice the difference in the amount of text copied.
@noindent
-@kbd{J} joins lines. It toggles between 3 modes: lines separated by a
-newline character (012), lines glued seamless, or lines separated by a
-single space. Note that you can prepend the newline character with
-a carriage return character, by issuing a @code{set crlf on}.
+@kbd{J} joins lines. It toggles between 4 modes: lines separated by a
+newline character (012), lines glued seamless, lines separated by a single
+space or comma separated lines. Note that you can prepend the newline
+character with a carriage return character, by issuing a @code{set crlf
+on}.
@noindent
@kbd{v} is for all the @code{vi} users who use @code{:set numbers} - it
@@ -2419,13 +2851,16 @@ multi character fonts like kanji.
@end deffn
@deffn Command slowpaste msec
+@deffnx Command defslowpaste msec
(none)@*
-Define the speed text is inserted by the @code{paste} command.
-If the slowpaste value is nonzero text is written character by character.
+Define the speed text is inserted in the current window by the @code{paste}
+command. If the slowpaste value is nonzero text is written character by
+character.
@code{screen} will pause for @var{msec} milliseconds after each write
to allow the application to process the input. only use @code{slowpaste} if
your underlying system exposes flow control problems while pasting large
-amounts of text.
+amounts of text.
+@code{defslowpaste} specifies the default for new windows.
@end deffn
@deffn Command readreg [register [filename]]
@@ -2551,22 +2986,25 @@ Use with care!
(none)@*
Run a unix subprocess (specified by an executable path @var{newcommand} and
its optional arguments) in the current window. The flow of data between
-newcommand's stdin/stdout/stderr, the process already running (shell) and
+newcommands stdin/stdout/stderr, the process originally started (let us call it
+"application-process") and
screen itself (window) is controlled by the filedescriptor pattern @var{fdpat}.
This pattern is basically a three character sequence representing stdin, stdout
and stderr of newcommand. A dot (@code{.}) connects the file descriptor
to screen. An exclamation mark (@code{!}) causes the file descriptor to be
-connected to the already running process. A colon (@code{:}) combines both.
+connected to the application-process. A colon (@code{:}) combines both.
@*
-User input will go to newcommand unless newcommand requests the old process'
+User input will go to newcommand unless newcommand receives the
+application-process'
output (@var{fdpat}s first character is @samp{!} or @samp{:}) or a pipe symbol
(@samp{|}) is added to the end of @var{fdpat}.
@*
Invoking @code{exec} without arguments shows name and arguments of the currently
-running subprocess in this window.
+running subprocess in this window. Only one subprocess can be running per
+window.
@*
When a subprocess is running the @code{kill} command will affect it instead of
-the window's process.
+the windows process. Only one subprocess a time can be running in each window.
@*
Refer to the postscript file @file{doc/fdpat.ps} for a confusing
illustration of all 21 possible combinations. Each drawing shows the digits
@@ -2606,6 +3044,7 @@ Examples:
@item !/bin/sh
@itemx exec /bin/sh
@itemx exec ... /bin/sh
+All of the above are equivalent.
Creates another shell in the same window, while the original shell is still
running. Output of both shells is displayed and user input is sent to the new
@file{/bin/sh}.
@@ -2613,12 +3052,14 @@ running. Output of both shells is displayed and user input is sent to the new
@item !!stty 19200
@itemx exec!stty 19200
@itemx exec !.. stty 19200
-Set the speed of the window's tty. If your stty command operates on stdout, then
-add another @samp{!}. This is a useful command, when a screen window is
-directly connected to a serial line that needs to be configured.
+All of the above are equivalent.
+Set the speed of the window's tty. If your stty command operates on stdout,
+then add another @samp{!}. This is a useful command, when a screen window
+is directly connected to a serial line that needs to be configured.
@item |less
@itemx exec !..| less
+Both are equivalent.
This adds a pager to the window output. The special character @samp{|} is
needed to give the user control over the pager although it gets its input from
the window's process. This works, because @samp{less} listens on stderr
@@ -2688,17 +3129,20 @@ would bind the space key to the command that displays a list of windows
available as @kbd{C-a space}), bind @kbd{C-f} to the command
``create a window with a TELNET connection to foobar'', and bind
@key{ESC} to the command that creates an non-login window with title
-@samp{root} in slot #9, with a super-user shell and a scrollbackbuffer
+@samp{root} in slot #9, with a superuser shell and a scrollback buffer
of 1000 lines.
@node Command Character, Help, Bind Examples, Key Binding
+@cindex escape character
+@cindex command character
@section Command Character
@deffn Command escape xy
(none)@*
Set the command character to @var{x} and the character generating a
-literal command character to @var{y} (just like with the @samp{-e}
-option). Each argument is either a single character, a two-character
+literal command character (by triggering the @code{meta} command)
+to @var{y} (similar to the @samp{-e} option).
+Each argument is either a single character, a two-character
sequence of the form @samp{^x} (meaning @kbd{C-x}), a backslash followed
by an octal number (specifying the ASCII code of the character), or a
backslash followed by a second character, such as @samp{\^} or
@@ -2708,10 +3152,10 @@ one of the authors.
@deffn Command defescape xy
(none)@*
-Set the default command characters. This is equivalent to the command
-@code{escape} except that it is useful for multiuser sessions only.
+Set the default command characters. This is equivalent to the command
+@code{escape} except that it is useful for multiuser sessions only.
In a multiuser session
-@code{escape} changes the command character of the calling user, where
+@code{escape} changes the command character of the calling user, where
@code{defescape} changes the default command characters for users that
will be added later.
@end deffn
@@ -2771,12 +3215,12 @@ Such keys have two entries in the translation table. You can
select the application mode entry by specifying the @samp{-a}
option.
-The @samp{-t} option tells screen not to do intercharacter
-timing. One cannot turn off the timing if a termcap capabilty is
+The @samp{-t} option tells screen not to do inter-character
+timing. One cannot turn off the timing if a termcap capability is
used.
@samp{cmd} can be any of screen's commands with an arbitrary
-number of @samp{args}. If @samp{cmd} is omitted the keybinding is
+number of @samp{args}. If @samp{cmd} is omitted the key-binding is
removed from the table.
@end deffn
@@ -2802,14 +3246,14 @@ Make the "F1" key switch to window one.
bindkey -t foo stuff barfoo
@end example
@noindent
-Make @samp{foo} an abrevation of the word @samp{barfoo}. Timeout is
+Make @samp{foo} an abbreviation of the word @samp{barfoo}. Timeout is
disabled so that users can type slowly.
@example
bindkey "\024" mapdefault
@end example
@noindent
-This keybinding makes @samp{C-t} an escape character for keybindings. If
+This key-binding makes @samp{C-t} an escape character for key-bindings. If
you did the above @samp{stuff barfoo} binding, you can enter the word
@samp{foo} by typing @samp{C-t foo}. If you want to insert a
@samp{C-t} you have to press the key twice (i.e. escape the escape
@@ -2975,7 +3419,7 @@ terminfo this method fails. Because of this @code{screen} offers a way
to deal with these cases. Here is how it works:
When @code{screen} tries to figure out a terminal name for itself, it
-first looks for an entry named @samp{screen.@var{term}}, where
+first looks for an entry named @code{screen.@var{term}}, where
@var{term} is the contents of your @code{$TERM} variable. If no such entry
exists, @code{screen} tries @samp{screen} (or @samp{screen-w}, if the
terminal is wide (132 cols or more)). If even this entry cannot be
@@ -3041,7 +3485,8 @@ connected to the terminal, while all other windows are still active (the
printer port is enabled and disabled again for each chunk of output).
As a side-effect, programs running in different windows can send output
to the printer simultaneously. Data sent to the printer is not
-displayed in the window.
+displayed in the window. The @code{info} command displays a line starting
+with @samp{PRIN} while the printer is active.
Some capabilities are only put into the @code{$TERMCAP} variable of the virtual
terminal if they can be efficiently implemented by the physical
@@ -3077,16 +3522,16 @@ to run a converter like @code{captoinfo} and then compile the entry with
Use this command to modify your terminal's termcap entry without going
through all the hassles involved in creating a custom termcap entry.
Plus, you can optionally customize the termcap generated for the
-windows.
-You have to place these commands in one of the screenrc starup files, as
-they are meaningless once the terminal emulator is booted.
+windows.
+You have to place these commands in one of the screenrc startup files, as they
+are meaningless once the terminal emulator is booted.
-If your system uses the terminfo database rather than
-termcap, @code{screen} will understand the @code{terminfo} command which
-has the same effects as the @code{termcap} command. Two separate commands are
+If your system uses the terminfo database rather than termcap,
+@code{screen} will understand the @code{terminfo} command, which has the
+same effects as the @code{termcap} command. Two separate commands are
provided, as there are subtle syntactic differences, e.g. when parameter
interpolation (using @samp{%}) is required. Note that the termcap names of
-the capabilities have to be used with the @code{terminfo} command.
+the capabilities should also be used with the @code{terminfo} command.
In many cases, where the arguments are valid in both terminfo and termcap
syntax, you can use the command @code{termcapinfo}, which is just a
@@ -3223,11 +3668,11 @@ the @samp{ac} capability for more details.
@item CS
(str)@*
-Switch cursor keys to application mode.
+Switch cursor-keys to application mode.
@item CE
(str)@*
-Switch cursor keys to cursor mode.
+Switch cursor-keys to cursor mode.
@item AN
(bool)@*
@@ -3246,7 +3691,7 @@ Set the kanji type of the terminal. Valid strings are @samp{jis},
@item AF
(str)@*
-Change character forground color in an ANSI conform way. This
+Change character foreground color in an ANSI conform way. This
capability will almost always be set to @samp{\E[3%dm}
(@samp{\E[3%p1%dm} on terminfo machines).
@@ -3262,6 +3707,10 @@ Does understand ANSI set default fg/bg color (@samp{\E[39m / \E[49m}).
(str)@*
Describe a translation of characters to strings depending on the
current font. (@pxref{Character Translation}).
+
+@item TF
+(bool)@*
+Add missing capabilities to the termcap/info entry. (Set by default).
@end table
@node Autonuke, Obuflimit, Special Capabilities, Termcap
@@ -3324,7 +3773,7 @@ in font @var{<designator>} (@samp{B}: Ascii, @samp{A}: UK,
to strings. Every @var{<mapping>} describes to what string a single
character will be translated. A template mechanism is used, as
most of the time the codes have a lot in common (for example
-strings to switch to and from another charset). Each occurence
+strings to switch to and from another charset). Each occurrence
of @samp{%} in @var{<template>} gets substituted with the
@var{template-arg}
specified together with the character. If your strings are not
@@ -3352,7 +3801,7 @@ translates the unquoted @samp{%} char, it will be sent to the terminal
whenever screen switches to the corresponding @var{<designator>}.
In this
special case the template is assumed to be just @samp{%} because
-the charset switch sequence and the character mappings normaly
+the charset switch sequence and the character mappings normally
haven't much in common.
This example shows one use of the extension:
@@ -3404,13 +3853,37 @@ up-arrow.
@node Hardware Status Line, Last Message, Privacy Message, Message Line
@section Hardware Status Line
@deffn Command hardstatus [state]
+@deffnx Command hardstatus [@code{always}]@code{lastline}|@code{message}|@code{ignore} [string]
+@deffnx Command hardstatus @code{string} [string]
(none)@*
-Toggles the use of the terminal's hardware status line. If @samp{on},
-@code{screen} will use this facility to display one line messages.
-Otherwise these messages are overlayed in reverse video mode at the
-display line. Note that the hardstatus feature can only be used if the
-termcap/terminfo capabilities "hs", "ts", "fs" and "ds" are set
-properly. Default is @samp{on} whenever the "hs" capability is present.
+This command configures the use and emulation of the terminal's
+hardstatus line. The first form toggles whether @code{screen}
+will use the hardware status line to display messages. If the
+flag is set to @samp{off}, these messages
+are overlaid in reverse video mode at the display line. The default
+setting is @samp{on}.
+
+The second form tells screen what to do if the terminal doesn't
+have a hardstatus line (i.e. the termcap/terminfo capabilities
+"hs", "ts", "fs" and "ds" are not set). If the type
+@code{lastline} is used, screen will reserve the last line of the
+display for the hardstatus. @code{message} uses
+@code{screen}'s message mechanism and
+@code{ignore} tells @code{screen} never to display the hardstatus.
+If you prepend the word @code{always} to the type, @code{screen} will use
+the type even if the terminal supports a hardstatus line.
+
+The third form specifies the contents of the hardstatus line.
+@code{%h} is used as default string, i.e. the stored hardstatus of the
+current window (settable via @samp{\E]0;^G} or @samp{\E_\\}) is
+displayed.
+You can customize this to any string you like including
+string escapes (@xref{String Escapes}).
+If you leave
+out the argument @var{string}, the current string is displayed.
+
+You can mix the second and third form by providing the string as
+additional argument.
@end deffn
@node Last Message, Message Wait, Hardware Status Line, Message Line
@@ -3479,7 +3952,7 @@ directory.
@kindex H
@deffn Command log [state]
(@kbd{C-a H})@*
-Begins/ends logging of the current window to the file
+Begins/ends logging of the current window to the file
@file{screenlog.@var{n}} in the window's default directory, where
@var{n} is the number of the current window.
This filename can be changed with the @samp{logfile} command.
@@ -3491,8 +3964,27 @@ included in the session log. Default is @samp{off}.
@end deffn
@deffn Command logfile filename
+@deffnx Command logfile flush secs
(none)@*
Defines the name the logfiles will get. The default is @samp{screenlog.%n}.
+The second form changes the number of seconds @code{screen}
+will wait before flushing the logfile buffer to the file-system. The
+default value is 10 seconds.
+@end deffn
+
+@deffn Command logtstamp [state]
+@deffnx Command logtstamp @code{after} secs
+@deffnx Command logtstamp @code{string} string
+(none)@*
+This command controls logfile time-stamp mechanism of screen. If
+time-stamps are turned @samp{on}, screen adds a string containing
+the current time to the logfile after two minutes of inactivity.
+When output continues and more than another two minutes have passed,
+a second time-stamp is added to document the restart of the
+output. You can change this timeout with the second form
+of the command. The third form is used for customizing the time-stamp
+string (@samp{-- %n:%t -- time-stamp -- %M/%d/%y %c:%s --\n} by
+default).
@end deffn
@node Startup, Miscellaneous, Logging, Top
@@ -3509,12 +4001,12 @@ This section describes commands which are only useful in the
@node echo, sleep, , Startup
@section echo
-@deffn Command echo [@t{-n}] message
+@deffn Command echo [@samp{-n}] message
(none)@*
The echo command may be used to annoy @code{screen} users with a
-'message of the day'. Typically installed in a global screenrc.
+'message of the day'. Typically installed in a global screenrc.
The option @samp{-n} may be used to suppress the line feed.
-See also @code{sleep}.
+See also @code{sleep}.
Echo is also useful for online checking of environment variables.
@end deffn
@@ -3535,7 +4027,7 @@ Select whether you want to see the copyright notice during startup.
Default is @samp{on}, as you probably noticed.
@end deffn
-@node Miscellaneous, Environment, Startup, Top
+@node Miscellaneous, String Escapes, Startup, Top
@chapter Miscellaneous commands
The commands described here do not fit well under any of the other
@@ -3547,9 +4039,11 @@ categories.
* Debug:: Suppress/allow debugging output.
* License:: Display the disclaimer page.
* Nethack:: Use @code{nethack}-like error messages.
+* Nonblock:: Disable flow-control to a display.
* Number:: Change the current window's number.
* Silence:: Notify on inactivity.
* Time:: Display the time and load average.
+* Verbose:: Display window creation commands.
* Version:: Display the version of @code{screen}.
* Zombie:: Keep dead windows.
* Printcmd:: Set command for VT100 printer port emulation.
@@ -3573,8 +4067,21 @@ If @var{identifier} has a @code{#} or nothing appended it is matched against
window numbers and titles. Omitting an identifier in front of the @code{#},
@code{*} or @code{%} character selects all users, displays or windows because
a prefix-match is performed. Note that on the affected display(s) a short
-message will describe what happened. Caution: Permission is checked for the
-owners or the affected display(s), not for the initiator of the `at' command.
+message will describe what happened.
+Note that the @code{#} character works as a comment introducer when it is
+preceded by whitespace. This can be escaped by prefixing @code{#} with a
+@code{\}.
+Permission is checked for the initiator of the @code{at} command, not for the
+owners of the affected display(s).
+Caveat:
+When matching against windows, the command is executed at least
+once per window. Commands that change the internal arrangement of windows
+(like @code{other}) may be called again. In shared windows the command will
+be repeated for each attached display. Beware, when issuing toggle commands
+like @code{login}!
+Some commands (e.g. @code{stuff}, @code{\*Qprocess} or @code{paste}) require
+that a display is associated with the target windows. These commands may not
+work correctly under @code{at} looping over windows.
@end deffn
@node Break, Debug, At, Miscellaneous
@@ -3582,8 +4089,10 @@ owners or the affected display(s), not for the initiator of the `at' command.
@deffn Command break [duration]
(none)@*
Send a break signal for @var{duration}*0.25 seconds to this window.
+For non-Posix systems the time interval is rounded up to full seconds.
Most useful if a character device is attached to the window rather than
-a shell process.
+a shell process (@pxref{Window Types}). The maximum duration of
+a break signal is limited to 15 seconds.
@end deffn
@deffn Command pow_break
@@ -3591,6 +4100,29 @@ a shell process.
Reopen the window's terminal line and send a break condition.
@end deffn
+@deffn Command breaktype [tcsendbreak|TIOCSBRK|TCSBRK]
+(none)@*
+Choose one of the available methods of generating a break signal for
+terminal devices. This command should affect the current window only.
+But it still behaves identical to @code{defbreaktype}. This will be changed in
+the future.
+Calling @code{breaktype} with no parameter displays the break setting for the
+current window.
+@end deffn
+
+@deffn Command defbreaktype [tcsendbreak|TIOCSBRK|TCSBRK]
+(none)@*
+Choose one of the available methods of generating a break signal for
+terminal devices opened afterwards. The preferred methods are
+@code{tcsendbreak} and
+@code{TIOCSBRK}. The third, @code{TCSBRK}, blocks the complete @code{screen}
+session for the duration of the break, but it may be the only way to
+generate long breaks. @code{tcsendbreak} and @code{TIOCSBRK} may or may not
+produce long breaks with spikes (e.g. 4 per second). This is not only system
+dependant, this also differs between serial board drivers.
+Calling @code{defbreaktype} with no parameter displays the current setting.
+@end deffn
+
@node Debug, License, Break, Miscellaneous
@section Debug
@deffn Command debug [on|off]
@@ -3598,7 +4130,8 @@ Reopen the window's terminal line and send a break condition.
Turns runtime debugging on or off. If @code{screen} has been compiled with
option @code{-DDEBUG} debugging is available and is turned on per default.
Note that this command only affects debugging output from the main
-@samp{SCREEN} process.
+@samp{SCREEN} process correctly. Debug output from attacher processes can only
+be turned off once and forever.
@end deffn
@node License, Nethack, Debug, Miscellaneous
@@ -3609,7 +4142,7 @@ Display the disclaimer page. This is done whenever @code{screen} is
started without options, which should be often enough.
@end deffn
-@node Nethack, Number, License, Miscellaneous
+@node Nethack, Nonblock, License, Miscellaneous
@section Nethack
@deffn Command nethack state
(none)@*
@@ -3624,7 +4157,17 @@ determined by the presence of the environment variable
@code{$NETHACKOPTIONS}.
@end deffn
-@node Number, Silence, Nethack, Miscellaneous
+@node Nonblock, Number, Nethack, Miscellaneous
+@section Nonblock
+@deffn Command nonblock @var{state}
+Enable or disable flow control for the current user interface
+(display). It is used to prevent a slow display from slowing
+down the processing of data output by a window. This command
+may be helpful when multiple displays show the same window.
+@code{Nonblock} is initially off for all displays.
+@end deffn
+
+@node Number, Silence, Nonblock, Miscellaneous
@section Number
@kindex N
@deffn Command number @var{[n]}
@@ -3646,13 +4189,19 @@ of inactivity (silence). The default timeout can be changed with the
@code{on} or @code{off}. Silence is initially off for all windows.
@end deffn
+@deffn Command defsilence state
+(none)@*
+Same as the @code{silence} command except that the default setting for
+new windows is changed. Initial setting is `off'.
+@end deffn
+
@deffn Command silencewait @var{seconds}
(none)@*
Define the time that all windows monitored for silence should wait
before displaying a message. Default is 30 seconds.
@end deffn
-@node Time, Version, Silence, Miscellaneous
+@node Time, Verbose, Silence, Miscellaneous
@section Time
@kindex t
@kindex C-t
@@ -3663,7 +4212,15 @@ load averages over 1, 5, and 15 minutes (if this is available on your
system). For window-specific information use @code{info} (@pxref{Info}).
@end deffn
-@node Version, Zombie, Time, Miscellaneous
+@node Verbose, Version, Time, Miscellaneous
+@section Verbose
+@deffn Command verbose [on|off]
+If verbose is switched on, the command name is echoed, whenever a window
+is created (or resurrected from zombie state). Default is off.
+Without parameter, the current setting is shown.
+@end deffn
+
+@node Version, Zombie, Verbose, Miscellaneous
@section Version
@kindex v
@deffn Command version
@@ -3673,13 +4230,13 @@ Display the version and modification date in the message line.
@node Zombie, Printcmd, Version, Miscellaneous
@section Zombie
-@deffn Command zombie @var{[keyx]}
-@deffnx Command defzombie @var{[keyx]}
+@deffn Command zombie @var{[keys]}
+@deffnx Command defzombie @var{[keys]}
(none)@*
Per default windows are removed from the window list as soon as the
windows process (e.g. shell) exits. When a string of two keys is
specified to the zombie command, `dead' windows will remain in the list.
-The @code{kill} kommand may be used to remove the window. Pressing the first key
+The @code{kill} command may be used to remove the window. Pressing the first key
in the dead window has the same effect. Pressing the second key, however,
screen will attempt to resurrect the window. The process that was initially
running in the window will be launched again. Calling @code{zombie} without
@@ -3716,13 +4273,73 @@ messages.
@var{attr} is a hexadecimal number and describes the attributes
(inverse, underline, ...) the text will get. @var{color}
is a 2 digit number and changes the
-forground/background of the highlighted text.
+foreground/background of the highlighted text.
Some knowledge of screen's internal character representation is
needed to make the characters appear in the desired way. The default
is currently @samp{10 99} (standout, default colors).
@end deffn
-@node Environment, Files, Miscellaneous, Top
+@node String Escapes, Environment, Miscellaneous, Top
+@chapter String Escapes
+@cindex string escapes
+Screen provides an escape mechanism to insert information like the
+current time into messages or file names. The escape character
+is @code{%} with one exception: inside of a window's hardstatus
+@code{^%} (@code{^E}) is used instead.
+
+Here is the full list of supported escapes:
+
+@table @code
+@item %
+the escape character itself
+@item a
+either @code{am} or @code{pm}
+@item A
+either @code{AM} or @code{PM}
+@item c
+current time @code{HH:MM} in 24h format
+@item C
+current time @code{HH:MM} in 12h format
+@item d
+day number
+@item D
+weekday name
+@item h
+hardstatus of the window
+@item l
+current load of the system
+@item m
+month number
+@item M
+month name
+@item n
+window number
+@item s
+seconds
+@item t
+window title
+@item u
+all other users on this window
+@item w
+all window numbers and names
+@item W
+all window numbers and names except the current one
+@item y
+last two digits of the year number
+@item Y
+full year number
+@item ?
+the part to the next @code{%?} is displayed only if an escape expands
+to an nonempty string
+@item :
+else part of @code{%?}
+@end table
+The @code{c} and @code{C} escape may be qualified with a @code{0} to
+make screen use
+zero instead of space as fill character. The @code{n} escape understands
+a length qualifier (e.g. @code{%3n}).
+
+@node Environment, Files, String Escapes, Top
@chapter Environment Variables
@cindex environment
@@ -3733,9 +4350,6 @@ Number of columns on the terminal (overrides termcap entry).
@item HOME
Directory in which to look for .screenrc.
-@item ISCREENRC
-Alternate user screenrc file.
-
@item LINES
Number of lines on the terminal (overrides termcap entry).
@@ -3789,14 +4403,12 @@ global initialization files.
@itemx /local/etc/screenrc
@code{screen} initialization commands
-@item @code{$ISCREENRC}
-@itemx @code{$SCREENRC}
+@item @code{$SCREENRC}
@itemx @code{$HOME}/.iscreenrc
@itemx @code{$HOME}/.screenrc
Read in after /local/etc/screenrc
-@item @code{$ISCREENDIR}/S-@var{login}
-@itemx @code{$SCREENDIR}/S-@var{login}
+@item @code{$SCREENDIR}/S-@var{login}
@item /local/screens/S-@var{login}
Socket directories (default)
@@ -3864,7 +4476,7 @@ Contributors @*
Martin Schweikert (schweik@@cpp.ob.open.de),
David Vrona (dave@@sashimi.lcu.com),
E. Tye McQueen (tye%spillman.UUCP@@uunet.uu.net),
- Matthew Green (mrgreen@@mame.mu.oz.au),
+ Matthew Green (mrg@@mame.mu.oz.au),
Christopher Williams (cgw@@unt.edu),
Matt Mosley (mattm@@access.digex.net),
Gregory Neil Shapiro (gshapiro@@wpi.WPI.EDU),
@@ -3905,7 +4517,7 @@ found a bug not mentioned here.
are ignored). @samp{xn} is treated as a magic-margin indicator.
@item
-@code{screen} has no clue about double-high or double-wide characters.
+@code{screen} has no clue about double-high or double-wide characters.
But this is the only area where @code{vttest} is allowed to fail.
@item
@@ -3920,7 +4532,8 @@ capabilities to @code{$TERMCAP} may not have any effects.
@code{screen} does not make use of hardware tabs.
@item
-@code{screen} must be installed setuid root in order to be able to
+@code{screen} must be installed setuid root on most systems
+in order to be able to
correctly change the owner of the tty device file for each window.
Special permission may also be required to write the file
@file{/etc/utmp}.
@@ -3935,10 +4548,25 @@ advertise that a user is logged on who really isn't.
entry.
@item
-When the modem line was hung up, @code{screen} may not automatically
-detach (or quit) unless the device driver sends a HANGUP signal.
-To detach such a @code{screen} session use the -D or -d command
-line option.
+When the modem line was hung up, @code{screen} may not automatically detach
+(or quit) unless the device driver sends a HANGUP signal. To detach such a
+@code{screen} session use the -D or -d command line option.
+
+@item
+If a password is set, the command line options -d and -D still detach a
+session without asking.
+
+@item
+Both @code{breaktype} and @code{defbreaktype} change the break generating
+method used by all terminal devices. The first should change a window
+specific setting, where the latter should change only the default for new
+windows.
+
+@item
+When attaching to a multiuser session, the user's @file{.screenrc} file is not
+sourced. Each users personal settings have to be included in the
+@file{.screenrc} file from which the session is booted, or have to be
+changed manually.
@item
A weird imagination is most useful to gain full advantage of all the
@@ -3955,7 +4583,7 @@ If you find a bug in @code{Screen}, please send electronic mail to
of @code{Screen} which you are using. Also include in your message the
hardware and operating system, the compiler used to compile, a
description of the bug behavior, and the conditions that triggered the
-bug. Please recompile @code{screen} with the @samp{-DDEBUG -DTMPTEST} options
+bug. Please recompile @code{screen} with the @samp{-DDEBUG} options
enabled, reproduce the bug, and have a look at the debug output written to
the directory @file{/tmp/debug}. If necessary quote suspect passages from the
debug output and show the contents of your @file{config.h} if it matters.
@@ -3968,9 +4596,11 @@ debug output and show the contents of your @file{config.h} if it matters.
The latest official release of @code{screen} available via anonymous
ftp from @samp{prep.ai.mit.edu}, @samp{nic.funet.fi} or any other
-@code{GNU} distribution site. The latest beta testing release of
-@code{screen} is available from @samp{ftp.uni-erlangen.de
-(131.188.1.43)}, in the directory @file{pub/utilities/screen}.
+@code{GNU} distribution site. The home site of
+@code{screen} is @samp{ftp.uni-erlangen.de
+(131.188.3.71)}, in the directory @file{pub/utilities/screen}.
+The subdirectory @samp{private} contains the latest beta testing release.
+If you want to help, send a note to screen@@uni-erlangen.de.
@node Installation, Concept Index, Bugs, Top
@chapter Installation
@@ -3994,7 +4624,7 @@ The socket directory defaults either to @file{$HOME/.screen} or simply to
compile-time. If @code{screen} is installed
setuid root, then the administrator should compile screen with an
adequate (not NFS mounted) @code{SOCKDIR}. If @code{screen} is not
-running setuid-root, the user can specify any mode 777 directory in the
+running setuid-root, the user can specify any mode 700 directory in the
environment variable @code{$SCREENDIR}.
@node Compiling Screen, , Socket Directory, Installation
diff --git a/doc/window_to_display.ps b/doc/window_to_display.ps
new file mode 100644
index 0000000..cee66b3
--- /dev/null
+++ b/doc/window_to_display.ps
@@ -0,0 +1,2959 @@
+%!PS-Adobe-2.0 EPSF-1.2
+%%Creator: idraw
+%%DocumentFonts: Courier Times-Bold
+%%Pages: 1
+%%BoundingBox: 20 154 576 782
+%%EndComments
+
+%%BeginIdrawPrologue
+/arrowhead {
+0 begin
+transform originalCTM itransform
+/taily exch def
+/tailx exch def
+transform originalCTM itransform
+/tipy exch def
+/tipx exch def
+/dy tipy taily sub def
+/dx tipx tailx sub def
+/angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
+gsave
+originalCTM setmatrix
+tipx tipy translate
+angle rotate
+newpath
+arrowHeight neg arrowWidth 2 div moveto
+0 0 lineto
+arrowHeight neg arrowWidth 2 div neg lineto
+patternNone not {
+originalCTM setmatrix
+/padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
+arrowWidth div def
+/padtail brushWidth 2 div def
+tipx tipy translate
+angle rotate
+padtip 0 translate
+arrowHeight padtip add padtail add arrowHeight div dup scale
+arrowheadpath
+ifill
+} if
+brushNone not {
+originalCTM setmatrix
+tipx tipy translate
+angle rotate
+arrowheadpath
+istroke
+} if
+grestore
+end
+} dup 0 9 dict put def
+
+/arrowheadpath {
+newpath
+arrowHeight neg arrowWidth 2 div moveto
+0 0 lineto
+arrowHeight neg arrowWidth 2 div neg lineto
+} def
+
+/leftarrow {
+0 begin
+y exch get /taily exch def
+x exch get /tailx exch def
+y exch get /tipy exch def
+x exch get /tipx exch def
+brushLeftArrow { tipx tipy tailx taily arrowhead } if
+end
+} dup 0 4 dict put def
+
+/rightarrow {
+0 begin
+y exch get /tipy exch def
+x exch get /tipx exch def
+y exch get /taily exch def
+x exch get /tailx exch def
+brushRightArrow { tipx tipy tailx taily arrowhead } if
+end
+} dup 0 4 dict put def
+
+%%EndIdrawPrologue
+
+/arrowHeight 8 def
+/arrowWidth 4 def
+
+/IdrawDict 52 dict def
+IdrawDict begin
+
+/reencodeISO {
+dup dup findfont dup length dict begin
+{ 1 index /FID ne { def }{ pop pop } ifelse } forall
+/Encoding ISOLatin1Encoding def
+currentdict end definefont
+} def
+
+/ISOLatin1Encoding [
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright
+/parenleft/parenright/asterisk/plus/comma/minus/period/slash
+/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon
+/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N
+/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright
+/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m
+/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve
+/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut
+/ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar
+/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot
+/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
+/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
+/guillemotright/onequarter/onehalf/threequarters/questiondown
+/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
+/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
+/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute
+/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
+/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
+/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
+/yacute/thorn/ydieresis
+] def
+/Courier reencodeISO def
+/Times-Bold reencodeISO def
+
+/none null def
+/numGraphicParameters 17 def
+/stringLimit 65535 def
+
+/Begin {
+save
+numGraphicParameters dict begin
+} def
+
+/End {
+end
+restore
+} def
+
+/SetB {
+dup type /nulltype eq {
+pop
+false /brushRightArrow idef
+false /brushLeftArrow idef
+true /brushNone idef
+} {
+/brushDashOffset idef
+/brushDashArray idef
+0 ne /brushRightArrow idef
+0 ne /brushLeftArrow idef
+/brushWidth idef
+false /brushNone idef
+} ifelse
+} def
+
+/SetCFg {
+/fgblue idef
+/fggreen idef
+/fgred idef
+} def
+
+/SetCBg {
+/bgblue idef
+/bggreen idef
+/bgred idef
+} def
+
+/SetF {
+/printSize idef
+/printFont idef
+} def
+
+/SetP {
+dup type /nulltype eq {
+pop true /patternNone idef
+} {
+dup -1 eq {
+/patternGrayLevel idef
+/patternString idef
+} {
+/patternGrayLevel idef
+} ifelse
+false /patternNone idef
+} ifelse
+} def
+
+/BSpl {
+0 begin
+storexyn
+newpath
+n 1 gt {
+0 0 0 0 0 0 1 1 true subspline
+n 2 gt {
+0 0 0 0 1 1 2 2 false subspline
+1 1 n 3 sub {
+/i exch def
+i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
+} for
+n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
+} if
+n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
+patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
+brushNone not { istroke } if
+0 0 1 1 leftarrow
+n 2 sub dup n 1 sub dup rightarrow
+} if
+end
+} dup 0 4 dict put def
+
+/Circ {
+newpath
+0 360 arc
+patternNone not { ifill } if
+brushNone not { istroke } if
+} def
+
+/CBSpl {
+0 begin
+dup 2 gt {
+storexyn
+newpath
+n 1 sub dup 0 0 1 1 2 2 true subspline
+1 1 n 3 sub {
+/i exch def
+i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
+} for
+n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
+n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
+patternNone not { ifill } if
+brushNone not { istroke } if
+} {
+Poly
+} ifelse
+end
+} dup 0 4 dict put def
+
+/Elli {
+0 begin
+newpath
+4 2 roll
+translate
+scale
+0 0 1 0 360 arc
+patternNone not { ifill } if
+brushNone not { istroke } if
+end
+} dup 0 1 dict put def
+
+/Line {
+0 begin
+2 storexyn
+newpath
+x 0 get y 0 get moveto
+x 1 get y 1 get lineto
+brushNone not { istroke } if
+0 0 1 1 leftarrow
+0 0 1 1 rightarrow
+end
+} dup 0 4 dict put def
+
+/MLine {
+0 begin
+storexyn
+newpath
+n 1 gt {
+x 0 get y 0 get moveto
+1 1 n 1 sub {
+/i exch def
+x i get y i get lineto
+} for
+patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
+brushNone not { istroke } if
+0 0 1 1 leftarrow
+n 2 sub dup n 1 sub dup rightarrow
+} if
+end
+} dup 0 4 dict put def
+
+/Poly {
+3 1 roll
+newpath
+moveto
+-1 add
+{ lineto } repeat
+closepath
+patternNone not { ifill } if
+brushNone not { istroke } if
+} def
+
+/Rect {
+0 begin
+/t exch def
+/r exch def
+/b exch def
+/l exch def
+newpath
+l b moveto
+l t lineto
+r t lineto
+r b lineto
+closepath
+patternNone not { ifill } if
+brushNone not { istroke } if
+end
+} dup 0 4 dict put def
+
+/Text {
+ishow
+} def
+
+/idef {
+dup where { pop pop pop } { exch def } ifelse
+} def
+
+/ifill {
+0 begin
+gsave
+patternGrayLevel -1 ne {
+fgred bgred fgred sub patternGrayLevel mul add
+fggreen bggreen fggreen sub patternGrayLevel mul add
+fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
+eofill
+} {
+eoclip
+originalCTM setmatrix
+pathbbox /t exch def /r exch def /b exch def /l exch def
+/w r l sub ceiling cvi def
+/h t b sub ceiling cvi def
+/imageByteWidth w 8 div ceiling cvi def
+/imageHeight h def
+bgred bggreen bgblue setrgbcolor
+eofill
+fgred fggreen fgblue setrgbcolor
+w 0 gt h 0 gt and {
+l w add b translate w neg h scale
+w h true [w 0 0 h neg 0 h] { patternproc } imagemask
+} if
+} ifelse
+grestore
+end
+} dup 0 8 dict put def
+
+/istroke {
+gsave
+brushDashOffset -1 eq {
+[] 0 setdash
+1 setgray
+} {
+brushDashArray brushDashOffset setdash
+fgred fggreen fgblue setrgbcolor
+} ifelse
+brushWidth setlinewidth
+originalCTM setmatrix
+stroke
+grestore
+} def
+
+/ishow {
+0 begin
+gsave
+fgred fggreen fgblue setrgbcolor
+/fontDict printFont printSize scalefont dup setfont def
+/descender fontDict begin 0 [FontBBox] 1 get FontMatrix end
+transform exch pop def
+/vertoffset 1 printSize sub descender sub def {
+0 vertoffset moveto show
+/vertoffset vertoffset printSize sub def
+} forall
+grestore
+end
+} dup 0 3 dict put def
+/patternproc {
+0 begin
+/patternByteLength patternString length def
+/patternHeight patternByteLength 8 mul sqrt cvi def
+/patternWidth patternHeight def
+/patternByteWidth patternWidth 8 idiv def
+/imageByteMaxLength imageByteWidth imageHeight mul
+stringLimit patternByteWidth sub min def
+/imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
+patternHeight mul patternHeight max def
+/imageHeight imageHeight imageMaxHeight sub store
+/imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
+0 1 imageMaxHeight 1 sub {
+/y exch def
+/patternRow y patternByteWidth mul patternByteLength mod def
+/patternRowString patternString patternRow patternByteWidth getinterval def
+/imageRow y imageByteWidth mul def
+0 patternByteWidth imageByteWidth 1 sub {
+/x exch def
+imageString imageRow x add patternRowString putinterval
+} for
+} for
+imageString
+end
+} dup 0 12 dict put def
+
+/min {
+dup 3 2 roll dup 4 3 roll lt { exch } if pop
+} def
+
+/max {
+dup 3 2 roll dup 4 3 roll gt { exch } if pop
+} def
+
+/midpoint {
+0 begin
+/y1 exch def
+/x1 exch def
+/y0 exch def
+/x0 exch def
+x0 x1 add 2 div
+y0 y1 add 2 div
+end
+} dup 0 4 dict put def
+
+/thirdpoint {
+0 begin
+/y1 exch def
+/x1 exch def
+/y0 exch def
+/x0 exch def
+x0 2 mul x1 add 3 div
+y0 2 mul y1 add 3 div
+end
+} dup 0 4 dict put def
+
+/subspline {
+0 begin
+/movetoNeeded exch def
+y exch get /y3 exch def
+x exch get /x3 exch def
+y exch get /y2 exch def
+x exch get /x2 exch def
+y exch get /y1 exch def
+x exch get /x1 exch def
+y exch get /y0 exch def
+x exch get /x0 exch def
+x1 y1 x2 y2 thirdpoint
+/p1y exch def
+/p1x exch def
+x2 y2 x1 y1 thirdpoint
+/p2y exch def
+/p2x exch def
+x1 y1 x0 y0 thirdpoint
+p1x p1y midpoint
+/p0y exch def
+/p0x exch def
+x2 y2 x3 y3 thirdpoint
+p2x p2y midpoint
+/p3y exch def
+/p3x exch def
+movetoNeeded { p0x p0y moveto } if
+p1x p1y p2x p2y p3x p3y curveto
+end
+} dup 0 17 dict put def
+
+/storexyn {
+/n exch def
+/y n array def
+/x n array def
+n 1 sub -1 0 {
+/i exch def
+y i 3 2 roll put
+x i 3 2 roll put
+} for
+} def
+
+/SSten {
+fgred fggreen fgblue setrgbcolor
+dup true exch 1 0 0 -1 0 6 -1 roll matrix astore
+} def
+
+/FSten {
+dup 3 -1 roll dup 4 1 roll exch
+newpath
+0 0 moveto
+dup 0 exch lineto
+exch dup 3 1 roll exch lineto
+0 lineto
+closepath
+bgred bggreen bgblue setrgbcolor
+eofill
+SSten
+} def
+
+/Rast {
+exch dup 3 1 roll 1 0 0 -1 0 6 -1 roll matrix astore
+} def
+
+%%EndProlog
+
+%I Idraw 10 Grid 8 8
+
+%%Page: 1 1
+
+Begin
+%I b u
+%I cfg u
+%I cbg u
+%I f u
+%I p u
+%I t
+[ 0.95606 0 0 0.95606 0 0 ] concat
+/originalCTM matrix currentmatrix def
+
+Begin %I BSpl
+%I b 65535
+1 0 1 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 -4 119 ] concat
+%I 6
+276 433
+276 449
+292 449
+364 449
+380 449
+380 433
+6 BSpl
+%I 1
+End
+
+Begin %I Pict
+%I b u
+%I cfg u
+%I cbg u
+%I f u
+%I p u
+%I t u
+
+Begin %I Pict
+%I b u
+%I cfg u
+%I cbg u
+%I f u
+%I p u
+%I t
+[ 1 0 0 1 -400 -208 ] concat
+
+Begin %I CBSpl
+%I b 65535
+2 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg LtGray
+0.762951 0.762951 0.762951 SetCBg
+%I p
+0.5 SetP
+%I t
+[ 0.5 0 0 0.5 350 330.5 ] concat
+%I 12
+340 107
+340 123
+340 187
+340 203
+356 203
+468 203
+484 203
+484 187
+484 123
+484 107
+468 107
+356 107
+12 CBSpl
+End
+
+Begin %I Text
+%I cfg Black
+0 0 0 SetCFg
+%I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
+Courier 10 SetF
+%I t
+[ 1 0 0 1 535.5 381 ] concat
+%I
+[
+(w_ptyfd)
+] Text
+End
+
+End %I eop
+
+Begin %I Pict
+%I b u
+%I cfg u
+%I cbg u
+%I f u
+%I p u
+%I t
+[ 1 0 0 1 88 -23.9999 ] concat
+
+Begin %I Pict
+%I b u
+%I cfg u
+%I cbg u
+%I f u
+%I p u
+%I t
+[ -4.37114e-08 -1 1 -4.37114e-08 -608 640 ] concat
+
+Begin %I Poly
+none SetB %I b n
+%I cfg Black
+0 0 0 SetCFg
+%I cbg LtGray
+0.762951 0.762951 0.762951 SetCBg
+%I p
+0.5 SetP
+%I t
+[ 0.5 0 0 0.5 238 522.5 ] concat
+%I 4
+164 315
+228 315
+228 363
+164 363
+4 Poly
+End
+
+Begin %I Rect
+%I b 65535
+2 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 0 0 1 111 317 ] concat
+%I
+233 363 241 387 Rect
+End
+
+Begin %I Line
+%I b 65535
+2 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 0 0 1 111 317 ] concat
+%I
+225 387 225 363 Line
+%I 1
+End
+
+Begin %I Line
+%I b 65535
+2 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 0 0 1 111 317 ] concat
+%I
+217 387 217 363 Line
+%I 1
+End
+
+Begin %I Line
+%I b 65535
+2 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 0 0 1 111 317 ] concat
+%I
+233 363 201 363 Line
+%I 1
+End
+
+Begin %I Line
+%I b 65535
+2 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 0 0 1 111 317 ] concat
+%I
+201 387 233 387 Line
+%I 1
+End
+
+End %I eop
+
+Begin %I Text
+%I cfg Black
+0 0 0 SetCFg
+%I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
+Courier 10 SetF
+%I t
+[ 1 0 0 1 66.5 285 ] concat
+%I
+[
+(d_obuf)
+] Text
+End
+
+End %I eop
+
+Begin %I Text
+%I cfg Black
+0 0 0 SetCFg
+%I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
+Courier 10 SetF
+%I t
+[ 1 0 0 1 153.5 244 ] concat
+%I
+[
+(write\(\))
+] Text
+End
+
+Begin %I BSpl
+%I b 65535
+2 0 1 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg Black
+0 0 0 SetCBg
+none SetP %I p n
+%I t
+[ 0.5 0 0 0.5 56 123.5 ] concat
+%I 3
+272 281
+288 249
+272 201
+3 BSpl
+%I 2
+End
+
+End %I eop
+
+Begin %I Pict
+%I b u
+%I cfg u
+%I cbg u
+%I f u
+%I p u
+%I t u
+
+Begin %I Pict
+%I b u
+%I cfg u
+%I cbg u
+%I f u
+%I p u
+%I t
+[ 1 0 0 1 -239.5 -207.5 ] concat
+
+Begin %I CBSpl
+%I b 65535
+2 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg LtGray
+0.762951 0.762951 0.762951 SetCBg
+%I p
+0.5 SetP
+%I t
+[ 0.5 0 0 0.5 350 330.5 ] concat
+%I 12
+340 107
+340 123
+340 187
+340 203
+356 203
+468 203
+484 203
+484 187
+484 123
+484 107
+468 107
+356 107
+12 CBSpl
+End
+
+Begin %I Text
+%I cfg Black
+0 0 0 SetCFg
+%I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
+Courier 10 SetF
+%I t
+[ 1 0 0 1 535.5 381 ] concat
+%I
+[
+(w_ptyfd)
+] Text
+End
+
+End %I eop
+
+Begin %I Pict
+%I b u
+%I cfg u
+%I cbg u
+%I f u
+%I p u
+%I t
+[ 1 0 0 1 248.5 -23.5 ] concat
+
+Begin %I Pict
+%I b u
+%I cfg u
+%I cbg u
+%I f u
+%I p u
+%I t
+[ -4.37114e-08 -1 1 -4.37114e-08 -608 640 ] concat
+
+Begin %I Poly
+none SetB %I b n
+%I cfg Black
+0 0 0 SetCFg
+%I cbg LtGray
+0.762951 0.762951 0.762951 SetCBg
+%I p
+0.5 SetP
+%I t
+[ 0.5 0 0 0.5 238 522.5 ] concat
+%I 4
+164 315
+228 315
+228 363
+164 363
+4 Poly
+End
+
+Begin %I Rect
+%I b 65535
+2 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 0 0 1 111 317 ] concat
+%I
+233 363 241 387 Rect
+End
+
+Begin %I Line
+%I b 65535
+2 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 0 0 1 111 317 ] concat
+%I
+225 387 225 363 Line
+%I 1
+End
+
+Begin %I Line
+%I b 65535
+2 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 0 0 1 111 317 ] concat
+%I
+217 387 217 363 Line
+%I 1
+End
+
+Begin %I Line
+%I b 65535
+2 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 0 0 1 111 317 ] concat
+%I
+233 363 201 363 Line
+%I 1
+End
+
+Begin %I Line
+%I b 65535
+2 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 0 0 1 111 317 ] concat
+%I
+201 387 233 387 Line
+%I 1
+End
+
+End %I eop
+
+Begin %I Text
+%I cfg Black
+0 0 0 SetCFg
+%I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
+Courier 10 SetF
+%I t
+[ 1 0 0 1 66.5 285 ] concat
+%I
+[
+(d_obuf)
+] Text
+End
+
+End %I eop
+
+Begin %I Text
+%I cfg Black
+0 0 0 SetCFg
+%I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
+Courier 10 SetF
+%I t
+[ 1 0 0 1 314 244.5 ] concat
+%I
+[
+(write\(\))
+] Text
+End
+
+Begin %I BSpl
+%I b 65535
+2 0 1 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg Black
+0 0 0 SetCBg
+none SetP %I p n
+%I t
+[ 0.5 0 0 0.5 216.5 124 ] concat
+%I 3
+272 281
+288 249
+272 201
+3 BSpl
+%I 2
+End
+
+End %I eop
+
+Begin %I Pict
+%I b u
+%I cfg u
+%I cbg u
+%I f u
+%I p u
+%I t u
+
+Begin %I Pict
+%I b u
+%I cfg u
+%I cbg u
+%I f u
+%I p u
+%I t
+[ 1 0 0 1 -79.5 -207.5 ] concat
+
+Begin %I CBSpl
+%I b 65535
+2 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg LtGray
+0.762951 0.762951 0.762951 SetCBg
+%I p
+0.5 SetP
+%I t
+[ 0.5 0 0 0.5 350 330.5 ] concat
+%I 12
+340 107
+340 123
+340 187
+340 203
+356 203
+468 203
+484 203
+484 187
+484 123
+484 107
+468 107
+356 107
+12 CBSpl
+End
+
+Begin %I Text
+%I cfg Black
+0 0 0 SetCFg
+%I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
+Courier 10 SetF
+%I t
+[ 1 0 0 1 535.5 381 ] concat
+%I
+[
+(w_ptyfd)
+] Text
+End
+
+End %I eop
+
+Begin %I Pict
+%I b u
+%I cfg u
+%I cbg u
+%I f u
+%I p u
+%I t
+[ 1 0 0 1 408.5 -23.5 ] concat
+
+Begin %I Pict
+%I b u
+%I cfg u
+%I cbg u
+%I f u
+%I p u
+%I t
+[ -4.37114e-08 -1 1 -4.37114e-08 -608 640 ] concat
+
+Begin %I Poly
+none SetB %I b n
+%I cfg Black
+0 0 0 SetCFg
+%I cbg LtGray
+0.762951 0.762951 0.762951 SetCBg
+%I p
+0.5 SetP
+%I t
+[ 0.5 0 0 0.5 238 522.5 ] concat
+%I 4
+164 315
+228 315
+228 363
+164 363
+4 Poly
+End
+
+Begin %I Rect
+%I b 65535
+2 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 0 0 1 111 317 ] concat
+%I
+233 363 241 387 Rect
+End
+
+Begin %I Line
+%I b 65535
+2 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 0 0 1 111 317 ] concat
+%I
+225 387 225 363 Line
+%I 1
+End
+
+Begin %I Line
+%I b 65535
+2 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 0 0 1 111 317 ] concat
+%I
+217 387 217 363 Line
+%I 1
+End
+
+Begin %I Line
+%I b 65535
+2 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 0 0 1 111 317 ] concat
+%I
+233 363 201 363 Line
+%I 1
+End
+
+Begin %I Line
+%I b 65535
+2 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 0 0 1 111 317 ] concat
+%I
+201 387 233 387 Line
+%I 1
+End
+
+End %I eop
+
+Begin %I Text
+%I cfg Black
+0 0 0 SetCFg
+%I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
+Courier 10 SetF
+%I t
+[ 1 0 0 1 66.5 285 ] concat
+%I
+[
+(d_obuf)
+] Text
+End
+
+End %I eop
+
+Begin %I Text
+%I cfg Black
+0 0 0 SetCFg
+%I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
+Courier 10 SetF
+%I t
+[ 1 0 0 1 474 244.5 ] concat
+%I
+[
+(write\(\))
+] Text
+End
+
+Begin %I BSpl
+%I b 65535
+2 0 1 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg Black
+0 0 0 SetCBg
+none SetP %I p n
+%I t
+[ 0.5 0 0 0.5 376.5 124 ] concat
+%I 3
+272 281
+288 249
+272 201
+3 BSpl
+%I 2
+End
+
+End %I eop
+
+Begin %I Text
+%I cfg Black
+0 0 0 SetCFg
+%I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
+Courier 10 SetF
+%I t
+[ 1 0 0 1 289 540 ] concat
+%I
+[
+(WriteString\(\))
+] Text
+End
+
+Begin %I Pict
+%I b u
+%I cfg u
+%I cbg u
+%I f u
+%I p u
+%I t
+[ 1 0 0 1 0 168 ] concat
+
+Begin %I Pict
+%I b u
+%I cfg u
+%I cbg u
+%I f u
+%I p u
+%I t
+[ 1 0 0 1 32 56 ] concat
+
+Begin %I Rect
+%I b 65535
+3 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg LtGray
+0.762951 0.762951 0.762951 SetCBg
+%I p
+0.5 SetP
+%I t
+[ 1 0 0 1 61 197 ] concat
+%I
+195 243 259 291 Rect
+End
+
+Begin %I Line
+%I b 65535
+1 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 0 0 1 61 197 ] concat
+%I
+203 283 251 283 Line
+%I 1
+End
+
+Begin %I Line
+%I b 65535
+1 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 0 0 1 61 197 ] concat
+%I
+203 275 251 275 Line
+%I 1
+End
+
+Begin %I Line
+%I b 65535
+1 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 0 0 1 61 197 ] concat
+%I
+203 267 251 267 Line
+%I 1
+End
+
+Begin %I Line
+%I b 65535
+1 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 0 0 1 61 197 ] concat
+%I
+203 259 251 259 Line
+%I 1
+End
+
+Begin %I Line
+%I b 65535
+1 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 0 0 1 61 197 ] concat
+%I
+203 251 251 251 Line
+%I 1
+End
+
+Begin %I Line
+%I b 65535
+0 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 0 0 1 61 197 ] concat
+%I
+203 299 251 299 Line
+%I 1
+End
+
+Begin %I Line
+%I b 65535
+0 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 0 0 1 61 197 ] concat
+%I
+203 307 251 307 Line
+%I 1
+End
+
+Begin %I Line
+%I b 65535
+0 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 0 0 1 61 197 ] concat
+%I
+203 315 251 315 Line
+%I 1
+End
+
+Begin %I Line
+%I b 65535
+0 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 0 0 1 61 197 ] concat
+%I
+203 323 251 323 Line
+%I 1
+End
+
+Begin %I Line
+%I b 65535
+0 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 0 0 1 53 197 ] concat
+%I
+203 331 251 331 Line
+%I 1
+End
+
+Begin %I Line
+%I b 65535
+0 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 0.5 0 0 0.5 162 329 ] concat
+%I
+188 318 188 366 Line
+%I 2
+End
+
+Begin %I Line
+%I b 65535
+0 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 0.5 0 0 0.5 162 329 ] concat
+%I
+316 318 316 366 Line
+%I 2
+End
+
+Begin %I BSpl
+%I b 65535
+0 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 0.5 0 0 0.5 162 329 ] concat
+%I 3
+316 366
+316 398
+300 398
+3 BSpl
+%I 2
+End
+
+Begin %I BSpl
+%I b 65535
+0 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 0.5 0 0 0.5 162 329 ] concat
+%I 3
+188 366
+188 398
+172 398
+3 BSpl
+%I 2
+End
+
+End %I eop
+
+Begin %I Text
+%I cfg Black
+0 0 0 SetCFg
+%I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
+Courier 10 SetF
+%I t
+[ 1 0 0 1 296 492.5 ] concat
+%I
+[
+(w_image[])
+] Text
+End
+
+End %I eop
+
+Begin %I Text
+%I cfg Black
+0 0 0 SetCFg
+%I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
+Courier 10 SetF
+%I t
+[ 1 0 0 1 312 567 ] concat
+%I
+[
+(\(CB8\))
+] Text
+End
+
+Begin %I Pict
+%I b u
+%I cfg u
+%I cbg u
+%I f u
+%I p u
+%I t
+[ 1 0 0 1 1.52588e-05 16 ] concat
+
+Begin %I Pict
+%I b u
+%I cfg u
+%I cbg u
+%I f u
+%I p u
+%I t
+[ -4.37114e-08 -1 1 -4.37114e-08 -567.5 808.5 ] concat
+
+Begin %I Poly
+none SetB %I b n
+%I cfg Black
+0 0 0 SetCFg
+%I cbg LtGray
+0.762951 0.762951 0.762951 SetCBg
+%I p
+0.5 SetP
+%I t
+[ 0.5 0 0 0.5 238 522.5 ] concat
+%I 4
+164 315
+228 315
+228 363
+164 363
+4 Poly
+End
+
+Begin %I Rect
+%I b 65535
+2 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 0 0 1 111 317 ] concat
+%I
+233 363 241 387 Rect
+End
+
+Begin %I Line
+%I b 65535
+2 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 0 0 1 111 317 ] concat
+%I
+225 387 225 363 Line
+%I 1
+End
+
+Begin %I Line
+%I b 65535
+2 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 0 0 1 111 317 ] concat
+%I
+217 387 217 363 Line
+%I 1
+End
+
+Begin %I Line
+%I b 65535
+2 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 0 0 1 111 317 ] concat
+%I
+233 363 201 363 Line
+%I 1
+End
+
+Begin %I Line
+%I b 65535
+2 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 0 0 1 111 317 ] concat
+%I
+201 387 233 387 Line
+%I 1
+End
+
+End %I eop
+
+Begin %I Text
+%I cfg Black
+0 0 0 SetCFg
+%I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
+Courier 10 SetF
+%I t
+[ 1 0 0 1 101 453.5 ] concat
+%I
+[
+(w_string)
+] Text
+End
+
+End %I eop
+
+Begin %I Pict
+%I b u
+%I cfg u
+%I cbg u
+%I f u
+%I p u
+%I t u
+
+Begin %I Pict
+%I b u
+%I cfg u
+%I cbg u
+%I f u
+%I p u
+%I t u
+
+Begin %I Poly
+none SetB %I b n
+%I cfg Black
+0 0 0 SetCFg
+%I cbg LtGray
+0.762951 0.762951 0.762951 SetCBg
+%I p
+0.5 SetP
+%I t
+[ 0.5 0 0 0.5 230 434.5 ] concat
+%I 4
+164 315
+228 315
+228 363
+164 363
+4 Poly
+End
+
+Begin %I Pict
+%I b 65535
+2 0 0 [] 0 SetB
+%I cfg u
+%I cbg u
+%I f u
+%I p u
+%I t
+[ 1 0 0 1 -32 32 ] concat
+
+Begin %I Rect
+%I b 65535
+3 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 135 197.5 ] concat
+%I
+233 363 241 387 Rect
+End
+
+Begin %I Line
+%I b 65535
+3 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 135 197.5 ] concat
+%I
+225 387 225 363 Line
+%I 1
+End
+
+Begin %I Line
+%I b 65535
+3 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 135 197.5 ] concat
+%I
+217 387 217 363 Line
+%I 1
+End
+
+Begin %I Line
+%I b 65535
+3 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 135 197.5 ] concat
+%I
+233 363 201 363 Line
+%I 1
+End
+
+Begin %I Line
+%I b 65535
+3 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 135 197.5 ] concat
+%I
+201 387 233 387 Line
+%I 1
+End
+
+End %I eop
+
+End %I eop
+
+Begin %I Text
+%I cfg Black
+0 0 0 SetCFg
+%I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
+Courier 10 SetF
+%I t
+[ 1 0 0 1 300.5 589 ] concat
+%I
+[
+(w_outbuf)
+] Text
+End
+
+End %I eop
+
+Begin %I Text
+%I cfg Black
+0 0 0 SetCFg
+%I f -*-times-bold-r-normal-*-14-*-*-*-*-*-*-*
+Times-Bold 14 SetF
+%I t
+[ 1 0 0 1 185 814 ] concat
+%I
+[
+(Window to display data flow in Screen)
+] Text
+End
+
+Begin %I BSpl
+%I b 65535
+1 0 1 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 -4 119 ] concat
+%I 4
+108 361
+60 361
+44 361
+44 345
+4 BSpl
+%I 1
+End
+
+Begin %I BSpl
+%I b 65535
+1 0 1 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 -4 119 ] concat
+%I 4
+148 361
+156 361
+172 361
+172 345
+4 BSpl
+%I 1
+End
+
+Begin %I Text
+%I cfg Black
+0 0 0 SetCFg
+%I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
+Courier 10 SetF
+%I t
+[ 1 0 0 1 34 491 ] concat
+%I
+[
+(PrintFlush\(\))
+] Text
+End
+
+Begin %I BSpl
+%I b 65535
+1 0 1 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 -4 119 ] concat
+%I 7
+300 409
+276 409
+276 433
+276 457
+276 481
+300 481
+308 481
+7 BSpl
+%I 1
+End
+
+Begin %I BSpl
+%I b 65535
+1 0 1 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 -4 119 ] concat
+%I 4
+356 481
+380 481
+380 457
+380 449
+4 BSpl
+%I 1
+End
+
+Begin %I BSpl
+%I b 65535
+1 0 1 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 -4 119 ] concat
+%I 5
+220 505
+220 529
+220 553
+244 553
+252 553
+5 BSpl
+%I 1
+End
+
+Begin %I BSpl
+%I b 65535
+1 0 1 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 -4 119 ] concat
+%I 6
+276 409
+252 409
+252 433
+252 529
+252 553
+284 553
+6 BSpl
+%I 1
+End
+
+Begin %I Pict
+%I b u
+%I cfg u
+%I cbg u
+%I f u
+%I p u
+%I t
+[ 1 0 0 1 0 136 ] concat
+
+Begin %I CBSpl
+%I b 65535
+2 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg LtGray
+0.762951 0.762951 0.762951 SetCBg
+%I p
+0.5 SetP
+%I t
+[ 0.5 0 0 0.5 350 330.5 ] concat
+%I 12
+340 107
+340 123
+340 187
+340 203
+356 203
+468 203
+484 203
+484 187
+484 123
+484 107
+468 107
+356 107
+12 CBSpl
+End
+
+Begin %I Text
+%I cfg Black
+0 0 0 SetCFg
+%I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
+Courier 10 SetF
+%I t
+[ 1 0 0 1 535.5 381 ] concat
+%I
+[
+(w_ptyfd)
+] Text
+End
+
+End %I eop
+
+Begin %I Pict
+%I b u
+%I cfg u
+%I cbg u
+%I f u
+%I p u
+%I t
+[ 1 0 0 1 0 88 ] concat
+
+Begin %I Pict
+%I b u
+%I cfg u
+%I cbg u
+%I f u
+%I p u
+%I t u
+
+Begin %I Rect
+none SetB %I b n
+%I cfg Black
+0 0 0 SetCFg
+%I cbg LtGray
+0.762951 0.762951 0.762951 SetCBg
+%I p
+0.5 SetP
+%I t
+[ 0.5 -0 -0 0.5 380.5 362.5 ] concat
+%I
+71 123 135 171 Rect
+End
+
+Begin %I Pict
+%I b 65535
+2 0 0 [] 0 SetB
+%I cfg u
+%I cbg u
+%I f u
+%I p u
+%I t
+[ 1 0 0 1 24 -136 ] concat
+
+Begin %I Rect
+%I b 65535
+3 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 135 197.5 ] concat
+%I
+257 363 265 387 Rect
+End
+
+Begin %I Line
+%I b 65535
+3 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 135 197.5 ] concat
+%I
+273 387 273 363 Line
+%I 1
+End
+
+Begin %I Line
+%I b 65535
+3 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 135 197.5 ] concat
+%I
+281 387 281 363 Line
+%I 1
+End
+
+Begin %I Line
+%I b 65535
+3 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 135 197.5 ] concat
+%I
+265 363 297 363 Line
+%I 1
+End
+
+Begin %I Line
+%I b 65535
+3 0 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 135 197.5 ] concat
+%I
+265 387 297 387 Line
+%I 1
+End
+
+End %I eop
+
+End %I eop
+
+Begin %I Text
+%I cfg Black
+0 0 0 SetCFg
+%I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
+Courier 10 SetF
+%I t
+[ 1 0 0 1 416.5 419 ] concat
+%I
+[
+(main:buf)
+] Text
+End
+
+End %I eop
+
+Begin %I Text
+%I cfg Black
+0 0 0 SetCFg
+%I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
+Courier 10 SetF
+%I t
+[ 1 0 0 1 464 538 ] concat
+%I
+[
+(read\(\))
+] Text
+End
+
+Begin %I BSpl
+%I b 65535
+2 0 1 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 0 0 1 -4 111 ] concat
+%I 3
+516 409
+484 417
+460 409
+3 BSpl
+%I 1
+End
+
+Begin %I BSpl
+%I b 65535
+1 0 1 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 -4 119 ] concat
+%I 7
+412 401
+396 401
+396 385
+396 361
+396 345
+412 345
+420 345
+7 BSpl
+%I 1
+End
+
+Begin %I BSpl
+%I b 65535
+1 0 1 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 -4 119 ] concat
+%I 3
+36 337
+36 305
+76 257
+3 BSpl
+%I 1
+End
+
+Begin %I BSpl
+%I b 65535
+1 0 1 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 -4 119 ] concat
+%I 3
+44 337
+52 297
+108 265
+3 BSpl
+%I 1
+End
+
+Begin %I BSpl
+%I b 65535
+1 0 1 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 -4 119 ] concat
+%I 3
+52 337
+68 297
+132 273
+3 BSpl
+%I 1
+End
+
+Begin %I BSpl
+%I b 65535
+1 0 1 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 -4 119 ] concat
+%I 3
+164 337
+164 321
+172 273
+3 BSpl
+%I 1
+End
+
+Begin %I BSpl
+%I b 65535
+1 0 1 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 -4 119 ] concat
+%I 3
+172 337
+172 321
+204 289
+3 BSpl
+%I 1
+End
+
+Begin %I Pict
+%I b u
+%I cfg u
+%I cbg u
+%I f u
+%I p u
+%I t
+[ 1 0 0 1 0 104 ] concat
+
+Begin %I Rect
+none SetB %I b n
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+%I p
+1 SetP
+%I t
+[ 1 -0 -0 1 -4 119 ] concat
+%I
+28 201 92 217 Rect
+End
+
+Begin %I Text
+%I cfg Black
+0 0 0 SetCFg
+%I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
+Courier 10 SetF
+%I t
+[ 1 0 0 1 29.5 332 ] concat
+%I
+[
+(AddStrn\(\))
+] Text
+End
+
+End %I eop
+
+Begin %I Pict
+%I b u
+%I cfg u
+%I cbg u
+%I f u
+%I p u
+%I t u
+
+Begin %I Text
+%I cfg Black
+0 0 0 SetCFg
+%I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
+Courier 10 SetF
+%I t
+[ 1 0 0 1 471 481 ] concat
+%I
+[
+(write\(\))
+] Text
+End
+
+Begin %I Pict
+%I b u
+%I cfg u
+%I cbg u
+%I f u
+none SetP %I p n
+%I t
+[ 1 0 0 1 0 -120 ] concat
+
+Begin %I CBSpl
+%I b 65520
+2 0 0 [12 4] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg LtGray
+0.762951 0.762951 0.762951 SetCBg
+%I p
+0.5 SetP
+%I t
+[ 0.5 0 0 0.5 350 482.5 ] concat
+%I 12
+340 107
+340 123
+340 187
+340 203
+356 203
+468 203
+484 203
+484 187
+484 123
+484 107
+468 107
+356 107
+12 CBSpl
+End
+
+Begin %I Text
+%I cfg Black
+0 0 0 SetCFg
+%I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
+Courier 10 SetF
+%I t
+[ 1 0 0 1 511.5 533 ] concat
+%I
+[
+(w_pwin->p_ptyfd)
+] Text
+End
+
+End %I eop
+
+Begin %I BSpl
+%I b 65535
+1 1 0 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 -4 119 ] concat
+%I 3
+516 345
+492 353
+468 345
+3 BSpl
+%I 1
+End
+
+Begin %I Pict
+%I b u
+%I cfg u
+%I cbg u
+%I f u
+%I p u
+%I t u
+
+Begin %I Text
+%I cfg Black
+0 0 0 SetCFg
+%I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
+Courier 10 SetF
+%I t
+[ 1 0 0 1 391.5 445.5 ] concat
+%I
+[
+(w_pwin->p_inbuf)
+] Text
+End
+
+Begin %I Pict
+%I b u
+%I cfg u
+%I cbg u
+%I f u
+%I p u
+%I t u
+
+Begin %I Poly
+none SetB %I b n
+%I cfg Black
+0 0 0 SetCFg
+%I cbg LtGray
+0.762951 0.762951 0.762951 SetCBg
+none SetP %I p n
+%I t
+[ 0.5 0 0 0.5 342 290.5 ] concat
+%I 4
+164 315
+228 315
+228 363
+164 363
+4 Poly
+End
+
+Begin %I Rect
+%I b 65520
+2 0 0 [12 4] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 0 0 1 215 85.0002 ] concat
+%I
+233 363 241 387 Rect
+End
+
+Begin %I Line
+%I b 65520
+2 0 0 [12 4] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 0 0 1 215 85.0002 ] concat
+%I
+225 387 225 363 Line
+%I 1
+End
+
+Begin %I Line
+%I b 65520
+2 0 0 [12 4] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 0 0 1 215 85.0002 ] concat
+%I
+233 363 201 363 Line
+%I 1
+End
+
+Begin %I Line
+%I b 65520
+2 0 0 [12 4] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 0 0 1 215 85.0002 ] concat
+%I
+201 387 233 387 Line
+%I 1
+End
+
+Begin %I Line
+%I b 65520
+2 0 0 [12 4] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 119 140 ] concat
+%I
+313 308 313 332 Line
+%I 1
+End
+
+End %I eop
+
+End %I eop
+
+End %I eop
+
+Begin %I Line
+%I b 65520
+0 0 0 [12 4] 0 SetB
+%I cfg LtGray
+0.762951 0.762951 0.762951 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 -22 198.5 ] concat
+%I
+222 210 358 106 Line
+%I 1
+End
+
+Begin %I Line
+%I b 65520
+0 0 0 [12 4] 0 SetB
+%I cfg LtGray
+0.762951 0.762951 0.762951 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 -22 198.5 ] concat
+%I
+190 194 198 106 Line
+%I 1
+End
+
+Begin %I Line
+%I b 65520
+0 0 0 [12 4] 0 SetB
+%I cfg LtGray
+0.762951 0.762951 0.762951 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 -22 198.5 ] concat
+%I
+150 194 518 106 Line
+%I 1
+End
+
+Begin %I Line
+%I b 65520
+0 0 0 [12 4] 0 SetB
+%I cfg LtGray
+0.762951 0.762951 0.762951 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 -22 198.5 ] concat
+%I
+126 186 358 106 Line
+%I 1
+End
+
+Begin %I Line
+%I b 65520
+0 0 0 [12 4] 0 SetB
+%I cfg LtGray
+0.762951 0.762951 0.762951 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 -22 198.5 ] concat
+%I
+94 178 198 106 Line
+%I 1
+End
+
+Begin %I Pict
+%I b u
+%I cfg u
+%I cbg u
+%I f u
+%I p u
+%I t u
+
+Begin %I Text
+%I cfg Black
+0 0 0 SetCFg
+%I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
+Courier 10 SetF
+%I t
+[ 1 0 0 1 184 615 ] concat
+%I
+[
+(Special\(\))
+] Text
+End
+
+Begin %I BSpl
+%I b 65535
+1 0 1 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 -4 127 ] concat
+%I 6
+220 505
+220 529
+196 529
+164 529
+140 529
+140 505
+6 BSpl
+%I 1
+End
+
+Begin %I BSpl
+%I b 65535
+1 0 1 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 -22 198.5 ] concat
+%I 3
+166 425
+166 409
+198 378
+3 BSpl
+%I 1
+End
+
+Begin %I BSpl
+%I b 65535
+1 0 1 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 -22 198.5 ] concat
+%I 3
+158 425
+158 410
+182 370
+3 BSpl
+%I 1
+End
+
+Begin %I BSpl
+%I b 65535
+1 0 1 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 -22 198.5 ] concat
+%I 3
+150 425
+150 409
+158 362
+3 BSpl
+%I 1
+End
+
+End %I eop
+
+Begin %I BSpl
+%I b 65535
+1 0 1 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 -22 198.5 ] concat
+%I 3
+198 257
+198 241
+254 210
+3 BSpl
+%I 1
+End
+
+Begin %I Pict
+%I b u
+%I cfg u
+%I cbg u
+%I f u
+%I p u
+%I t
+[ 1 0 0 1 120 48 ] concat
+
+Begin %I Rect
+none SetB %I b n
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+%I p
+1 SetP
+%I t
+[ 1 -0 -0 1 -4 119 ] concat
+%I
+28 257 108 273 Rect
+End
+
+Begin %I Text
+%I cfg Black
+0 0 0 SetCFg
+%I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
+Courier 10 SetF
+%I t
+[ 1 0 0 1 28.5 388 ] concat
+%I
+[
+(MakeStatus\(\))
+] Text
+End
+
+End %I eop
+
+Begin %I Line
+%I b 65520
+0 0 0 [12 4] 0 SetB
+%I cfg LtGray
+0.762951 0.762951 0.762951 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 -22 198.5 ] concat
+%I
+254 210 518 106 Line
+%I 1
+End
+
+Begin %I Line
+%I b 65520
+0 0 0 [12 4] 0 SetB
+%I cfg LtGray
+0.762951 0.762951 0.762951 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 -22 198.5 ] concat
+%I
+198 378 518 106 Line
+%I 1
+End
+
+Begin %I Line
+%I b 65520
+0 0 0 [12 4] 0 SetB
+%I cfg LtGray
+0.762951 0.762951 0.762951 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 -22 198.5 ] concat
+%I
+182 370 358 106 Line
+%I 1
+End
+
+Begin %I Line
+%I b 65520
+0 0 0 [12 4] 0 SetB
+%I cfg LtGray
+0.762951 0.762951 0.762951 SetCFg
+%I cbg Black
+0 0 0 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 -22 198.5 ] concat
+%I
+158 362 198 106 Line
+%I 1
+End
+
+Begin %I BSpl
+%I b 65535
+2 0 1 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 -4 119 ] concat
+%I 4
+268 337
+268 281
+180 241
+180 185
+4 BSpl
+%I 1
+End
+
+Begin %I BSpl
+%I b 65535
+2 0 1 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 0.5 -0 -0 0.5 197.5 193.5 ] concat
+%I 4
+181 525
+181 413
+277 333
+277 221
+4 BSpl
+%I 2
+End
+
+Begin %I BSpl
+%I b 65535
+2 0 1 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 -4 119 ] concat
+%I 4
+316 337
+316 281
+500 241
+500 185
+4 BSpl
+%I 1
+End
+
+Begin %I Text
+%I cfg Black
+0 0 0 SetCFg
+%I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
+Courier 10 SetF
+%I t
+[ 0.587415 -0.809286 0.809286 0.587415 298.171 395.796 ] concat
+%I
+[
+(AddChar\(\))
+] Text
+End
+
+Begin %I Text
+%I cfg Black
+0 0 0 SetCFg
+%I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
+Courier 10 SetF
+%I t
+[ 0.810117 0.586269 -0.586269 0.810117 198.687 362.705 ] concat
+%I
+[
+(AddChar\(\))
+] Text
+End
+
+Begin %I Text
+%I cfg Black
+0 0 0 SetCFg
+%I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
+Courier 10 SetF
+%I t
+[ 0.954268 -0.298951 0.298951 0.954268 391.408 381.739 ] concat
+%I
+[
+(AddChar\(\))
+] Text
+End
+
+Begin %I BSpl
+%I b 65535
+2 0 1 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg Black
+0 0 0 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 -4 119 ] concat
+%I 5
+412 409
+308 409
+292 409
+292 393
+292 361
+5 BSpl
+%I 1
+End
+
+Begin %I Text
+%I cfg Black
+0 0 0 SetCFg
+%I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
+Courier 10 SetF
+%I t
+[ 1 0 0 1 232.5 473.5 ] concat
+%I
+[
+(w_dlist->next->next...)
+] Text
+End
+
+Begin %I Text
+%I cfg Black
+0 0 0 SetCFg
+%I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
+Courier 10 SetF
+%I t
+[ 1 0 0 1 134 540 ] concat
+%I
+[
+(PrintChar\(\))
+] Text
+End
+
+Begin %I Text
+%I cfg Black
+0 0 0 SetCFg
+%I f -*-courier-medium-r-normal-*-10-*-*-*-*-*-*-*
+Courier 10 SetF
+%I t
+[ 1 0 0 1 139 525 ] concat
+%I
+[
+(SaveChar\(\))
+] Text
+End
+
+Begin %I BSpl
+%I b 65535
+1 0 1 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg Black
+0 0 0 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 -4 119 ] concat
+%I 5
+412 409
+292 409
+148 409
+132 409
+132 393
+5 BSpl
+%I 1
+End
+
+Begin %I BSpl
+%I b 65535
+1 0 1 [] 0 SetB
+%I cfg Black
+0 0 0 SetCFg
+%I cbg White
+1 1 1 SetCBg
+none SetP %I p n
+%I t
+[ 1 -0 -0 1 -4 119 ] concat
+%I 4
+244 409
+220 409
+220 433
+220 481
+4 BSpl
+%I 1
+End
+
+End %I eop
+
+showpage
+
+%%Trailer
+
+end