diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-06 02:20:21 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-06 02:20:21 +0000 |
commit | 4f64827f3a395072f300b86ef17f730805b47048 (patch) | |
tree | c16297f7d68903dc80c86e3003b8e3ab5f030f7d /doc/screen.1 | |
parent | Initial commit. (diff) | |
download | screen-upstream.tar.xz screen-upstream.zip |
Adding upstream version 4.6.2.upstream/4.6.2upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | doc/screen.1 | 5273 |
1 files changed, 5273 insertions, 0 deletions
diff --git a/doc/screen.1 b/doc/screen.1 new file mode 100644 index 0000000..29359e5 --- /dev/null +++ b/doc/screen.1 @@ -0,0 +1,5273 @@ +.\" vi:set wm=5 +.TH SCREEN 1 "Oct 2017" +.if n .ds Q \&" +.if n .ds U \&" +.if t .ds Q `` +.if t .ds U '' +.UC 4 +.SH NAME +screen \- screen manager with VT100/ANSI terminal emulation + + +.SH SYNOPSIS +.B screen +[ +.B \-\fIoptions\fP +] [ +.B \fIcmd\fP +[ +.B \fIargs\fP +] ] +.br +.B screen \-r +[[\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 + + +.SH DESCRIPTION +.I 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 a DEC VT100 terminal and, 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 moving text regions between +windows. +.PP +When +.I 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 can use the program as you +normally would. +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. 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 +window; if none are left, +.I screen +exits. Shells usually distinguish between running as login-shell or sub-shell. +Screen runs them as sub-shells, unless told otherwise (See \*Qshell\*U .screenrc command). +.PP +Everything you type is sent to the program running in the current window. +The only exception to this is the one keystroke that is used to initiate +a command to the window manager. +By default, each command begins with a control-a (abbreviated C-a from +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, although this notation is +used in this manual for readability. +Please use the caret notation (\*Q^A\*U instead of \*QC-a\*U) as arguments +to e.g. the +.I escape +command or the \fI-e\fP 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 +in the current window. +Similarly, you can create a new window with a custom command in it by +first binding the command to a keystroke (in your .screenrc file or at the +\*QC-a :\*U command line) and +then using it just like the \*QC-a c\*U command. +In addition, new windows can be created by running a command like: +.IP +screen emacs prog.c +.PP +from a shell prompt within a previously created window. +This will not run another copy of +.IR screen , +but will instead supply the command name and its arguments to the window +manager (specified in the $STY environment variable) who will use it to +create the new window. +The above example would start the emacs editor (editing prog.c) and switch +to its window. - Note that you cannot transport environment variables from +the invoking shell to the application (emacs in this case), because it is +forked from the parent screen process, not from the invoking shell. +.PP +If \*Q/etc/utmp\*U is writable by +.IR screen , +an appropriate record will be written to this file for each window, and +removed when the window is terminated. +This is useful for working with \*Qtalk\*U, \*Qscript\*U, \*Qshutdown\*U, +\*Qrsend\*U, \*Qsccs\*U and other similar programs that use the utmp +file to determine who you are. As long as +.I screen +is active on your terminal, +the terminal's own record is removed from the utmp file. See also \*QC-a L\*U. + + +.SH GETTING STARTED +Before you begin to use +.I screen +you'll need to make sure you have correctly selected your terminal type, +just as you would for any other termcap/terminfo program. +(You can do this by using +.IR tset +for example.) +.PP +If you're impatient and want to get started without doing a lot more reading, +you should remember this one command: \*QC-a ?\*U. +Typing these two characters will display a list of the available +.I screen +commands and their bindings. Each keystroke is discussed in +the section \*QDEFAULT KEY BINDINGS\*U. The manual section \*QCUSTOMIZATION\*U +deals with the contents of your .screenrc. +.PP +If your terminal is a \*Qtrue\*U auto-margin terminal (it doesn't allow +the last position on the screen to be updated without scrolling the +screen) consider using a version of your terminal's termcap that has +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 +.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 +delay can be shortened by using a terminal with insert-character +capability. + + +.SH "COMMAND-LINE OPTIONS" +Screen has the following command-line options: +.TP 5 +.B \-a +include \fIall\fP capabilities (with some minor exceptions) in each +window's termcap, even if +.I screen +must redraw parts of the display in order to implement a function. +.TP 5 +.B \-A +Adapt the sizes of all windows to the size of the current terminal. +By default, +.I screen +tries to restore its old window sizes when attaching to resizable terminals +(those with \*QWS\*U in its description, e.g. suncmd or some xterm). +.TP 5 +.BI "\-c " file +override the default configuration file from \*Q$HOME/.screenrc\*U +to \fIfile\fP. +.TP 5 +.BR \-d | \-D " [" \fIpid.tty.host ] +does not start +.IR screen , +but detaches the elsewhere running +.I screen +session. It has the same effect as typing \*QC-a d\*U from +.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. 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 +specifies the command character to be \fIx\fP and the character generating a +literal command character to \fIy\fP (when typed after the command character). +The default is \*QC-a\*U and `a', which can be specified as \*Q-e^Aa\*U. +When creating a +.I screen +session, this option sets the default command character. In a multiuser +session all users added will start off with this command character. But +when attaching to an already running session, this option changes only +the command character of the attaching user. +This option is equivalent to either the commands \*Qdefescape\*U or +\*Qescape\*U respectively. +.TP 5 +.BR \-f\fP ", " \-fn ", and " \-fa +turns flow-control on, off, or \*Qautomatic switching mode\*U. +This can also be defined through the \*Qdefflow\*U .screenrc command. +.TP 5 +.BI "\-h " num +Specifies the history scrollback buffer to be \fInum\fP lines high. +.TP 5 +.B \-i +will cause the interrupt key (usually C-c) to interrupt the display +immediately when flow-control is on. +See the \*Qdefflow\*U .screenrc command for details. +The use of this option is discouraged. +.TP 5 +.BR \-l " and " \-ln +turns login mode on or off (for /etc/utmp updating). +This can also be defined through the \*Qdeflogin\*U .screenrc command. +.TP 5 +.BR \-ls " [" \fImatch ] +.PD 0 +.TP 5 +.BR \-list " [" \fImatch ] +.PD +does not start +.IR screen , +but prints a list of +.I pid.tty.host +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. 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 +to turn on automatic output logging for the windows. +.TP 5 +.BI "\-Logfile " file +By default logfile name is \*Qscreenlog.0\*Q. You can set new logfile name +with the \*Q-Logfile\*Q option. +.TP 5 +.B \-m +causes +.I screen +to ignore the $STY environment variable. With \*Qscreen \-m\*U creation of +a new session is enforced, regardless whether +.I screen +is called from within another +.I screen +session or not. This flag has a special meaning in connection +with the `\-d' option: +.TP 8 +.B \-d \-m +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 \-D \-m +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 +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 +.BI "\-p " number_or_name|-|=|+ +Preselect a window. This is useful when you want to reattach to a +specific window or you want to send a command via the \*Q-X\*U +option to a specific window. As with screen's select command, \*Q-\*U +selects the blank window. As a special case for reattach, \*Q=\*U +brings up the windowlist on the blank window, while a \*Q+\*U +will create a new window. The command will not be +executed if the specified window could not be found. +.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 +.B \-Q +Some commands now can be queried from a remote session using this +flag, e.g. \*Qscreen \-Q windows\*U. The commands will send the +response to the stdout of the querying process. If there was an +error in the command, then the querying process will exit with +a non-zero status. + +The commands that can be queried now are: + \fBecho\fP + \fBinfo\fP + \fBlastmsg\fP + \fBnumber\fP + \fBselect\fP + \fBtime\fP + \fBtitle\fP + \fBwindows\fP +.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 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. 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 +resumes screen only when it's unambiguous which one to attach, usually +when only one +.I screen +is detached. Otherwise lists available sessions. +.B \-RR +attempts to resume the first detached +.I screen +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 (actually screen uses \*Q\-xRR\*U in that case). +For combinations with the \fB\-d\fP/\fB\-D\fP option see there. +.TP 5 +.BI "\-s " program +sets the default shell to the program specified, instead of the value +in the environment variable $SHELL (or \*Q/bin/sh\*U if not defined). +This can also be defined through the \*Qshell\*U .screenrc command. +See also there. +.TP 5 +.BI "\-S " sessionname +When creating a new session, this option can be used to specify a +meaningful name for the session. This name identifies the session for +\*Qscreen \-list\*U and \*Qscreen \-r\*U actions. It substitutes the +default [\fItty.host\fP] suffix. +.TP 5 +.BI "\-t " name +sets the title (a.\|k.\|a.) for the default shell or specified program. +See also the \*Qshelltitle\*U .screenrc command. +.TP 5 +.BI "\-T " term +Set the $TERM environment variable using the specified term as +opposed to the default setting of \fBscreen\fP. +.TP 5 +.B \-U +Run screen in UTF-8 mode. This option tells screen that your terminal +sends and understands UTF-8 encoded characters. It also sets the default +encoding for new windows to `utf8'. +.TP 5 +.B \-v +Print version number. +.TP 5 +.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 +.I screen +session. (Multi display mode). +.I Screen +refuses to attach from within itself. +But when cascading multiple screens, loops are not detected; take care. +.TP 5 +.B \-X +Send the specified command to a running screen session. You may +use the \fB-S\fP option to specify the screen session if you have +several screen sessions running. You can use the \fB-d\fP or +\fB-r\fP option to tell screen to look only for attached or +detached screen sessions. Note that this command doesn't work if +the session is password protected. + +.TP 5 +.B \-4 +Resolve hostnames only to IPv4 addresses. +.TP 5 +.B \-6 +Resolve hostnames only to IPv6 addresses. +.SH "DEFAULT KEY BINDINGS" +.ta 12n 26n +As mentioned, each +.I screen +command consists of a +\*QC-a\*U followed by one other character. +For your convenience, all commands that are bound to lower-case letters are +also bound to their control character counterparts (with the exception +of \*QC-a a\*U; see below), thus, \*QC-a c\*U as well as \*QC-a C-c\*U can +be used to create a window. See section \*QCUSTOMIZATION\*U for a description +of the command. +.PP +The following table shows the default key bindings. The trailiing +commas in boxes with multiple keystroke entries are separators, +not part of the bindings. +.TS +allbox tab(;); +lb l l. +C-a ';(select);T{ +Prompt for a window name or number to switch to. +T} +C-a \[dq];(windowlist -b);T{ +Present a list of all windows for selection. +T} +C-a \fIdigit\fP;(select 0-9);T{ +Switch to window number 0 \- 9 +T} +C-a -;(select -);T{ +Switch to window number 0 \- 9, or to the blank window. +T} +C-a tab;(focus);T{ +Switch the input focus to the next region. +See also \fIsplit, remove, only\fP. +T} +C-a C-a;(other);T{ +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. +T} +C-a a ;(meta);T{ +Send the command character (C-a) to window. See \fIescape\fP command. +T} +C-a A;(title);T{ +Allow the user to enter a name for the current window. +T} +T{ +C-a b, +.br +C-a C-b +T};(break);T{ +Send a break to window. +T} +C-a B;(pow_break);T{ +Reopen the terminal line and send a break. +T} +T{ +C-a c, +.br +C-a C-c +T};(screen);T{ +Create a new window with a shell and switch to that window. +T} +C-a C\fP;(clear);T{ +Clear the screen. +T} +T{ +C-a d, +.br +C-a C-d +T};(detach);T{ +Detach +.I screen +from this terminal. +T} +C-a D D;(pow_detach);T{ +Detach and logout. +T} +T{ +C-a f, +.br +C-a C-f\fP +T};(flow);T{ +Toggle flow \fIon\fP, \fIoff\fP or \fIauto\fP. +T} +C-a F;(fit);T{ +Resize the window to the current region size. +T} +C-a C-g;(vbell);T{ +Toggles +.I screen's +visual bell mode. +T} +C-a h;(hardcopy);T{ +Write a hardcopy of the current window to the file \*Qhardcopy.\fIn\fP\*U. +T} +C-a H;(log);T{ +Begins/ends logging of the current window to the file \*Qscreenlog.\fIn\fP\*U. +T} +T{ +C-a i, +.br +C-a C-i +T};(info);T{ +Show info about this window. +T} +T{ +C-a k, +.br +C-a C-k +T};(kill);T{ +Destroy current window. +T} +T{ +C-a l, +.br +C-a C-l +T};(redisplay);T{ +Fully refresh current window. +T} +C-a L;(login);T{ +Toggle this windows login slot. Available only if +.I screen +is configured to update the utmp database. +T{ +C-a m, +.br +C-a C-m +T};(lastmsg);T{ +Repeat the last message displayed in the message line. +T} +C-a M;(monitor);T{ +Toggles monitoring of the current window. +T} +T{ +C-a space, +.br +C-a n, +.br +C-a C-n +T};(next);T{ +Switch to the next window. +T} +C-a N;(number);T{ +Show the number (and title) of the current window. +T} +T{ +C-a backspace, +.br +C-a C-h, +.br +C-a p, +.br +C-a C-p +T};(prev);T{ +Switch to the previous window (opposite of \fBC-a n\fP). +T} +T{ +C-a q, +.br +C-a C-q +T};(xon);T{ +Send a control-q to the current window. +T} +C-a Q;(only);T{ +Delete all regions but the current one. +See also \fIsplit, remove, focus\fP. +T} +T{ +C-a r, +.br +C-a C-r +T};(wrap);T{ +Toggle the current window's line-wrap setting (turn the current window's +automatic margins on and off). +T} +T{ +C-a s, +.br +C-a C-s; +T};(xoff);T{ +Send a control-s to the current window. +T} +C-a S;(split);T{ +Split the current region horizontally into two new ones. +See also \fIonly, remove, focus\fP. +T} +T{ +C-a t, +.br +C-a C-t +T};(time);T{ +Show system information. +T} +C-a v;(version);T{ +Display the version and compilation date. +T} +C-a C-v;(digraph);T{ +Enter digraph. +T} +T{ +C-a w, +.br +C-a C-w +T};(windows);T{ +Show a list of window. +T} +C-a W;(width);T{ +Toggle 80/132 columns. +T} +C-a x \fRor\fP C-a C-x;(lockscreen);T{ +Lock this terminal. +T} +C-a X\fP ;(remove);T{ +Kill the current region. +See also \fIsplit, only, focus\fP. +T} +T{ +C-a z, +.br +C-a C-z +T};(suspend);T{ +Suspend +.IR screen . +Your system must support BSD-style job-control. +T} +C-a Z;(reset);T{ +Reset the virtual terminal to its \*Qpower-on\*U values. +T} +C-a .;(dumptermcap);T{ +Write out a \*Q.termcap\*U file. +T} +C-a ?;(help);T{ +Show key bindings. +T} +C-a \e;(quit);T{ +Kill all windows and terminate +.IR screen . +T} +C-a :;(colon);T{ +Enter command line mode. +T} +T{ +C-a [, +.br +C-a C-[\fP, +.br +C-a esc +T};(copy);T{ +Enter copy/scrollback mode. +T} +T{ +C-a C-], +.br +C-a ] +T};(paste .);T{ +Write the contents of the paste buffer to the stdin queue of the +current window. +T} +T{ +C-a {\fP, +.br +C-a } +T};(history);T{ +Copy and paste a previous (command) line. +T} +C-a >;(writebuf);T{ +Write paste buffer to a file. +T} +C-a <;(readbuf);T{ +Reads the screen-exchange file into the paste buffer. +T} +C-a =;(removebuf);T{ +Removes the file used by \fBC-a <\fP and \fPC-a >\fP. +T} +C-a ,;(license);T{ +Shows where +.I screen +comes from, where it went to and why you can use it. +T} +C-a _;(silence);T{ +Start/stop monitoring the current window for inactivity. +T} +C-a |;(split -v);T{ +Split the current region vertically into two new ones. +T} +C-a *;(displays);T{ +Show a listing of all currently attached displays. +T} +.TE + +.SH CUSTOMIZATION +The \*Qsocket directory\*U defaults either to $HOME/.screen or simply to +/tmp/screens or preferably to /usr/local/screens chosen at compile-time. If +.I screen +is installed setuid-root, then the administrator +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 700 directory +in the environment variable $SCREENDIR. +.PP +When +.I screen +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 +.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 $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 +keys, and to automatically establish one or more windows at the +beginning of your +.I screen +session. +Commands are listed one per line, with empty lines being ignored. +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 +.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: +.TP +.BI acladd " usernames " \fR[\fP crypted-pw \fR]\fR +.TP +.BI addacl " usernames" +.RS 0 +.PP +Enable users to fully access this screen session. \fIUsernames\fP can be one +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. +.RE +.TP +.BI aclchg " usernames permbits list" +.TP +.BI chacl " usernames permbits list" +.RS 0 +.PP +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. +.PP +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 window 2: +`aclchg \fIusername\fP \-w+w 2'. +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. +.RE +.TP +.BI acldel " username" +.RS 0 +.PP +Remove a user from +.IR 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. +.RE +.TP +.BI aclgrp " username " \fR[\fP groupname \fR]\fP +.RS 0 +.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. +.RE +.TP +\fBaclumask\fP [[ \fIusers\fP ] \fI+bits\fP | [ \fIusers\fR ] \fI-bits...\fP ] +.TP +\fBumask\fP [[ \fIusers\fP ] \fI+bits\fP | [ \fIusers\fR ] \fI-bits...\fP ] +.RS 0 +.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'. +.RE +.TP +.BI activity " message" +.RS 0 +.PP +When any activity occurs in a background window that is being monitored, +.I screen +displays a notification in the message line. +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 `^G' is replaced by the definition for bell +in your termcap (usually an audible bell). +The default message is +.sp + '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). +.RE +.TP +.BR "allpartial on" | off +.RS 0 +.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 +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 behavior of newly created windows. +.RE +.TP +.BR "altscreen on" | off +.RS 0 +.PP +If set to on, "alternate screen" support is enabled in virtual terminals, +just like in xterm. Initial setting is `off'. +.RE +.TP +.BR "at " "[\fIidentifier\fP][" "#\fP|\fP*\fP|\fP%\fP] " "command " [ \fIargs\fP " … ]" +.RS 0 +.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 +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 +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 +`%'-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. 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). +.PP +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. \*Qprocess\*U) require that +a display is associated with the target windows. These commands may not work +correctly under \*Qat\*U looping over windows. +.RE +.TP +.BI "attrcolor " "attrib " \fR[\fP "attribute/color-modifier" \fR]\fP +.RS 0 +.PP +This command can be used to highlight attributes by changing the color of +the text. If the attribute +.I attrib +is in use, the specified attribute/color modifier is also applied. If no +modifier is given, the current one is deleted. See the \*QSTRING ESCAPES\*U +chapter for the syntax of the modifier. Screen understands two +pseudo-attributes, \*Qi\*U stands for high-intensity foreground +color and \*QI\*U for high-intensity background color. +.sp +Examples: +.IP +attrcolor b "R" +.PP +Change the color to bright red if bold text is to be printed. +.IP +attrcolor u "\-u b" +.PP +Use blue text instead of underline. +.IP +attrcolor b ".I" +.PP +Use bright colors for bold text. Most terminal emulators do this +already. +.IP +attrcolor i "+b" +.PP +Make bright colored text also bold. +.RE +.TP +.BR "autodetach on" | off +.RS 0 +.PP +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 +.I screen +and all the processes it contains. Autodetach is on by default. +.RE +.TP +.BR "autonuke on" | off +.RS 0 +.PP +Sets whether a clear screen sequence should nuke all the output +that has not been written to the terminal. See also +\*Qobuflimit\*U. +.RE +.TP +.BI "backtick " "id lifespan autorefresh cmd args…" +.TP +.BI "backtick " id +.RS 0 +.PP +Program the backtick command with the numerical id \fIid\fP. +The output of such a command is used for substitution of the +\*Q%`\*U string escape. The specified \fIlifespan\fP is the number +of seconds the output is considered valid. After this time, the +command is run again if a corresponding string escape is encountered. +The \fIautorefresh\fP parameter triggers an +automatic refresh for caption and hardstatus strings after the +specified number of seconds. Only the last line of output is used +for substitution. +.PP +If both the \fIlifespan\fP and the \fIautorefresh\fP parameters +are zero, the backtick program is expected to stay in the +background and generate output once in a while. +In this case, the command is executed right away and screen stores +the last line of output. If a new line gets printed screen will +automatically refresh the hardstatus or the captions. +.PP +The second form of the command deletes the backtick command +with the numerical id \fIid\fP. +.RE +.TP +.BR "bce " [ on | off ] +.RS 0 +.PP +Change background-color-erase setting. If \*Qbce\*U is set to on, all +characters cleared by an erase/insert/scroll/clear operation +will be displayed in the current background color. Otherwise +the default background color is used. +.RE +.TP +.BR "bell_msg " [ \fImessage\fP ] +.RS 0 +.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 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 `^G' is replaced by the definition for bell +in your termcap (usually an audible bell). +The default message is +.sp +.RS + 'Bell in window %n' +.RE +.sp +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. +.RE +.TP +.BR "bind " [ \fIclass\fP ] " \fIkey\fP " [ \fIcommand\fP " [" \fIargs\fP ]] +.RS 0 +.PP +Bind a command to a key. +By default, most of the commands provided by +.I screen +are bound to one or more keys as indicated in the \*QDEFAULT KEY BINDINGS\*U +section, e.\|g. the +command to create a new window is bound to \*QC-c\*U and \*Qc\*U. +The \*Qbind\*U command can be used to redefine the key bindings and to +define new bindings. +The \fIkey\fP 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 +by a second character, such as \*Q\e^\*U or \*Q\e\e\*U. +The argument can also be quoted, if you like. +If no further argument is given, any previously established binding +for this key is removed. +The \fIcommand\fP argument can be any command listed in this section. +.PP +If a command class is specified via the \*Q\-c\*U option, the key +is bound for the specified class. Use the \*Qcommand\*U command +to activate a class. Command classes can be used to create multiple +command keys or multi-character bindings. +.PP +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). 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 superuser shell and a scrollback buffer of 1000 lines. +.PP +.nf + bind \-c demo1 0 select 10 + bind \-c demo1 1 select 11 + bind \-c demo1 2 select 12 + bindkey "^B" command \-c demo1 +.fi +.PP +makes \*QC-b 0\*U select window 10, \*QC-b 1\*U window 11, etc. +.PP +.nf + bind \-c demo2 0 select 10 + bind \-c demo2 1 select 11 + bind \-c demo2 2 select 12 + bind \- command \-c demo2 +.fi +.PP +makes \*QC-a \- 0\*U select window 10, \*QC-a \- 1\*U window 11, etc. +.RE +.TP +.BR "bindkey " [ \-d "] [" \-m "] [" \-a "] [[" \-k | \-t ] " \fIstring\fR " [ "\fIcmd-args\fP" ]] +.RS 0 +.PP +This command manages screen's input translation tables. Every +entry in one of the tables tells screen how to react if a certain +sequence of characters is encountered. There are three tables: +one that should contain actions programmed by the user, one for +the default actions used for terminal emulation and one for +screen's copy mode to do cursor movement. See section +\*QINPUT TRANSLATION\*U for a list of default key bindings. +.PP +If the +.B \-d +option is given, bindkey modifies the default table, +.B \-m +changes the copy mode table +and with neither option the user table is selected. +The argument +.I string +is the sequence of characters to which an action is bound. This +can either be a fixed string or a termcap keyboard capability +name (selectable with the +.B \-k +option). +.PP +Some keys on a VT100 terminal can send a different +string if application mode is turned on (e.g the cursor keys). +Such keys have two entries in the translation table. You can +select the application mode entry by specifying the +.B \-a +option. +.PP +The +.B \-t +option tells screen not to do inter-character timing. One cannot +turn off the timing if a termcap capability is used. +.PP +.I Cmd +can be any of screen's commands with an arbitrary number of +.IR args . +If +.I cmd +is omitted the key-binding is removed from the table. +.PP +Here are some examples of keyboard bindings: +.sp +.nf + bindkey \-d +.fi +Show all of the default key bindings. The application mode entries +are marked with [A]. +.sp +.nf + bindkey \-k k1 select 1 +.fi +Make the "F1" key switch to window one. +.sp +.nf + bindkey \-t foo stuff barfoo +.fi +Make "foo" an abbreviation of the word "barfoo". Timeout is disabled +so that users can type slowly. +.sp +.nf + bindkey "\e024" mapdefault +.fi +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). +.sp +.nf + bindkey \-k F1 command +.fi +Make the F11 (not F1!) key an alternative screen +escape (besides ^A). +.RE +.TP +.BR break [ \fIduration\fR ] +.RS 0 +.PP +Send a break signal for \fIduration\fP*0.25 seconds to this window. +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. +.RE +.TP +.B blanker +.RS 0 +.PP +Activate the screen blanker. First the screen is cleared. If no blanker +program is defined, the cursor is turned off, otherwise, the +program is started and it's output is written to the screen. +The screen blanker is killed with the first keypress, the read key +is discarded. +.PP +This command is normally used together with the \*Qidle\*U command. +.RE +.TP +.IR "\fBblankerprg\fR " [ "program-args" ] +.RS 0 +.PP +Defines a blanker program. Disables the blanker program if an +empty argument is given. Shows the currently set blanker program if no +arguments are given. +.RE +.TP +.IR "\fBbreaktype\fP " [ tcsendbreak | TIOCSBRK | TCSBRK ] +.RS 0 +.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. +.RE +.TP +.IR "\fBbufferfile\fP " [ exchange-file ] +.RS 0 +.PP +Change the filename used for reading and writing with the paste buffer. +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 +.I screen +window (using the paste buffer, where a copy remains): +.PP +.nf + C-a : bufferfile /etc/passwd + C-a < C-a ] + C-a : bufferfile +.fi +.sp +.ne 3 +.BR bumpleft +.PP +Swaps window with previous one on window list. +.RE +.TP +.BR bumpright +.RS 0 +.PP +Swaps window with next one on window list. +.RE +.TP +.BR "c1 " [ on | off ] +.RS 0 +.PP +Change c1 code processing. \*QC1 on\*U tells screen to treat +the input characters between 128 and 159 as control functions. +Such an 8-bit code is normally the same as ESC followed by the +corresponding 7-bit code. The default setting is to process c1 +codes and can be changed with the \*Qdefc1\*U command. +Users with fonts that have usable characters in the +c1 positions may want to turn this off. +.RE +.TP +.BR "caption [ top | bottom ] always" | splitonly [ string ] +.TP +.IR "\fBcaption string\fP " [ string ] +.RS 0 +.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. +.P +You can have the caption displayed either at the top or bottom of the window. +The default is +.BR bottom . +.RE +.TP +.BI "charset " set +.RS 0 +.PP +Change the current character set slot designation and charset +mapping. The first four character of +.I set +are treated as charset designators while the fifth and sixth +character must be in range '0' to '3' and set the GL/GR charset +mapping. On every position a '.' may be used to indicate that +the corresponding charset/mapping should not be changed +(\fIset\fP is padded to six characters internally by appending '.' +chars). New windows have "BBBB02" as default charset, unless a +\*Qencoding\*U command is active. +.br +The current setting can be viewed with the \*Qinfo\*U command. +.RE +.TP +.IR "\fBchdir\fP " [ directory ] +.RS 0 +.PP +Change the \fIcurrent directory\fP of +.I screen +to the specified directory or, if called without an argument, +to your home directory (the value of the environment variable $HOME). +All windows that are created by means of the \*Qscreen\*U command +from within \*Q.screenrc\*U or by means of \*QC-a : screen …\*U +or \*QC-a c\*U use this as their default directory. +Without a chdir command, this would be the directory from which +.I screen +was invoked. +.PP +Hardcopy and log files are always written to the \fIwindow's\fP default +directory, \fInot\fP the current directory of the process running in the +window. +You can use this command multiple times in your .screenrc to start various +windows in different default directories, but the last chdir value will +affect all the windows you create interactively. +.RE +.TP +.B cjkwidth [ on | off ] +.RS 0 +.PP +Treat ambiguous width characters as full/half width. +.RE +.TP +.B clear +.RS 0 +.PP +Clears the current window and saves its image to the scrollback buffer. +.RE +.TP +.B collapse +.RS 0 +.PP +Reorders window on window list, removing number gaps between them. +.RE +.TP +.IR "\fBcolon " [ prefix ] +.RS 0 +.PP +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 +than default settings for future windows. Change defaults with commands +starting with 'def…'. +.PP +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'. +.RE +.TP +.BR "command " [ \-c " \fIclass\fP" ] +.RS 0 +.PP +This command has the same effect as typing the screen escape +character (^A). It is probably only useful for key bindings. +If the \*Q\-c\*U option is given, select the specified command +class. See also \*Qbind\*U and \*Qbindkey\*U. +.RE +.TP +.BR "compacthist " [ on | off ] +.RS 0 +.PP +This tells screen whether to suppress trailing blank lines when +scrolling up text into the history buffer. +.RE +.TP +.BR "console " [ on | off ] +.RS 0 +.PP +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. +.RE +.TP +.B copy +.RS 0 +.PP +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: +.br +The editor's movement keys are: + +.TS +allbox tab(@); +l l. +T{ +\fBh\fP, \fBC-h\fP, +.br +\fBleft arrow\fP +T}@move the cursor left. +T{ +\fBj\fP, \fBC-n\fP, +.br +\fBdown arrow\fP +T}@move the cursor down. +T{ +\fBk\fP, \fBC-p\fP, +.br +\fBup arrow\fP +T}@move the cursor up. +T{ +\fBl\fP ('el'), +.br +\fBright arrow\fP +T}@move the cursor right. +\fB0\fP (zero) \fBC-a\fP@move to the leftmost column. +\fB+\fP and \fB\-\fP@positions one line up and down. +\fBH\fP, \fBM\fP and \fBL\fP@T{ +move the cursor to the leftmost column +of the top, center or bottom line of the window. +T} +\fB|\fP@moves to the specified absolute column. +\fBg\fP or \fBhome\fP@moves to the beginning of the buffer. +\fBG\fP or \fBend\fP@T{ +moves to the specified absolute line (default: end of buffer). +T} +\fB%\fP@jumps to the specified percentage of the buffer. +\fB^\fP or \fB$\fP@T{ +move to the leftmost column, to the first or last +non-whitespace character on the line. +T} +\fBw\fP, \fBb\fP, and \fBe\fP@move the cursor word by word. +\fBB\fP, \fBE\fP@move the cursor WORD by WORD (as in vi). +\fBf/F\fP, \fBt/T\fP@T{ +move the cursor forward/backward to the next occurence of the +target. (eg, '3fy' will move the cursor to the 3rd 'y' to the right.) +T} +\fB;\fP and \fB,\fP@T{ +Repeat the last f/F/t/T command in the same/opposite direction. +T} +\fBC-e\fP and \fBC-y\fP@T{ +scroll the display up/down by one line +while preserving the cursor position. +T} +\fBC-u\fP and \fBC-d\fP@T{ +scroll the display up/down by the specified amount of +lines while preserving the cursor position. (Default: half screen-full). +T} +\fBC-b\fP and \fBC-f\fP@scroll the display up/down a full screen. +.TE +.\"\fBf\fP,\fBt\fP, \fBF\fP, \fBT\fP@T{ +.\"move the cursor forward/backward to the next occurence of the target. +.\"T} + +.PP +Note: 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 emacs-style keymap, as this involves multi-character codes. +.PP +Some keys are defined to do mark and replace operations. +.PP +The copy range is specified by setting two marks. The text between these marks +will be highlighted. Press: +.IP +\fBspace\fP or \fBenter\fP to set the first or second mark +respectively. If \fBmousetrack\fP is set to `on', marks can also be set using +\fPleft mouse click\fP. +.PP +.IP +\fBY\fP and \fBy\fP used to mark one whole line or to mark from +start of line. +.IP +\fBW\fP marks exactly one word. +.PP +Any of these commands can be prefixed with a repeat count number by pressing +digits +.IP +\fB0\fP..\fB9\fP which +is taken as a repeat count. +.PP +Example: \*QC-a C-[ H 10 j 5 Y\*U will copy lines +11 to 15 into the paste buffer. +.PP +The folllowing search keys are defined: +.IP +\fB/\fP \fIVi\fP-like search forward. +.IP +\fB?\fP \fIVi\fP-like search backward. +.IP +\fBC-a s\fP \fIEmacs\fP style incremental search forward. +.IP +\fBC-r\fP \fIEmacs\fP style reverse i-search. +.IP +\fBn\fP Find next search pattern. +.IP +\fBN\fP Find previous search pattern. + +.PP +There are however some keys that act differently than in +.IR vi . +.I Vi +does not allow one to yank rectangular blocks of text, but +.I screen +does. Press: \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. +.PP +Example: Try this on a rather full text screen: +.sp 1 +.RS +\*QC-a [ M 20 l SPACE c 10 l 5 j C SPACE\*U. +.RE +.sp 1 +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: +.sp 1 +.RS +\*QC-a [ M 20 l SPACE 10 l 5 j SPACE\*U +.RE +.sp 1 +and notice the difference in the amount of text copied. +.PP +\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. +.PP +\fBv\fP or \fBV\fP is for all the +.I vi +users with \*Q:set numbers\*U \- it toggles the left margin between column 9 +and 1. Press +.PP +\fBa\fP before the final space key to toggle in append mode. Thus +the contents of the paste buffer will not be overwritten, but is appended to. +.PP +\fBA\fP toggles in append mode and sets a (second) mark. +.PP +\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. +.PP +This example demonstrates how to dump the whole scrollback buffer +to that file: \*QC-A [ g SPACE G $ >\*U. +.PP +\fBC-g\fP gives information about the current line and column. +.PP +\fBx\fP or \fBo\fP exchanges the first mark and the current cursor position. You +can use this to adjust an already placed mark. +.PP +\fBC-l\fP ('el') will redraw the screen. +.PP +\fB@\fP does nothing. Does not even exit copy mode. +.PP +All keys not described here exit copy mode. +.RE +.TP +.IR "\fBcopy_reg " [ key ] +.RS 0 +.PP +No longer exists, use \*Qreadreg\*U instead. +.RE +.TP +.BR "crlf " [ on | off ] +.RS 0 +.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'. +Otherwise (default) only `LF' is used. +When no parameter is given, the state is toggled. +.RE +.TP +.BR "debug on" | off +.RS 0 +.PP +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 correctly. Debug output from attacher processes can only +be turned off once and forever. +.RE +.TP +.BR "defc1 on" | off +.RS 0 +.PP +Same as the \fBc1\fP command except that the default setting for new +windows is changed. Initial setting is `on'. +.RE +.TP +.BR "defautonuke on" | off +.RS 0 +.PP +Same as the \fBautonuke\fP command except that the default setting for new displays is changed. Initial setting is `off'. +Note that you can use the special `AN' terminal capability if you +want to have a dependency on the terminal type. +.RE +.TP +.BR "defbce on" | off +.RS 0 +.PP +Same as the \fBbce\fP command except that the default setting for new +windows is changed. Initial setting is `off'. +.RE +.TP +.IR "\fBdefbreaktype\fP " [ tcsendbreak | TIOCSBRK | TCSBRK ] +.RS 0 +.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-dependent, this also differs between +serial board drivers. +Calling \*Qdefbreaktype\*U with no parameter displays the current setting. +.RE +.TP +.BR "defcharset " [ \fIset ] +.RS 0 +.PP +Like the \fBcharset\fP command except that the default setting for +new windows is changed. Shows current default if called without +argument. +.RE +.TP +.BR "defdynamictitle on" | off +.RS 0 +.PP +Set default behaviour for new windows regarding if screen should change window +title when seeing proper escape sequence. See also "TITLES (naming windows)" +section. +.RE +.TP +.BI "defescape " xy +.RS 0 +.PP +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. +.RE +.TP +.BR "defflow " on | off | "auto " [ interrupt ] +.RS 0 +.PP +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 . +.RE +.TP +.BR "defgr on" | off +.RS 0 +.PP +Same as the \fBgr\fP command except that the default setting for new +windows is changed. Initial setting is `off'. +.RE +.TP +.BR "defhstatus " [ \fIstatus ] +.RS 0 +.PP +The hardstatus line that all new windows will get is set to +.I status\fR. +This command is useful to make the hardstatus of every window +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 misinterpretation of program generated +hardstatus lines impossible. +If the parameter +.I status +is omitted, the current default string is displayed. +Per default the hardstatus line of new windows is empty. +.RE +.TP +.BI "defencoding " enc +.RS 0 +.PP +Same as the \fBencoding\fP command except that the default setting for new +windows is changed. Initial setting is the encoding taken from the +terminal. +.RE +.TP +.BR "deflog on" | off +.RS 0 +.PP +Same as the \fBlog\fP command except that the default setting for new windows +is changed. Initial setting is `off'. +.RE +.TP +.BR "deflogin on" | off +.RS 0 +.PP +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). +.RE +.TP +.BI "defmode " mode +.RS 0 +.PP +The mode of each newly allocated pseudo-tty is set to \fImode\fP. +\fIMode\fP is an octal number. +When no \*Qdefmode\*U command is given, mode 0622 is used. +.RE +.TP +.BR "defmonitor on" | off +.RS 0 +.PP +Same as the \fBmonitor\fP command except that the default setting for new +windows is changed. Initial setting is `off'. +.RE +.TP +.BR "defmousetrack on" | off +.RS 0 +.PP +Same as the \fBmousetrack\fP command except that the default setting for new +windows is changed. Initial setting is `off'. +.RE +.TP +.BR "defnonblock on" | off | \fInumsecs\fP +.RS 0 +.PP +Same as the \fBnonblock\fP command except that the default setting for +displays is changed. Initial setting is `off'. +.RE +.TP +.BI "defobuflimit " limit +.RS 0 +.PP +Same as the \fBobuflimit\fP command except that the default setting for new displays is changed. Initial setting is 256 bytes. +Note that you can use the special 'OL' terminal capability if you +want to have a dependency on the terminal type. +.RE +.TP +.BI "defscrollback " num +.RS 0 +.PP +Same as the \fBscrollback\fP command except that the default setting for new +windows is changed. Initial setting is 100. +.RE +.TP +.BI "defshell " command +.RS 0 +.PP +Synonym to the \fBshell\fP .screenrc command. See there. +.RE +.TP +.BR "defsilence on" | off +.RS 0 +.PP +Same as the \fBsilence\fP command except that the default setting for new +windows is changed. Initial setting is `off'. +.RE +.TP +.BI "defslowpaste " msec +.RS 0 +.PP +Same as the \fBslowpaste\fP command except that the default setting for new +windows is changed. Initial setting is 0 milliseconds, meaning `off'. +.RE +.TP +.BR "defutf8 on" | off +.RS 0 +.PP +Same as the \fButf8\fP command except that the default setting for new +windows is changed. Initial setting is `on' if screen was started with +\*Q\-U\*U, otherwise `off'. +.RE +.TP +.BR "defwrap on" | off +.RS 0 +.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 +\*Qwrap\*U command (\*QC-a r\*U) or by means of "C-a : wrap on|off". +.RE +.TP +.BR "defwritelock on" | off | auto +.RS 0 +.PP +Same as the \fBwritelock\fP command except that the default setting for new +windows is changed. Initially writelocks will off. +.RE +.TP +.BR "detach " [ \-h ] +.RS 0 +.PP +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 +.IR screen . +A detached +.I screen +can be resumed by invoking +.I screen +with the +.B \-r +option (see also section \*QCOMMAND-LINE OPTIONS\*U). The +.B \-h +option tells screen to immediately close the connection to the +terminal (\*Qhangup\*U). +.RE +.TP +.B dinfo +.RS 0 +.PP +Show what screen thinks about your terminal. Useful if you want to know +why features like color or the alternate charset don't work. +.RE +.TP +.B displays +.RS 0 +.PP +Shows a tabular listing of all currently connected user front-ends (displays). +This is most useful for multiuser sessions. +The following keys can be used in displays list: +.PP +.TS +allbox tab(@); +l l. +\fBk\fP, \fBC-p\fP, or \fBup\fP@Move up one line. +\fBj\fP, \fBC-n\fP, or \fBdown\fP@Move down one line. +\fBC-a\fP or \fBhome\fP@Move to the first line. +\fBC-e\fP or \fBend\fP@Move to the last line. +\fBC-u\fP or \fBC-d\fP@Move one half page up or down. +\fBC-b\fP or \fBC-f\fP@Move one full page up or down. +\fBmouseclick\fP@T{ +Move to the selected line. Available +when \*Qmousetrack\*U is set to on. +T} +\fBspace\fP@Refresh the list +\fBd\fP@Detach that display +\fBD\fP@Power detach that display +\fBC-g\fP, \fBenter\fP, or \fBescape\fP@Exit the list +.TE +.PP +The following is an example of what \*Qdisplays\*U could look like: +.RS +.nf +xterm 80x42 jnweiger@/dev/ttyp4 0(m11) &rWx +facit 80x24 mlschroe@/dev/ttyhf nb 11(tcsh) rwx +xterm 80x42 jnhollma@/dev/ttyp5 0(m11) &R.x + (A) (B) (C) (D) (E) (F)(G) (H)(I) +.fi +.RE +.PP +The legend is as follows: +.IP +(A) The terminal type known by screen for this display. +.PP +(B) Displays geometry as width x height. +.PP +(C) Username who is logged in at the display. +.PP +(D) Device name of the display or the attached device +.PP +(E) Display is in blocking or nonblocking mode. +The available modes are "nb", "NB", "Z<", "Z>", and "BL". +.PP +(F) Number of the window +.PP +(G) Name/title of window +.PP +(H) Whether the window is shared +.PP +(I) Window permissions. Made up of three characters: +.PP +.RS +.nf + (1st character) + ‘\-’ : no read + ‘r’ : read + ‘R’ : read only due to foreign wlock + (2nd character) + ‘\-’ : no write + ‘.’ : write suppressed by foreign wlock + ‘w’ : write + ‘W’ : own wlock + (3rd character) + ‘\-’ : no execute + ‘x’ : execute +.fi +.RS +\*QDisplays\*U needs a region size of at least 10 characters wide and 5 characters high in +order to display. +.RE +.TP +.IR "\fBdigraph\fR " [ preset [ unicode-value ]] +.RS 0 +.PP +This command prompts the user for a digraph sequence. The next +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 'a"', an a-umlaut will be inserted. If the +first character entered is a 0 (zero), +.I screen +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. +For example the command "bindkey ^K digraph '"'" enables the user +to generate an a-umlaut by typing CTRL-K a. +When a non-zero +.I unicode-value +is specified, a new digraph is created with the specified preset. The digraph is unset +if a zero value is provided for the +.I unicode-value. +.RE +.TP +.B dumptermcap +.RS 0 +.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 +.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 +.IR captoinfo +and then compile the entry with +.IR tic . +.RE +.TP +.BR "dynamictitle on" | off +.RS 0 +.PP +Change behaviour for windows regarding if screen should change window title +when seeing proper escape sequence. See also "TITLES (naming windows)" section. +.RE +.TP +.BR "echo " [ \-n ] " \fImessage\fP" +.RS 0 +.PP +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. +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. +.RE +.TP +.BI "encoding " "enc " \fR[\fP enc \fR]\fP +.RS 0 +.PP +Tell +.I screen +how to interpret the input/output. The first argument +sets the encoding of the current window. Each window can emulate +a different encoding. The optional second parameter overwrites +the encoding of the connected terminal. It should never be +needed as screen uses the locale setting to detect the encoding. +There is also a way to select a terminal encoding depending on +the terminal type by using the \*QKJ\*U termcap entry. +.PP +Supported encodings are eucJP, SJIS, eucKR, eucCN, Big5, GBK, +KOI8-R, KOI8-U, CP1251, UTF-8, +ISO8859-2, ISO8859-3, ISO8859-4, ISO8859-5, ISO8859-6, +ISO8859-7, ISO8859-8, ISO8859-9, ISO8859-10, ISO8859-15, jis. +.PP +See also \*Qdefencoding\*U, which changes the default setting of a new +window. +.RE +.TP +.BI "escape " xy +.RS 0 +.PP +Set the command character to \fIx\fP and the character generating a literal +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 +by a second character, such as \*Q\e^\*U or \*Q\e\e\*U. +The default is \*Q^Aa\*U. +.RE +.TP +.RI "\fBeval\fP " command1 [ "command2 …" ] +.RS 0 +.PP +Parses and executes each argument as separate command. +.RE +.TP +.IR "\fBexec\fP " [[ fdpat ] "newcommand " [ "args …" ]] +.RS 0 +.PP +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 file descriptor 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 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 +(as a fourth character) to the end of fdpat. +.PP +Invoking `exec' without arguments shows name and arguments of the currently +running subprocess in this window. Only one subprocess a time can be running +in each window. +.PP +When a subprocess is running the `kill' command will affect it instead of the +windows process. +.PP +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 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. +.PP +Abbreviations: 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 `!'. +.PP +Examples: +.RS +.TP +exec … /bin/sh +.TP +exec /bin/sh +.TP +!/bin/sh +.sp +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. +.TP +exec !.. stty 19200 +.TP +exec ! stty 19200 +.TP +!!stty 19200 +.sp 1 +Set the speed of the window's tty. If your stty command operates on stdout, +then add another `!'. +.TP +exec !..| less +.TP +|less +.sp 1 +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 +.I less +listens on stderr (a behavior that +.I screen +would not expect without the `|') +when its stdin is not a tty. +.I Less +versions newer than 177 fail miserably here; good old +.I pg +still works. +.TP +!:sed \-n s/.*Error.*/\e007/p +.sp 1 +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 +.IR screen . +This will cause "Bell in window x" messages, whenever the string "Error" +appears in the window. +.RE +.RE +.TP +.B fit +.RS 0 +.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. +.RE +.TP +.B flow +.RB [ on | off | "auto\fR]\fP" +.RS 0 +.PP +Sets the flow-control mode for this window. +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 +details and note, that this is subject to change in future releases. +Default is set by `defflow'. +.RE +.TP +.BR "focus " [ next|prev|up|down|left|right|top|bottom ] +.RS 0 +.PP +Move the input focus to the next region. This is done in a cyclic +way so that the top left region is selected after the bottom right +one. If no option is given it defaults to `next'. The next +region to be selected is determined by how the regions are layered. +Normally, the next region in the same layer would be selected. +However, if that next region contains one or more layers, the first +region in the highest layer is selected first. If you are at the +last region of the current layer, `next' will move the focus +to the next region in the lower layer (if there is a lower layer). +`Prev' cycles in the opposite order. See \*Qsplit\*U for more +information about layers. + +The rest of the options (`up', `down', `left', +`right', `top', and `bottom') are more indifferent +to layers. The option `up' will move the focus upward to the +region that is touching the upper left corner of the current region. +`Down' will move downward to the region that is touching the +lower left corner of the current region. The option `left' +will move the focus leftward to the region that is touching the +upper left corner of the current region, while `right' will +move rightward to the region that is touching the upper right corner +of the current region. Moving left from a left most region or moving +right from a right most region will result in no action. + +The option `top' will move the focus to the very first region +in the upper list corner of the screen, and `bottom' will move +to the region in the bottom right corner of the screen. Moving up from +a top most region or moving down from a bottom most region will result +in no action. + +Useful bindings are (h, j, k, and l as in vi) +.nf + bind h focus left + bind j focus down + bind k focus up + bind l focus right + bind t focus top + bind b focus bottom +.fi +Note that \fBk\fP is traditionally bound to the \fIkill\fP command. +.RE +.TP +.BI "focusminsize [ ( " width "|max|_ ) ( " height "|max|_ ) ]" +.RS 0 +.PP +This forces any currently selected region to be automatically +resized at least a certain \fIwidth\fP and \fIheight\fP. All +other surrounding regions will be resized in order to accommodate. +This constraint follows everytime the \*Qfocus\*U command is +used. The \*Qresize\*U command can be used to increase either +dimension of a region, but never below what is set with +\*Qfocusminsize\*U. The underscore `_' is a synonym for +\fBmax\fP. Setting a \fIwidth\fP and \fIheight\fP of `0 0' +(zero zero) will undo any constraints and allow for manual resizing. +Without any parameters, the minimum width and height is shown. +.RE +.TP +.BR "gr " [ on | off ] +.RS 0 +.PP +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. +.RE +.TP +.IR "\fBgroup\fP " [ grouptitle ] +.RS 0 +.PP +Change or show the group the current window belongs to. Windows can +be moved around between different groups by specifying the name of +the destination group. Without specifying a group, the title of the +current group is displayed. +.RE +.TP +.IR "\fBhardcopy\fP " [ \-h "] [" file ] +.RS 0 +.PP +Writes out the currently displayed image to the file \fIfile\fP, +or, if no filename is specified, to \fIhardcopy.n\fP in the +default directory, where \fIn\fP is the number of the current window. +This either appends or overwrites the file if it exists. See below. +If the option \fB\-h\fP is specified, dump also the contents of the +scrollback buffer. +.RE +.TP +.BR "hardcopy_append on" | off +.RS 0 +.PP +If set to "on", +.I screen +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'. +.RE +.TP +.BI "hardcopydir "directory +.RS 0 +.PP +Defines a directory where hardcopy files will be placed. If unset, hardcopys +are dumped in +.IR screen 's +current working directory. +.RE +.TP +.BR "hardstatus " [ on | off ] +.TP +.BR "hardstatus \fR[\fBalways\fR]\fBfirstline" | lastline | message | ignore [ \fIstring\fR ] +.TP +.BR "hardstatus string" [ \fIstring\fR ] +.RS 0 +.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). +When \*Qfirstline/lastline\*U is used, +.I screen +will reserve the first/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 (e.g., \*Qalwayslastline\*U), +.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 \*QESC]0;<string>^G\*U or \*QESC_<string>ESC\e\*U) +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. +.RE +.TP +.BR "height " [ \-w | \-d "] [" \fIlines\fR " [" \fIcols\fR ]] +.RS 0 +.PP +Set the display height to a specified number of lines. When no argument +is given it toggles between 24 and 42 lines display. You can also +specify a width if you want to change both values. +The +.B \-w +option tells screen to leave the display size unchanged and just set +the window size, +.B \-d +vice versa. +.RE +.TP +.BR help [ \fIclass\fP ] +.RS 0 +.PP +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. +Press space when you're done reading each page, or return to exit early. +All other characters are ignored. If the \*Q\-c\*U option is given, +display all bound commands for the specified command class. +See also \*QDEFAULT KEY BINDINGS\*U section. +.RE +.TP +.B history +.RS 0 +.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. +.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' +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). +.RE +.TP +.BI "hstatus " status +.RS 0 +.PP +Change the window's hardstatus line to the string \fIstatus\fP. +.RE +.TP +.IR "\fBidle\fR " [ timeout [ "cmd-args" ]] +.RS 0 +.PP +Sets a command that is run after the specified number of seconds +inactivity is reached. This command will normally be the \*Qblanker\*U +command to create a screen blanker, but it can be any screen command. +If no command is specified, only the timeout is set. A timeout of +zero (or the special timeout \fBoff\fP) disables the timer. +If no arguments are given, the current settings are displayed. +.RE +.TP +.BR "ignorecase " [ on | off ] +.RS 0 +.PP +Tell screen to ignore the case of characters in searches. Default is +`off'. Without any options, the state of ignorecase is toggled. +.RE +.TP +.B info +.RS 0 +.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 \*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, +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. If the window +is in UTF-8 mode, the string \*QUTF-8\*U is shown instead. + +Additional modes depending on the type of the window are displayed at the end of the status line (See also chapter \*QWINDOW TYPES\*U). +.PP +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. +.PP +For system information use the \*Qtime\*U command. +.RE +.TP +.BR ins_reg " [" \fIkey ] +.RS 0 +.PP +No longer exists, use \*Qpaste\*U instead. +.RE +.TP +.B kill +.RS 0 +.PP +Kill current window. +.PP +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 +(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. +.PP +Note: +.I Emacs +users should keep this command in mind, when killing a line. +It is recommended not to use \*QC-a\*U as the +.I screen +escape key or to rebind kill to \*QC-a K\*U. +.RE +.TP +.B lastmsg +.RS 0 +.PP +Redisplay the last contents of the message/status line. +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. +.RE +.TP +.BR "layout new " [\fItitle\fP] +.RS 0 +.PP +Create a new layout. The screen will change to one whole region +and be switched to the blank window. From here, you build the +regions and the windows they show as you desire. The new layout +will be numbered with the smallest available integer, starting +with zero. You can optionally give a title to your new layout. +Otherwise, it will have a default title of \*Qlayout\*U. You +can always change the title later by using the command +\fBlayout title\fP. +.RE +.TP +.BR "layout remove " [\fIn|title\fP] +.RS 0 +.PP +Remove, or in other words, delete the specified layout. Either +the number or the title can be specified. Without either +specification, \fIscreen\fP will remove the current layout. + +Removing a layout does not affect your set windows or regions. +.RE +.TP +.B layout next +.RS 0 +.PP +Switch to the next layout available +.RE +.TP +.B layout prev +.RS 0 +.PP +Switch to the previous layout available +.RE +.TP +.BR "layout select " [\fIn|title\fP] +.RS 0 +.PP +Select the desired layout. Either the number or the title can +be specified. Without either specification, \fIscreen\fP will +prompt and ask which screen is desired. To see which layouts are +available, use the \fBlayout show\fP command. +.RE +.TP +.B layout show +.RS 0 +.PP +List on the message line the number(s) and title(s) of the available +layout(s). The current layout is flagged. +.RE +.TP +.BR "layout title " [\fItitle\fP] +.RS 0 +.PP +Change or display the title of the current layout. A string given +will be used to name the layout. Without any options, the current +title and number is displayed on the message line. +.RE +.TP +.BR "layout number " [\fIn\fP] +.RS 0 +.PP +Change or display the number of the current layout. An integer given +will be used to number the layout. Without any options, the current +number and title is displayed on the message line. +.RE +.TP +.BR "layout attach " [\fItitle\fP|\fB:last\fP] +.RS 0 +.PP +Change or display which layout to reattach back to. The default is +\fB:last\fP, which tells \fIscreen\fP to reattach back to the last +used layout just before detachment. By supplying a title, You can +instruct \fIscreen\fP to reattach to a particular layout regardless +which one was used at the time of detachment. Without any options, +the layout to reattach to will be shown in the message line. +.RE +.TP +.BR "layout save " [\fIn|title\fP] +.RS 0 +.PP +Remember the current arrangement of regions. When used, \fIscreen\fP +will remember the arrangement of vertically and horizontally split +regions. This arrangement is restored when a \fIscreen\fP session +is reattached or switched back from a different layout. If the +session ends or the \fIscreen\fP process dies, the layout +arrangements are lost. The \fBlayout dump\fP command should help +in this siutation. If a number +or title is supplied, \fIscreen\fP will remember the arrangement of +that particular layout. Without any options, \fIscreen\fP will +remember the current layout. + +Saving your regions can be done automatically by using the +\fBlayout autosave\fP command. +.RE +.TP +.BR "layout autosave " [\fBon|off\fP] +.RS 0 +.PP +Change or display the status of automatcally saving layouts. The +default is \fBon\fP, meaning when \fIscreen\fP is detached or +changed to a different layout, the arrangement of regions and windows +will be remembered at the time of change and restored upon return. +If autosave is set to \fBoff\fP, that arrangement will only be +restored to either to the last manual save, using \fBlayout save\fP, +or to when the layout was first created, to a single region with +a single window. Without either an \fBon\fP or \fBoff\fP, the +current status is displayed on the message line. +.RE +.TP +.BR "layout dump " [\fIfilename\fP] +.RS 0 +.PP +Write to a file the order of splits made in the current layout. This +is useful to recreate the order of your regions used in your current +layout. Only the current layout is recorded. While the order of the +regions are recorded, the sizes of those regions and which windows +correspond to which regions are not. If no filename is specified, +the default is \fIlayout-dump\fP, saved in the directory that the +\fIscreen\fP process was started in. If the file already exists, +\fBlayout dump\fP will append to that file. As an example: +.PP +.nf + C-a : layout dump /home/user/.screenrc +.fi +.PP +will save or append the layout to the user's \fI.screenrc\fP file. +.RE +.TP +.B license +.RS 0 +.PP +Display the disclaimer page. This is done whenever +.I screen +is started without options, which should be often enough. See also +the \*Qstartup_message\*U command. +.RE +.TP +.B lockscreen +.RS 0 +.PP +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 +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 +.I screen +is started) and is executed with the user's uid and gid. +.PP +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'. +.RE +.TP +.BR "log " [ on | off ] +.RS 0 +.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 +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 the scrollback history are not included in the session log. +Default is `off'. +.RE +.TP +.BI "logfile " filename +.TP +.BI "logfile flush " secs +.RS 0 +.PP +Defines the name the log files will get. The default is +\*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. +.RE +.TP +.BR "login " [ on | off ] +.RS 0 +.PP +Adds or removes the entry in the utmp database file for the current window. +This controls if the window is `logged in'. +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 +.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 +.I screen +has been compiled with utmp support. +.RE +.TP +.BR "logtstamp " [ on | off ] +.TP +.IR "\fBlogtstamp after\fR " [ secs ] +.TP +.B "logtstamp string" +.RS 0 +.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). +.RE +.TP +.B mapdefault +.RS 0 +.PP +Tell +.I screen +that the next input character should only be looked up +in the default bindkey table. See also \*Qbindkey\*U. +.RE +.TP +.B mapnotnext +.RS 0 +.PP +Like mapdefault, but don't even look in the default bindkey table. +.RE +.TP +.IR "\fImaptimeout\fR " [ timeout ] +.RS 0 +.PP +Set the inter-character timer for input sequence detection to a timeout +of +.I timeout +ms. The default timeout is 300ms. Maptimeout with no arguments shows +the current setting. +See also \*Qbindkey\*U. +.RE +.TP +.BI "markkeys " string +.RS 0 +.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 +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. +.RE +.TP +.BI "maxwin " num +.RS 0 +.PP +Set the maximum window number screen will create. Doesn't affect +already existing windows. The number can be increased only when there are no +existing windows. +.RE +.TP +.B meta +.RS 0 +.PP +Insert the command character (C-a) in the current window's input stream. +.RE +.TP +.BR "monitor " [ on | off ] +.RS 0 +.PP +Toggles activity monitoring of windows. +When monitoring is turned on and an affected window is switched into the +background, you will receive the activity notification message in the +status line at the first sign of output and the window will also be marked +with an `@' in the window-status display. +Monitoring is initially off for all windows. +.RE +.TP +.BR "mousetrack " [ on | off ] +.RS 0 +.PP +This command determines whether +.I screen +will watch for +mouse clicks. When this command is enabled, regions that have +been split in various ways can be selected by pointing to them +with a mouse and left-clicking them. Without specifying \fBon\fP +or \fBoff\fP, the current state is displayed. The default state +is determined by the \*Qdefmousetrack\*U command. +.RE +.TP +.BI "msgminwait " sec +.RS 0 +.PP +Defines the time +.I screen +delays a new message when one message is currently displayed. +The default is 1 second. +.RE +.TP +.BI "msgwait " sec +.RS 0 +.PP +Defines the time a message is displayed if +.I screen +is not disturbed by other activity. The default is 5 seconds. +.RE +.TP +.BR "multiuser on" | off +.RS 0 +.PP +Switch between singleuser and multiuser mode. Standard +.I screen +operation is singleuser. In multiuser mode the commands `acladd', +`aclchg', `aclgrp' and `acldel' +can be used to enable (and disable) other users accessing this +.I screen +session. +.RE +.TP +.BR "nethack on" | off +.RS 0 +.PP +Changes the kind of error messages used by +.IR screen . +When you are familiar with the game \*Qnethack\*U, 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. +.br +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 +variable $NETHACKOPTIONS and the file ~/.nethackrc - if either one is present, +the default is \fBon\fP. +.RE +.TP +.B next +.RS 0 +.PP +Switch to the next window. +This command can be used repeatedly to cycle through the list of windows. +.RE +.TP +.B nonblock +.RB [ on | off | \fInumsecs ] +.RS 0 +.PP +Tell screen how to deal with user interfaces (displays) that cease to +accept output. This can happen if a user presses ^S or a TCP/modem +connection gets cut but no hangup is received. If nonblock is +\fBoff\fP (this is the default) screen waits until the display +restarts to accept the output. If nonblock is \fBon\fP, screen +waits until the timeout is reached (\fBon\fP is treated as 1s). If the +display still doesn't receive characters, screen will consider +it \*Qblocked\*U and stop sending characters to it. If at +some time it restarts to accept characters, screen will unblock +the display and redisplay the updated window contents. +.RE +.TP +.BR "number " [[+|\-] \fIn ] +.RS 0 +.PP +Change the current window's 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. Using `+' or `\-' +will change the window's number by the relative amount specified. +.RE +.TP +.BR "obuflimit " [ \fIlimit ] +.RS 0 +.PP +If the output buffer contains more bytes than the specified limit, no +more data will be +read from the windows. The default value is 256. If you have a fast +display (like xterm), you can set it to some higher value. If no +argument is specified, the current setting is displayed. +.RE +.TP +.B only +.RS 0 +.PP +Kill all regions but the current one. +.RE +.TP +.B other +.RS 0 +.PP +Switch to the window displayed previously. If this window does no longer exist, +\fIother\fP has the same effect as \fInext\fP. +.RE +.TP +.BR "partial on" | off +.RS 0 +.PP +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 +\fIdefpartial\fP command. +.RE +.TP +.BR "password " [ \fIcrypted_pw ] +.RS 0 +.PP +Present a crypted password in your \*Q.screenrc\*U file and +.I screen +will ask +for it, whenever someone attempts to resume a detached. This is useful +if you have privileged programs running under +.I screen +and you want to protect your session from reattach attempts by another user +masquerading as your uid (i.e. any superuser.) +If no crypted password is specified, +.I screen +prompts twice for typing a +password and places its encryption in the paste buffer. +Default is `none', this disables password checking. +.RE +.TP +.IR "\fBpaste\fR " [ registers " [" dest_reg ]] +.RS 0 +.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 +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 +\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 +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 +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. +.RE +.TP +.BR "pastefont " [ on | off ] +.RS 0 +.PP +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. +.RE +.TP +.B pow_break +.RS 0 +.PP +Reopen the window's terminal line and send a break condition. See `break'. +.RE +.TP +.B pow_detach +.RS 0 +.PP +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 +.I screen +was started from your login-shell. +.RE +.TP +.IR "\fBpow_detach_msg\fP " [ message ] +.RS 0 +.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. +Without parameter, the current message is shown. +.RE +.TP +.B prev +.RS 0 +.PP +Switch to the window with the next lower number. +This command can be used repeatedly to cycle through the list of windows. +.RE +.TP +.IR "\fBprintcmd\fP " [ cmd ] +.RS 0 +.PP +If +.I cmd +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 +.IR cmd . +This should normally be a command like \*Qlpr\*U or +\*Q'cat > /tmp/scrprint'\*U. +.B printcmd +without a command displays the current setting. +The ansi sequence +.B "ESC \e" +ends printing and closes the pipe. +.PP +Warning: Be careful with this command! If other user have write +access to your terminal, they will be able to fire off print commands. +.RE +.TP +.BR process " [" \fIkey ] +.RS 0 +.PP +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. +.RE +.TP +.B quit +.RS 0 +.PP +Kill all windows and terminate +.IR screen . +Note that on VT100-style terminals the keys C-4 and C-\e are identical. +This makes the default bindings dangerous: +Be careful not to type C-a C-4 when selecting window no. 4. +Use the empty bind command (as in \*Qbind '^\e'\*U) to remove a key binding. +.RE +.TP +.IR "\fBreadbuf\fP " [ encoding "] [" filename ] +.RS 0 +.PP +Reads the contents of the specified file into the paste buffer. +You can tell screen the encoding of the file via the \fB\-e\fP option. +If no file is specified, the screen-exchange filename is used. +See also \*Qbufferfile\*U command. +.RE +.TP +.IR "\fBreadreg\fP " [ encoding "] [" register " [" filename ]] +.RS 0 +.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 +file into the register, just as \fIreadbuf\fP reads the screen-exchange file +into the paste buffer. +You can tell screen the encoding of the file via the \fB\-e\fP option. +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 +C-a : paste p +.fi +.RE +.TP +.B redisplay +.RS 0 +.PP +Redisplay the current window. Needed to get a full redisplay when in +partial redraw mode. +.RE +.TP +.RI "\fBregister\fP " \fR[\fP \fB\-e\fR encoding ] key-string +.RS 0 +.PP +Save the specified \fIstring\fP to the register \fIkey\fP. +The encoding of the string can be specified via the \fB\-e\fP option. +See also the \*Qpaste\*U command. +.RE +.TP +.B "remove" +.RS 0 +.PP +Kill the current region. This is a no-op if there is only one region. +.RE +.TP +.B "removebuf" +.RS 0 +.PP +Unlinks the screen-exchange file used by the commands \*Qwritebuf\*U and +\*Qreadbuf\*U. +.RE +.TP +.B "rendition bell" | monitor | silence | so " \fIattr\fR " \fR[\fP \fIcolor\fP \fR]\fP +.RS 0 +.PP +Change the way +.I screen +renders the titles of windows that have monitor or bell flags set in caption or hardstatus or windowlist. See the \*QSTRING ESCAPES\*U chapter for the syntax of the modifiers. +The default for monitor is currently \*Q=b \*U (bold, active colors), for bell \*Q=ub \*U (underline, bold and active colors), and \*Q=u \*U for silence. +.RE +.TP +.B "reset" +.RS 0 +.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. +.RE +.TP +.B "resize" +.RB [ -h | -v | -b | -l | -p ] +.RB [[ + | - ] +.IR n "[%]" +.RB | = | max | min | _ | 0 ] +.RS 0 +.PP +Resize the current region. The space will be removed from or added to +the surrounding regions depending on the order of the splits. +The available options for resizing are `-h'(horizontal), +`-v'(vertical), `-b'(both), `-l'(local to layer), +and `-p'(perpendicular). Horizontal resizes will add or remove width +to a region, vertical will add or remove height, and both will add or +remove size from both dimensions. Local and perpendicular are similar to +horizontal and vertical, but they take in account of how a region was split. +If a region's last split was horizontal, a local resize will work like a +vertical resize. If a region's last split was vertical, a local resize will +work like a horizontal resize. Perpendicular resizes work in opposite of +local resizes. If no option is specified, local is the default. + +The amount of lines to add or remove can be expressed a couple of different +ways. By specifying a number \fIn\fP by itself will resize the region by +that absolute amount. You can specify a relative amount by prefixing a +plus `+' or minus `-' to the amount, such as adding +\fIn\fP lines +or removing -\fIn\fP lines. Resizing can also be expressed as an absolute +or relative percentage by postfixing a percent sign `%'. Using zero +`0' is a synonym for `min' and using an underscore `_' is a +synonym for `max'. + +Some examples are: +.TP +resize +N +increase current region by N +.TP +resize \-N +decrease current region by N +.TP +resize N +set current region to N +.TP +resize 20% +set current region to 20% of original size +.TP +resize +20% +increase current region by 20% +.TP +resize -b = +make all windows equally +.TP +resize max +maximize current region +.TP +resize min +minimize current region +.PP +Without any arguments, +.I screen +will prompt for how you would like to resize the current region. + +See \*Qfocusminsize\*U if you want to restrict the minimun size a region +can have. +.RE +.RE +.TP +.B "screen \fP[\fI\-opts\fP] [\fIn\fP] [\fIcmd\fP [\fIargs\fP]|\fB//group\fP]" +.RS 0 +.PP +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\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..MAXWIN-1 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). +If a command is specified after \*Qscreen\*U, this command (with the given +arguments) is started in the window; otherwise, a shell is created. +If \fB//group\fP is supplied, a container-type window is created in +which other windows may be created inside it. +.PP +Thus, if your \*Q.screenrc\*U contains the lines +.sp +.nf + # example for .screenrc: + screen 1 + 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) 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 +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. +.PP +Screen has built in some functionality of \*Qcu\*U and \*Qtelnet\*U. +See also chapter \*QWINDOW TYPES\*U. +.RE +.TP +.B "scrollback \fP\fInum\fP" +.RS 0 +.PP +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 \*Qinfo\*U to view the +current setting. To access and use the contents in the scrollback buffer, +use the \*Qcopy\*U command. +.RE +.TP +.BR "select " [ \fIWindowID ] +.RS 0 +.PP +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. +The number of windows is limited at compile-time by the MAXWIN +configuration parameter (which defaults to 40). +There are two special WindowIDs, \*Q\-\*U selects the +internal blank window and \*Q.\*U selects the current window. The +latter is useful if used with screen's \*Q\-X\*U option. +.RE +.TP +.BR "sessionname " [ \fIname ] +.RS 0 +.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 will still reflect the old name in pre-existing +shells. This may result in confusion. Use of this command is generally +discouraged. Use the \*Q\-S\*U command-line option if you want to +name a new session. +The default is constructed from the tty and host names. +.RE +.TP +.IR "\fBsetenv\fR " [ var " [" string ]] +.RS 0 +.PP +Set the environment variable \fIvar\fP to value \fIstring\fP. +If only \fIvar\fP is specified, the user will be prompted to enter a value. +If no parameters are specified, the user will be prompted for both variable +and value. The environment is inherited by all subsequently forked shells. +.RE +.TP +.BR "setsid " [ on | off ] +.RS 0 +.PP +Normally screen uses different sessions and process groups for +the windows. If setsid is turned \fIoff\fP, this is not done +anymore and all windows will be in the same process group as the +screen backend process. This also breaks job-control, so be careful. +The default is \fIon\fP, of course. This command is probably useful +only in rare circumstances. +.RE +.TP +.B "shell \fIcommand\fP" +.RS 0 +.PP +Set the command to be used to create a new shell. +This overrides the value of the environment variable $SHELL. +This is useful if you'd like to run a tty-enhancer which is expecting to +execute the program specified in $SHELL. +If the command begins with a '\-' character, the shell will be started as a +login-shell. Typical shells do only minimal initialization when not started as a login-shell. +E.g. Bash will not read your \*Q~/.bashrc\*U unless it is a login-shell. +.RE +.TP +.B "shelltitle \fItitle\fP" +.RS 0 +.PP +Set the title for all shells created during startup or by +the C-A C-c command. +For details about what a title is, see the discussion +entitled \*QTITLES (naming windows)\*U. +.RE +.TP +.BR "silence " [ on | off "|\fIsec\fP]" +.RS 0 +.PP +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. +.RE +.TP +.BI "silencewait " sec +.RS 0 +.PP +Define the time that all windows monitored for silence should wait before +displaying a message. Default 30 seconds. +.sp +.ne +.B "sleep \fP\fInum\fP" +.RS 0 +.PP +This command will pause the execution of a .screenrc file for \fInum\fP seconds. +Keyboard activity will end the sleep. +It may be used to give users a chance to read the messages output by \*Qecho\*U. +.RE +.TP +.B "slowpaste \fImsec\fP" +.RS 0 +.PP +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 \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. +.RE +.TP +.B sort +.RS 0 +.PP +Sort the windows in alphabetical order of the window tiles. +.RE +.TP +.BI "source " file +.RS 0 +.PP +Read and execute commands from file \fIfile\fP. Source commands may +be nested to a maximum recursion level of ten. If file is not an +absolute path and screen is already processing a source command, the +parent directory of the running source command file is used to search +for the new command file before screen's current directory. + +Note that termcap/terminfo/termcapinfo commands only work at +startup and reattach time, so they must be reached via the +default screenrc files to have an effect. +.RE +.TP +.IR "\fBsorendition\fR " [ attr [ color ]] +.RS 0 +.PP +This command is deprecated. See "rendition so" instead. +.RE +.TP +.BR split [ \-v ] +.RS 0 +.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 in the new region. The default is to create +a horizontal split, putting the new regions on the top and +bottom of each other. Using `-v' will create a vertical split, +causing the new regions to appear side by side of each other. +Use the \*Qremove\*U or the \*Qonly\*U command to delete regions. +Use \*Qfocus\*U to toggle between regions. + +When a region is split opposite of how it was previously split +(that is, vertical then horizontal or horizontal then vertical), +a new layer is created. The layer is used to group together the +regions that are split the same. Normally, as a user, you should +not see nor have to worry about layers, but they will affect how +some commands (\*Qfocus\*U and \*Qresize\*U) behave. + +With this current implementation of screen, scrolling data +will appear much slower in a vertically split region than one +that is not. This should be taken into consideration if you need +to use system commands such as \*Qcat\*U or \*Qtail -f\*U. +.RE +.TP +.B "startup_message on\fP|\fBoff" +.RS 0 +.PP +Select whether you want to see the copyright notice during startup. +Default is `on', as you probably noticed. +.RE +.TP +.BR "status " [ top | up | down | bottom ] +.RB [ left | right ] +.RS 0 +.PP +The status window by default is in bottom-left corner. This command can move +status messages to any corner of the screen. \fBtop\fR is the same as \fBup\fR, +\fBdown\fR is the same as \fBbottom\fR. +.RE +.TP +.BR "stuff " [ "\fIstring\fR" ] +.RS 0 +.PP +Stuff the string +.I string +in the input buffer of the current window. +This is like the \*Qpaste\*U command but with much less overhead. +Without a parameter, screen will prompt for a string to stuff. +You cannot paste +large buffers with the \*Qstuff\*U command. It is most useful for key +bindings. See also \*Qbindkey\*U. +.RE +.TP +.IR "\fBsu \fR" [ username " [" password " [" password2 ]]] +.RS 0 +.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. +.RE +.TP +.B "suspend" +.RS 0 +.PP +Suspend +.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. +.RE +.TP +.B "term \fIterm\fP" +.RS 0 +.PP +In each window's environment +.I screen +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 +.I screen +is VT100/ANSI compatible. +The use of the \*Qterm\*U command is discouraged for non-default purpose. +That is, one may want to specify special $TERM settings (e.g. vt100) for the +next \*Qscreen rlogin othermachine\*U command. Use the command \*Qscreen \-T vt100 +rlogin othermachine\*U rather than setting and resetting the default. +.RE +.TP +.BI termcap " term terminal\-tweaks" \fR[\fP \fIwindow-tweaks\fR \fI]\fR +.TP +.BI terminfo " term terminal\-tweaks" \fR[\fP \fIwindow-tweaks\fR \fI]\fR +.TP +.BI termcapinfo " term terminal\-tweaks" \fR[\fP \fIwindow-tweaks\fR \fI]\fR +.RS 0 +.PP +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 startup files, as +they are meaningless once the terminal emulator is booted. +.PP +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. +.PP +In many cases, where the arguments are valid in both terminfo and termcap +syntax, you can use the command `termcapinfo', which is just a shorthand +for a pair of `termcap' and `terminfo' commands with identical arguments. +.PP +The first argument specifies which terminal(s) should be affected by this +definition. +You can specify multiple terminal names by separating them with `|'s. +Use `*' to match all terminals and `vt*' to match all terminals that begin +with \*Qvt\*U. +.PP +Each \fItweak\fP argument contains one or more termcap defines (separated +by `:'s) to be inserted at the start of the appropriate termcap entry, +enhancing it or overriding existing values. +The first tweak modifies your terminal's termcap, and contains definitions +that your terminal uses to perform certain functions. +Specify a null string to leave this unchanged (e.\|g. ''). +The second (optional) tweak modifies all the window termcaps, and should +contain definitions that +.I screen +understands (see the \*QVIRTUAL TERMINAL\*U +section). +.PP +Some examples: +.IP +termcap xterm* LP:hs@ +.PP +Informs +.I screen +that all terminals that begin with `xterm' have firm auto-margins that +allow the last position on the screen to be updated (LP), but they don't +really have a status line (no 'hs' \- append `@' to turn entries off). +Note that we assume `LP' for all terminal names that start with \*Qvt\*U, +but only if you don't specify a termcap command for that terminal. +.RS +.nf +termcap vt* LP +.fi +.RE +.sp 1 +termcap vt102|vt220 Z0=\eE[?3h:Z1=\eE[?3l +.PP +Specifies the firm-margined `LP' capability for all terminals that begin with +`vt', and the second line will also add the escape-sequences to switch +into (Z0) and back out of (Z1) 132-character-per-line mode if this is +a VT102 or VT220. +(You must specify Z0 and Z1 in your termcap to use the width-changing +commands.) +.IP +termcap vt100 "" l0=PF1:l1=PF2:l2=PF3:l3=PF4 +.PP +This leaves your vt100 termcap alone and adds the function key labels to +each window's termcap entry. +.IP +termcap h19|z19 am@:im=\eE@:ei=\eEO dc=\eE[P +.PP +Takes a h19 or z19 termcap and turns off auto-margins (am@) and enables the +insert mode (im) and end-insert (ei) capabilities (the `@' in the `im' +string is after the `=', so it is part of the string). +Having the `im' and `ei' definitions put into your terminal's termcap will +cause +.I screen +to automatically advertise the character-insert capability in +each window's termcap. +Each window will also get the delete-character capability (dc) added to its +termcap, which +.I screen +will translate into a line-update for the terminal +(we're pretending it doesn't support character deletion). +.PP +If you would like to fully specify each window's termcap entry, you should +instead set the $SCREENCAP variable prior to running +.IR screen . +See the discussion on the \*QVIRTUAL TERMINAL\*U in this manual, and the termcap(5) +man page for more information on termcap definitions. +.RE +.TP +.B time +.RI [ string ] +.RS 0 +.PP +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 \*Qinfo\*U. + +If a string is specified, it changes the format of the time report like it is +described in the \*QSTRING ESCAPES\*U chapter. Screen uses a default of +"%c:%s %M %d %H%? %l%?". +.RE +.TP +.BR "title " [ \fIwindowtitle ] +.RS 0 +.PP +Set the name of the current window to \fIwindowtitle\fP. If no name is +specified, +.I screen +prompts for one. This command was known as `aka' in previous +releases. +.RE +.TP +.BR "truecolor " [ on | off ] +.RS 0 +.PP +Enables truecolor support. Currently autodetection of truecolor support cannot +be done reliably, as such it's left to user to enable. Default is off. +Known terminals that may support it are: iTerm2, Konsole, st. +Xterm includes support for truecolor escapes but converts them back to indexed +256 color space. +.RE +.TP +.BI "unbindall " +.RS 0 +.PP +Unbind all the bindings. This can be useful when +screen is used solely for its detaching abilities, such as when +letting a console application run as a daemon. If, for some reason, +it is necessary to bind commands after this, use 'screen \-X'. +.RE +.TP +.BI "unsetenv " var +.RS 0 +.PP +Unset an environment variable. +.RE +.TP +.BR "utf8 " [ on | off [ on | off ]] +.RS 0 +.PP +Change the encoding used in the current window. If utf8 is enabled, the +strings sent to the window will be UTF-8 encoded and vice versa. Omitting the +parameter toggles the setting. If a second parameter is given, the display's +encoding is also changed (this should rather be done with screen's \*Q\-U\*U +option). +See also \*Qdefutf8\*U, which changes the default setting of a new +window. +.RE +.TP +.BR "vbell " [ on | off ] +.RS 0 +.PP +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'). +.PP +Per default, vbell is off, thus the audible bell is used. +See also `bell_msg'. +.RE +.TP +.IR "\fBvbell_msg\fR " [ message ] +.RS 0 +.PP +Sets the visual bell message. \fImessage\fP is printed to the status line if +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 a parameter, the current message is shown. +.RE +.TP +.BI "vbellwait " sec +.RS 0 +.PP +Define a delay in seconds after each display of +.IR screen 's +visual bell message. The default is 1 second. +.RE +.TP +.BR "verbose " [ on | off ] +.RS 0 +.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 a parameter, the current setting is shown. +.RE +.TP +.B version +.RS 0 +.PP +Print the current version and the compile date in the status line. +.RE +.TP +.BI "wall " "message" +.RS 0 +.PP +Write a message to all displays. The message will appear in the terminal's +status line. +.RE +.TP +.BR "width " [ \-w | \-d "] [" "\fIcols\fR " [ \fIlines\fR ]] +.RS 0 +.PP +Toggle the window width between 80 and 132 columns or set it to \fIcols\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. You can also specify +a new height if you want to change both values. +The +.B \-w +option tells screen to leave the display size unchanged and just set +the window size, +.B \-d +vice versa. +.RE +.TP +.BR "windowlist " [ \-b "] [" \-m "] [" \-g ] +.TP +.IR "\fBwindowlist string\fR " [ string ] +.TP +.IR "\fBwindowlist title\fR " [ title ] +.RS 0 +.PP +Display all windows in a table for visual window selection. +If screen was in a window group, screen will +back out of the group and then display the windows in that group. +If the +.B \-b +option is given, screen will switch to the blank window before +presenting the list, so that the current window is also selectable. +The +.B \-m +option changes the order of the windows, instead of sorting by +window numbers screen uses its internal most-recently-used list. +The +.B \-g +option will show the windows inside any groups in that level +and downwards. +.PP +The following keys are used to navigate in \*Qwindowlist\*U: + +.TS +allbox tab(@); +l l. +\fBk\fP, \fBC-p\fP, or \fBup\fP@Move up one line. +\fBj\fP, \fBC-n\fP, or \fBdown\fP@Move down one line. +\fBC-g\fP or \fBescape\fP@Exit windowlist. +\fBC-a\fP or \fBhome\fP@Move to the first line. +\fBC-e\fP or \fBend\fP@Move to the last line. +\fBC-u\fP or \fBC-d\fP@Move one half page up or down. +\fBC-b\fP or \fBC-f\fP@Move one full page up or down. +\fB0..9\fP@Using the number keys, move to the selected line. +\fBmouseclick\fP@T{ +Move to the selected line. Available when +\*Qmousetrack\*U is set to \*Qon\*U +T} +\fB/\fP@Search. +\fBn\fP@Repeat search in the forward direction. +\fBN\fP@Repeat search in the backward direction. +\fBm\fP@Toggle MRU. +\fBg\fP@Toggle group nesting. +\fBa\fP@All window view. +\fBC-h\fP or backspace@Back out the group. +\fB,\fP@Switch numbers with the previous window. +\fB.\fP@Switch numbers with the next window. +\fBK\fP@Kill that window. +\fBspace\fP or \fBenter\fP@Select that window. +.TE +.sp 1 +The table format can be changed with the \fBstring\fP and +\fBtitle\fP option, the title is displayed as table heading, while +the lines are made by using the string setting. The default +setting is \*QNum Name%=Flags\*U for the title and \*Q%3n %t%=%f\*U +for the lines. +See the \*QSTRING ESCAPES\*U chapter for more codes (e.g. color +settings). + +\*QWindowlist\*U needs a region size of at least 10 characters wide +and 6 characters high in order to display. +.RE +.TP +.B windows [ string ] +.RS 0 +.PP +Uses the message line to display a list of all the windows. +Each window is listed by number with the name of process that has been +started 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 \*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)'; +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 optional string parameter follows the \*QSTRING ESCAPES\*U format. +If string parameter is passed, the output size is unlimited. +The default command without any parameter is limited to a size of 1024 bytes. +.RE +.TP +.BR "wrap " [ on | off ] +.RS 0 +.PP +Sets the line-wrap setting for the current window. +When line-wrap is on, the second consecutive printable character output at +the last column of a line will wrap to the start of the following line. +As an added feature, backspace (^H) will also wrap through the left margin +to the previous line. +Default is `on'. Without any options, the state of wrap is toggled. +.RE +.TP +.BR "writebuf " [ \-e " \fIencoding\fP" "" "] [" \fIfilename\fR ] +.RS 0 +.PP +Writes the contents of the paste buffer to the specified file, or the public accessible screen\-exchange +file if no filename is given. This is thought of as a primitive means of communication between +.I screen +users on the same host. If an encoding is specified the paste buffer +is recoded on the fly to match the encoding. +The filename can be set with the \fIbufferfile\fP +command and defaults to \*Q/tmp/screen\-exchange\*U. +.RE +.TP +.BR "writelock " [ on | "off\fR|\fBauto\fR]" +.RS 0 +.PP +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 \*Qwritelock off\*U. If the user issues the command +\*Qwritelock on\*U he keeps the exclusive write permission while switching +to other windows. +.RE +.TP +.B xoff +.TP +.B xon +.RS 0 +.PP +Insert a CTRL-s / CTRL-q character to the stdin queue of the +current window. +.RE +.TP +.BR "zmodem " [ off\fR|\fPauto\fR|\fPcatch\fR|\fPpass ] +.TP +.IR "\fBzmodem sendcmd\fR " [ string ] +.TP +.IR "\fBzmodem recvcmd\fR " [ string ] +.RS 0 +.PP +Define zmodem support for screen. Screen understands two different +modes when it detects a zmodem request: \*Qpass\*U and \*Qcatch\*U. +If the mode is set to \*Qpass\*U, screen will relay all data +to the attacher until the end of the transmission is reached. +In \*Qcatch\*U mode screen acts as a zmodem endpoint and starts +the corresponding rz/sz commands. If the mode is set to \*Qauto\*U, +screen will use \*Qcatch\*U if the window is a tty (e.g. a serial line), +otherwise it will use \*Qpass\*U. +.PP +You can define the templates screen uses in \*Qcatch\*U mode +via the second and the third form. +.PP +Note also that this is an experimental feature. +.RE +.TP +.BR "zombie " [\fIkeys\fP [ onerror ] ] +.RS 0 +.PP +Per default +.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 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. + +As the zombie-setting is manipulated globally for all windows, this command +should probably be called \fBdefzombie\fP, but it isn't. + +Optionally you can put the word \*Qonerror\*U after the keys. This will cause screen +to monitor exit status of the process running in the window. If it exits normally ('0'), +the window disappears. Any other exit value causes the window to become a zombie. +.RE +.TP +.BR "zombie_timeout" [\fIseconds\fP] +.RS 0 +.PP +Per default +.I screen +windows are removed from the window list as soon as +the windows process (e.g. shell) exits. If \fBzombie\fP keys are defined +(compare with above \fBzombie\fP command), it is possible to also set a +timeout when screen tries to automatically reconnect a dead screen window. +.RE + +.SH "THE MESSAGE LINE" +.I Screen +displays informational messages and other diagnostics in a \fImessage line\fP. +While this line is distributed to appear at the bottom of the screen, +it can be defined to appear at the top of the screen during compilation. +If your terminal has a status line defined in its termcap, +.I screen +will use this for displaying its messages, otherwise a line of the +current screen will +be temporarily overwritten and output will be momentarily interrupted. The +message line is automatically removed after a few seconds delay, but it +can also be removed early (on terminals without a status line) by beginning +to type. +.PP +The message line facility can be used by an application running in +the current window by means of the ANSI \fIPrivacy message\fP +control sequence. +For instance, from within the shell, try something like: +.IP +echo '<esc>^Hello world from window '$WINDOW'<esc>\e\e' +.PP +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 \-ixoff" +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 dependent 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. +.PP +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. +.PP +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. +.PP +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 ENABLE_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 E +sets %? to true if the escape character has been pressed. +.IP f +flags of the window, see \*Qwindows\*U for meanings of the various flags +.IP F +sets %? to true if the window has the focus +.IP h +hardstatus of the window +.IP H +hostname of the system +.IP n +window number +.IP P +sets %? to true if the current region is in copy/paste mode +.IP S +session name +.IP s +window size +.IP t +window title +.IP u +all other users on this window +.IP w +all window numbers and names. With '\-' qualifier: up to the current +window; with '+' qualifier: starting with the window after the current +one. +.IP W +all window numbers and names except the current one +.IP x +the executed command including arguments running in this windows +.IP X +the executed command without arguments running in this windows +.IP ? +the part to the next '%?' is displayed only if a '%' escape +inside the part expands to a non-empty string +.IP : +else part of '%?' +.IP = +pad the string to the display's width (like TeX's hfill). If a +number is specified, pad to the percentage of the window's width. +A '0' qualifier tells screen to treat the number as absolute position. +You can specify to pad relative to the last absolute pad position +by adding a '+' qualifier or to pad relative to the right margin +by using '\-'. The padding truncates the string if the specified +position lies before the current position. Add the 'L' qualifier +to change this. +.IP < +same as '%=' but just do truncation, do not fill with spaces +.IP > +mark the current text position for the next truncation. When +screen needs to do truncation, it tries to do it in a way that +the marked position gets moved to the specified percentage of +the output area. (The area starts from the last absolute pad +position and ends with the position specified by the truncation +operator.) The 'L' qualifier tells screen to mark the truncated +parts with '…'. +.IP { +attribute/color modifier string terminated by the next \*Q}\*U +.IP ` +Substitute with the output of a 'backtick' command. The length +qualifier is misused to identify one of the commands. +.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 '0' qualifier +also makes the '=' escape use absolute positions. The 'n' and '=' +escapes understand +a length qualifier (e.g. '%3n'), 'D' and 'M' can be prefixed with 'L' +to generate long names, 'w' and 'W' also show the window flags +if 'L' is given. +.PP +An attribute/color modifier is is used to change the attributes or the +color settings. Its format +is \*Q[attribute modifier] [color description]\*U. The attribute modifier +must be prefixed by a change type indicator if it can be confused with +a color description. The following change types are known: +.IP + +add the specified set to the current attributes +.IP \- +remove the set from the current attributes +.IP ! +invert the set in the current attributes +.IP = +change the current attributes to the specified set +.PP +The attribute set can either be specified as a hexadecimal number or +a combination of the following letters: +.IP d +dim +.PD 0 +.IP u +underline +.IP b +bold +.IP r +reverse +.IP s +standout +.IP B +blinking +.PD +.PP +Colors are coded either as a hexadecimal number or two letters specifying +the desired background and foreground color (in that order). The following +colors are known: +.IP k +black +.PD 0 +.IP r +red +.IP g +green +.IP y +yellow +.IP b +blue +.IP m +magenta +.IP c +cyan +.IP w +white +.IP d +default color +.IP . +leave color unchanged +.PD +.PP +The capitalized versions of the letter specify bright colors. You can also +use the pseudo-color 'i' to set just the brightness and leave the color +unchanged. +.br +A one digit/letter color description is treated as foreground or +background color dependent on the current attributes: if reverse mode is +set, the background color is changed instead of the foreground color. +If you don't like this, prefix the color with a \*Q.\*U. If you want +the same behavior for two-letter color descriptions, also prefix them +with a \*Q.\*U. +.br +As a special case, \*Q%{\-}\*U restores the attributes and colors that +were set before the last change was made (i.e., pops one level of the +color-change stack). +.PP +Examples: +.IP "\*QG\*U" +set color to bright green +.IP "\*Q+b r\*U" +use bold red +.IP "\*Q= yd\*U" +clear all attributes, write in default color on yellow background. +.IP "%\-Lw%{= BW}%50>%n%f* %t%{\-}%+Lw%<" +The available windows centered at the current window and truncated to +the available width. The current window is displayed white on blue. +This can be used with \*Qhardstatus alwayslastline\*U. +.IP "%?%F%{.R.}%?%3n %t%? [%h]%?" +The window number and title and the window's hardstatus, if one is set. +Also use a red background if this is the active focus. Useful for +\*Qcaption string\*U. +.SH "FLOW-CONTROL" +Each window has a flow-control setting that determines how +.I screen +deals with +the XON and XOFF characters (and perhaps the interrupt character). +When flow-control is turned off, +.I screen +ignores the XON and XOFF characters, +which allows the user to send them to the current program by simply typing +them (useful for the \fIemacs\fP editor, for instance). +The trade-off is that it will take longer for output from a \*Qnormal\*U +program to pause in response to an XOFF. +With flow-control turned on, XON and XOFF characters are used to immediately +pause the output of the current window. +You can still send these characters to the current program, but you must use +the appropriate two-character +.I screen +commands (typically \*QC-a q\*U (xon) +and \*QC-a s\*U (xoff)). +The xon/xoff commands are also useful for typing C-s and C-q past a terminal +that intercepts these characters. +.PP +Each window has an initial flow-control value set with either the +.B \-f +option or the \*Qdefflow\*U .screenrc command. Per default the windows +are set to automatic flow-switching. +It can then be toggled between the three states 'fixed on', 'fixed off' +and 'automatic' interactively with the \*Qflow\*U command bound to "C-a f". +.PP +The automatic flow-switching mode deals with +flow control using the TIOCPKT mode (like \*Qrlogin\*U does). If +the tty driver does not support TIOCPKT, +.I screen +tries to find out +the right mode based on the current setting of the application +keypad \- when it is enabled, flow-control is turned off and visa versa. +Of course, you can still manipulate flow-control manually when needed. +.PP +If you're running with flow-control enabled and find that pressing the +interrupt key (usually C-c) does not interrupt the display until another +6-8 lines have scrolled by, try running +.I screen +with the \*Qinterrupt\*U +option (add the \*Qinterrupt\*U flag to the \*Qflow\*U command in +your .screenrc, or use the +.B \-i +command-line option). +This causes the output that +.I screen +has accumulated from the interrupted program to be flushed. +One disadvantage is that the virtual terminal's memory contains the +non-flushed version of the output, which in rare cases can cause +minor inaccuracies in the output. +For example, if you switch screens and return, or update the screen +with \*QC-a l\*U you would see the version of the output you would +have gotten without \*Qinterrupt\*U being on. +Also, you might need to turn off flow-control (or use auto-flow mode to turn +it off automatically) when running a program that expects you to type the +interrupt character as input, as it is possible to interrupt +the output of the virtual terminal to your physical terminal when flow-control +is enabled. +If this happens, a simple refresh of the screen with \*QC-a l\*U will +restore it. +Give each mode a try, and use whichever mode you find more comfortable. + + +.SH "TITLES (naming windows)" +You can customize each window's name in the window display (viewed with the +\*Qwindows\*U command (C-a w)) by setting it with one of +the title commands. +Normally the name displayed is the actual command name of the program +created in the window. +However, it is sometimes useful to distinguish various programs of the same +name or to change the name on-the-fly to reflect the current state of +the window. +.PP +The default name for all shell windows can be set with the \*Qshelltitle\*U +command in the .screenrc file, while all other windows are created with +a \*Qscreen\*U command and thus can have their name set with the +.B \-t +option. +Interactively, there is the title-string escape-sequence +(<esc>k\fIname\fP<esc>\e) and the \*Qtitle\*U command (C-a A). +The former can be output from an application to control the window's name +under software control, and the latter will prompt for a name when typed. +You can also bind pre-defined names to keys with the \*Qtitle\*U command +to set things quickly without prompting. Changing title bythis escape sequence +can be controlled by \fBdefdynamictitle\fp and \fBdynamictitle\fP commands. +.PP +Finally, +.I screen +has a shell-specific heuristic that is enabled by setting the window's name +to \*Q\fIsearch|name\fP\*U and arranging to have a null title escape-sequence +output as a part of your prompt. +The \fIsearch\fP portion specifies an end-of-prompt search string, while +the \fIname\fP portion specifies the default shell name for the window. +If the \fIname\fP ends in a `:' +.I screen +will add what it believes to be the current command running in the window +to the end of the window's shell name (e.\|g. \*Q\fIname:cmd\fP\*U). +Otherwise the current command name supersedes the shell name while it is +running. +.PP +Here's how it works: you must modify your shell prompt to output a null +title-escape-sequence (<esc>k<esc>\e) as a part of your prompt. +The last part of your prompt must be the same as the string you specified +for the \fIsearch\fP portion of the title. +Once this is set up, +.I screen +will use the title-escape-sequence to clear the previous command name and +get ready for the next command. +Then, when a newline is received from the shell, a search is made for the +end of the prompt. +If found, it will grab the first word after the matched string and use it +as the command name. +If the command name begins with either '!', '%', or '^' +.I screen +will use the first word on the following line (if found) in preference to +the just-found name. +This helps csh users get better command names when using job control or +history recall commands. +.PP +Here's some .screenrc examples: +.IP +screen \-t top 2 nice top +.PP +Adding this line to your .screenrc would start a nice-d version of the +\*Qtop\*U command in window 2 named \*Qtop\*U rather than \*Qnice\*U. +.sp +.nf + shelltitle '> |csh' + screen 1 +.fi +.sp +These commands would start a shell with the given shelltitle. +The title specified is an auto-title that would expect the prompt and +the typed command to look something like the following: +.IP +/usr/joe/src/dir> trn +.PP +(it looks after the '> ' for the command name). +The window status would show the name \*Qtrn\*U while the command was +running, and revert to \*Qcsh\*U upon completion. +.IP +bind R screen \-t '% |root:' su +.PP +Having this command in your .screenrc would bind the key +sequence \*QC-a R\*U to the \*Qsu\*U command and give it an +auto-title name of \*Qroot:\*U. +For this auto-title to work, the screen could look something +like this: +.sp +.nf + % !em + emacs file.c +.fi +.sp +Here the user typed the csh history command \*Q!em\*U which ran the +previously entered \*Qemacs\*U command. +The window status would show \*Qroot:emacs\*U during the execution +of the command, and revert to simply \*Qroot:\*U at its completion. +.PP +.nf + bind o title + bind E title "" + bind u title (unknown) +.fi +.sp +The first binding doesn't have any arguments, so it would prompt you +for a title. when you type \*QC-a o\*U. +The second binding would clear an auto-title's current setting (C-a E). +The third binding would set the current window's title to \*Q(unknown)\*U +(C-a u). +.PP +One thing to keep in mind when adding a null title-escape-sequence to +your prompt is that some shells (like the csh) count all the non-control +characters as part of the prompt's length. +If these invisible characters aren't a multiple of 8 then backspacing over +a tab will result in an incorrect display. +One way to get around this is to use a prompt like this: +.IP +set prompt='^[[0000m^[k^[\e% ' +.PP +The escape-sequence \*Q<esc>[0000m\*U not only normalizes the character +attributes, but all the zeros round the length of the invisible characters +up to 8. +Bash users will probably want to echo the escape sequence in the +PROMPT_COMMAND: +.IP +PROMPT_COMMAND='printf "\e033k\e033\e134"' +.PP +(I used \*Q\e134\*U to output a `\e' because of a bug in bash v1.04). + + +.SH "THE VIRTUAL TERMINAL" +Each window in a +.I screen +session emulates a VT100 terminal, with some extra functions added. The +VT100 emulator is hard-coded, no other terminal types can be emulated. +.br +Usually +.I screen +tries to emulate as much of the VT100/ANSI standard +as possible. But if your terminal lacks certain capabilities, +the emulation may not be complete. In these cases +.I screen +has to tell the applications that some of the features +are missing. This is no problem on machines using termcap, +because +.I screen +can use the $TERMCAP variable to +customize the standard +.I screen +termcap. +.PP +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. +Here is how it works: +.PP +When +.I screen +tries to figure out a terminal name for itself, +it first looks +for an entry named \*Qscreen.<term>\*U, where <term> is +the contents of your $TERM variable. +If no such entry exists, +.I screen +tries \*Qscreen\*U (or \*Qscreen\-w\*U if the terminal is wide +(132 cols or more)). +If even this entry cannot be found, \*Qvt100\*U is used as a +substitute. +.PP +The idea is that if you have a terminal which doesn't +support an important feature (e.g. delete char or clear to EOS) +you can build a new termcap/terminfo entry for +.I screen +(named \*Qscreen.<dumbterm>\*U) in which this capability +has been disabled. If this entry is installed on your +machines you are able to do +a rlogin and still keep the correct termcap/terminfo entry. +The terminal name is put in the $TERM variable +of all new windows. +.I Screen +also sets the $TERMCAP variable reflecting the capabilities +of the virtual terminal emulated. Notice that, however, on machines +using the terminfo database this variable has no effect. +Furthermore, the variable $WINDOW is set to the window number +of each window. +.PP +The actual set of capabilities supported by the virtual terminal +depends on the capabilities supported by the physical terminal. +If, for instance, the physical terminal does not support underscore mode, +.I screen +does not put the `us' and `ue' capabilities into the window's $TERMCAP +variable, accordingly. +However, a minimum number of capabilities must be supported by a +terminal in order to run +.IR screen ; +namely scrolling, clear screen, and direct cursor addressing +(in addition, +.I screen +does not run on hardcopy terminals or on terminals that over-strike). +.PP +Also, you can customize the $TERMCAP value used by +.I screen +by using the \*Qtermcap\*U .screenrc command, or +by defining the variable $SCREENCAP prior to startup. +When the is latter defined, its value will be copied verbatim into each +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 +.I screen +honors the \*Qterminfo\*U .screenrc command if the system uses the +terminfo database rather than termcap. +.PP +When the boolean `G0' capability is present in the termcap entry +for the terminal on which +.I screen +has been called, the terminal emulation of +.I screen +supports multiple character sets. +This allows an application to make use of, for instance, +the VT100 graphics character set or national character sets. +The following control functions from ISO 2022 are supported: +\fIlock shift G0\fP (\fISI\fP), \fIlock shift G1\fP (\fISO\fP), +\fIlock shift G2\fP, \fIlock shift G3\fP, \fIsingle shift G2\fP, +and \fIsingle shift G3\fP. +When a virtual terminal is created or reset, the ASCII character +set is designated as \fIG0\fP through \fIG3\fP. +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. +`E0' is the corresponding replacement for \fISO\fP. `C0' gives a character +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 +termcap entry, applications running in a +.I screen +window can send output to the printer port of the terminal. +This allows a user to have an application in one window +sending output to a printer 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. 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 +.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 +also accepted. +.PP +Some capabilities are only put into the $TERMCAP +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 +the session is reattached on a different terminal, as the value +of $TERMCAP cannot be modified by parent processes. +.PP +The "alternate screen" capability is not enabled by default. +Set the \fBaltscreen\fP .screenrc command to enable it. +.PP +The following is a list of control sequences recognized by +.IR screen . +\*Q(V)\*U and \*Q(A)\*U indicate VT100-specific and ANSI- or +ISO-specific functions, respectively. +.PP +.ta 22n +.TP 27 +.B "ESC E" +Next Line +.TP 27 +.B "ESC D" +Index +.TP 27 +.B "ESC M" +Reverse Index +.TP 27 +.B "ESC H" +Horizontal Tab Set +.TP 27 +.B "ESC Z" +Send VT100 Identification String +.TP 27 +.BR "ESC 7" " (V)" +Save Cursor and Attributes +.TP 27 +.BR "ESC 8" " (V)" +Restore Cursor and Attributes +.TP 27 +.BR "ESC [s" " (A)" +Save Cursor and Attributes +.TP 27 +.BR "ESC [u" " (A)" +Restore Cursor and Attributes +.TP 27 +.B "ESC c" +Reset to Initial State +.TP 27 +.B "ESC g" +Visual Bell +.TP 27 +.B "ESC \fPPn\fB p" +Cursor Visibility (97801) +.RS +.TP 27 +Pn = \fB6\fP +Invisible +.TP 27 +Pn = \fB7\fP +Visible +.RE +.TP 27 +.BR "ESC =" " (V)" +Application Keypad Mode +.TP 27 +.BR "ESC >" " (V)" +Numeric Keypad Mode +.TP 27 +.BR "ESC # 8" " (V)" +Fill Screen with E's +.TP 27 +.BR "ESC \e" " (A)" +String Terminator +.TP 27 +.BR "ESC ^" " (A)" +Privacy Message String (Message Line) +.TP 27 +.B "ESC !" +Global Message String (Message Line) +.TP 27 +.B "ESC k" +A.\|k.\|a. Definition String +.TP 27 +.BR "ESC P" " (A)" +Device Control String. +Outputs a string directly to the host +terminal without interpretation. +.TP 27 +.BR "ESC _" " (A)" +Application Program Command (Hardstatus) +.TP 27 +.BR "ESC ] 0 ; string ^G" " (A)" +Operating System Command (Hardstatus, xterm title hack) +.TP 27 +.BR "ESC ] 83 ; cmd ^G" " (A)" +Execute screen command. This only works if multi-user support is +compiled into screen. The pseudo-user \*Q:window:\*U is used to +check the access control list. Use \*Qaddacl :window: \-rwx #?\*U to +create a user with no rights and allow only the needed commands. +.TP 27 +.BR "Control-N" " (A)" +Lock Shift G1 (SO) +.TP 27 +.BR "Control-O" " (A)" +Lock Shift G0 (SI) +.TP 27 +.BR "ESC n" " (A)" +Lock Shift G2 +.TP 27 +.BR "ESC o" " (A)" +Lock Shift G3 +.TP 27 +.BR "ESC N" " (A)" +Single Shift G2 +.TP 27 +.BR "ESC O" " (A)" +Single Shift G3 +.TP 27 +.BR "ESC ( \fPPcs" " (A)" +Designate character set as G0 +.TP 27 +.BR "ESC ) \fPPcs" " (A)" +Designate character set as G1 +.TP 27 +.BR "ESC * \fPPcs" " (A)" +Designate character set as G2 +.TP 27 +.BR "ESC + \fPPcs" " (A)" +Designate character set as G3 +.TP 27 +.B "ESC [ \fPPn\fB ; \fPPn\fB H" +Direct Cursor Addressing +.TP 27 +.B "ESC [ \fPPn\fB ; \fPPn\fB f" +same as above +.TP 27 +.B "ESC [ \fPPn\fB J" +Erase in Display +.RS +.TP 27 +Pn = None or \fB0\fP +From Cursor to End of Screen +.TP 27 +Pn = \fB1\fP +From Beginning of Screen to Cursor +.TP 27 +Pn = \fB2\fP +Entire Screen +.RE +.TP 27 +.B "ESC [ \fPPn\fB K" +Erase in Line +.RS +.TP 27 +Pn = None or \fB0\fP +From Cursor to End of Line +.TP 27 +Pn = \fB1\fP +From Beginning of Line to Cursor +.TP 27 +Pn = \fB2\fP +Entire Line +.RE +.TP 27 +.B "ESC [ \fPPn\fB X" +Erase character +.TP 27 +.B "ESC [ \fPPn\fB A" +Cursor Up +.TP 27 +.B "ESC [ \fPPn\fB B" +Cursor Down +.TP 27 +.B "ESC [ \fPPn\fB C" +Cursor Right +.TP 27 +.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 +.RS +.TP 27 +Ps = None or \fB0\fP +Default Rendition +.TP 27 +Ps = \fB1\fP +Bold +.TP 27 +Ps = \fB2\fP (A) +Faint +.TP 27 +Ps = \fB3\fP (A) +\fIStandout\fP Mode (ANSI: Italicized) +.TP 27 +Ps = \fB4\fP +Underlined +.TP 27 +Ps = \fB5\fP +Blinking +.TP 27 +Ps = \fB7\fP +Negative Image +.TP 27 +Ps = \fB22\fP (A) +Normal Intensity +.TP 27 +Ps = \fB23\fP (A) +\fIStandout\fP Mode off (ANSI: Italicized off) +.TP 27 +Ps = \fB24\fP (A) +Not Underlined +.TP 27 +Ps = \fB25\fP (A) +Not Blinking +.TP 27 +Ps = \fB27\fP (A) +Positive Image +.TP 27 +Ps = \fB30\fP (A) +Foreground Black +.TP 27 +Ps = \fB31\fP (A) +Foreground Red +.TP 27 +Ps = \fB32\fP (A) +Foreground Green +.TP 27 +Ps = \fB33\fP (A) +Foreground Yellow +.TP 27 +Ps = \fB34\fP (A) +Foreground Blue +.TP 27 +Ps = \fB35\fP (A) +Foreground Magenta +.TP 27 +Ps = \fB36\fP (A) +Foreground Cyan +.TP 27 +Ps = \fB37\fP (A) +Foreground White +.TP 27 +Ps = \fB39\fP (A) +Foreground Default +.TP 27 +Ps = \fB40\fP (A) +Background Black +.TP 27 +Ps = \fB…\fP +… +.TP 27 +Ps = \fB49\fP (A) +Background Default +.RE +.TP 27 +.B "ESC [ \fPPn\fB g" +Tab Clear +.RS +.TP 27 +Pn = None or \fB0\fP +Clear Tab at Current Position +.TP 27 +Pn = \fB3\fP +Clear All Tabs +.RE +.TP 27 +.BR "ESC [ \fPPn\fB ; \fPPn\fB r" " (V)" +Set Scrolling Region +.TP 27 +.BR "ESC [ \fPPn\fB I" " (A)" +Horizontal Tab +.TP 27 +.BR "ESC [ \fPPn\fB Z" " (A)" +Backward Tab +.TP 27 +.BR "ESC [ \fPPn\fB L" " (A)" +Insert Line +.TP 27 +.BR "ESC [ \fPPn\fB M" " (A)" +Delete Line +.TP 27 +.BR "ESC [ \fPPn\fB @" " (A)" +Insert Character +.TP 27 +.BR "ESC [ \fPPn\fB P" " (A)" +Delete Character +.TP 27 +.B "ESC [ \fPPn\fB S" +Scroll Scrolling Region Up +.TP 27 +.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 +.B "ESC [ \fPPs\fB ;\fP…\fB; \fPPs\fB l" +Reset Mode +.RS +.TP 27 +Ps = \fB4\fP (A) +Insert Mode +.TP 27 +Ps = \fB20\fP (A) +\fIAutomatic Linefeed\fP Mode +.TP 27 +Ps = \fB34\fP +Normal Cursor Visibility +.TP 27 +Ps = \fB?1\fP (V) +Application Cursor Keys +.TP 27 +Ps = \fB?3\fP (V) +Change Terminal Width to 132 columns +.TP 27 +Ps = \fB?5\fP (V) +Reverse Video +.TP 27 +Ps = \fB?6\fP (V) +\fIOrigin\fP Mode +.TP 27 +Ps = \fB?7\fP (V) +\fIWrap\fP Mode +.TP 27 +Ps = \fB?9\fP +X10 mouse tracking +.TP 27 +Ps = \fB?25\fP (V) +Visible Cursor +.TP 27 +Ps = \fB?47\fP +Alternate Screen (old xterm code) +.TP 27 +Ps = \fB?1000\fP (V) +VT200 mouse tracking +.TP 27 +Ps = \fB?1047\fP +Alternate Screen (new xterm code) +.TP 27 +Ps = \fB?1049\fP +Alternate Screen (new xterm code) +.RE +.TP 27 +.BR "ESC [ 5 i" " (A)" +Start relay to printer (ANSI Media Copy) +.TP 27 +.BR "ESC [ 4 i" " (A)" +Stop relay to printer (ANSI Media Copy) +.TP 27 +.B "ESC [ 8 ; \fPPh\fB ; \fPPw\fB t" +Resize the window to `Ph' lines and `Pw' columns (SunView special) +.TP 27 +.B "ESC [ c" +Send VT100 Identification String +.TP 27 +.B "ESC [ x" +Send Terminal Parameter Report +.TP 27 +.B "ESC [ > c" +Send VT220 Secondary Device Attributes String +.TP 27 +.B "ESC [ 6 n" +Send Cursor Position Report + + +.SH "INPUT TRANSLATION" +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 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). +Because the sequences generated by a keypress can +change after a reattach from a different terminal type, it is +possible to bind commands to the termcap name of the keys. +\fIScreen\fP will insert the correct binding after each +reattach. See the \fBbindkey\fP command for further details on the +syntax and examples. +.PP +Here is the table of the default key bindings. The fourth is what +command is executed if the keyboard is switched into application +mode. +.PP +.TS +allbox; +l l l l. +Key name Termcap name Command App mode +Cursor up ku \e033[A \e033OA +Cursor down kd \e033[B \e033OB +Cursor right kr \e033[C \e033OC +Cursor left kl \e033[D \e033OD +Function key 0 k0 \e033[10~ +Function key 1 k1 \e033OP +Function key 2 k2 \e033OQ +Function key 3 k3 \e033OR +Function key 4 k4 \e033OS +Function key 5 k5 \e033[15~ +Function key 6 k6 \e033[17~ +Function key 7 k7 \e033[18~ +Function key 8 k8 \e033[19~ +Function key 9 k9 \e033[20~ +Function key 10 k; \e033[21~ +Function key 11 F1 \e033[23~ +Function key 12 F2 \e033[24~ +Home kh \e033[1~ +End kH \e033[4~ +Insert kI \e033[2~ +Delete kD \e033[3~ +Page up kP \e033[5~ +Page down kN \e033[6~ +Keypad 0 f0 0 \e033Op +Keypad 1 f1 1 \e033Oq +Keypad 2 f2 2 \e033Or +Keypad 3 f3 3 \e033Os +Keypad 4 f4 4 \e033Ot +Keypad 5 f5 5 \e033Ou +Keypad 6 f6 6 \e033Ov +Keypad 7 f7 7 \e033Ow +Keypad 8 f8 8 \e033Ox +Keypad 9 f9 9 \e033Oy +Keypad + f+ + \e033Ok +Keypad \- f\- \- \e033Om +Keypad * f* * \e033Oj +Keypad / f/ / \e033Oo +Keypad = fq = \e033OX +Keypad . f. . \e033On +Keypad , f, , \e033Ol +Keypad enter fe \e015 \e033OM +.TE + +.SH SPECIAL TERMINAL CAPABILITIES +The following table describes all terminal capabilities +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 +these capabilities in the terminfo database. +.PP +.ta 5n +.TP 13 +.BI LP " (bool)" +Terminal has VT100 style margins (`magic margins'). Note that +this capability is obsolete because +.I screen +uses the standard 'xn' instead. +.TP 13 +.BI Z0 " (str)" +Change width to 132 columns. +.TP 13 +.BI Z1 " (str)" +Change width to 80 columns. +.TP 13 +.BI WS " (str)" +Resize display. This capability has the desired width and height as +arguments. \fISunView(tm)\fP example: '\eE[8;%d;%dt'. +.TP 13 +.BI NF " (bool)" +Terminal doesn't need flow control. Send ^S and ^Q direct to +the application. Same as 'flow off'. The opposite of this +capability is 'nx'. +.TP 13 +.BI G0 " (bool)" +Terminal can deal with ISO 2022 font selection sequences. +.TP 13 +.BI S0 " (str)" +Switch charset 'G0' to the specified charset. Default +is '\eE(%.'. +.TP 13 +.BI E0 " (str)" +Switch charset 'G0' back to standard charset. Default +is '\eE(B'. +.TP 13 +.BI C0 " (str)" +Use the string as a conversion table for font '0'. See +the 'ac' capability for more details. +.TP 13 +.BI CS " (str)" +Switch cursor-keys to application mode. +.TP 13 +.BI CE " (str)" +Switch cursor-keys back to normal mode. +.TP 13 +.BI AN " (bool)" +Turn on autonuke. See the 'autonuke' command for more details. +.TP 13 +.BI OL " (num)" +Set the output buffer limit. See the 'obuflimit' command for more details. +.TP 13 +.BI KJ " (str)" +Set the encoding of the terminal. See the 'encoding' command for +valid encodings. +.TP 13 +.BI AF " (str)" +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 +.BI AB " (str)" +Same as 'AF', but change background color. +.TP 13 +.BI AX " (bool)" +Does understand ANSI set default fg/bg color (\eE[39m / \eE[49m). +.TP 13 +.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 XT " (bool)" +Terminal understands special xterm sequences (OSC, mouse tracking). +.TP 13 +.BI C8 " (bool)" +Terminal needs bold to display high-intensity colors (e.g. Eterm). +.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 +strings depending on the current font and terminal type. +Use this feature if you want to work with a common standard character +set (say ISO8851-latin1) even on terminals that scatter the more +unusual characters over several national language font pages. + +Syntax: +.nf + \fBXC=\fP\fI<charset-mapping>\fP{\fB,,\fP\fI<charset-mapping>\fP} + \fI<charset-mapping>\fP := \fI<designator><template>\fP{\fB,\fP\fI<mapping>\fP} + \fI<mapping>\fP := \fI<char-to-be-mapped><template-arg>\fP +.fi + +The things in braces may be repeated any number of times. + +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 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 +string in \fI<template-arg>\fP. A quoting mechanism was added to make +it possible to use a real '%'. The '\e' character quotes the +special characters '\e', '%', and ','. + +Here is an example: + + termcap hp700 'XC=B\eE(K%\eE(B,\e304[,\e326\e\e\e\e,\e334]' + +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 +lookup table is built, therefore a lot of quoting is needed to +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 +.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 normally +haven't much in common. + +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 +.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'. + +.SH ENVIRONMENT +.PD 0 +.IP COLUMNS 15 +Number of columns on the terminal (overrides termcap entry). +.IP HOME +Directory in which to look for .screenrc. +.IP LINES +Number of lines on the terminal (overrides termcap entry). +.IP LOCKPRG +Screen lock program. +.IP NETHACKOPTIONS +Turns on nethack option. +.IP PATH +Used for locating programs to run. +.IP SCREENCAP +For customizing a terminal's TERMCAP value. +.IP SCREENDIR +Alternate socket directory. +.IP SCREENRC +Alternate user screenrc file. +.IP SHELL +Default shell program for opening windows (default \*Q/bin/sh\*U). +See also \*Qshell\*U .screenrc command. +.IP STY +Alternate socket name. +.IP SYSSCREENRC +Alternate system screenrc file. +.IP TERM +Terminal name. +.IP TERMCAP +Terminal description. +.IP WINDOW +Window number of a window (at creation time). + +.SH FILES +.PD 0 +.IP …/screen-4.?.??/etc/screenrc 34 +.IP …/screen-4.?.??/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/.screenrc +Read in after /usr/local/etc/screenrc +.IP $SCREENDIR/S\-<login> +.IP /local/screens/S\-<login> +Socket directories (default) +.IP /usr/tmp/screens/S\-<login> +Alternate socket directories. +.IP "<socket directory>/.termcap" +Written by the "termcap" output function +.IP /usr/tmp/screens/screen\-exchange +or +.IP /tmp/screen\-exchange +.I screen +`interprocess communication buffer' +.IP hardcopy.[0-9] +Screen images created by the hardcopy function +.IP screenlog.[0-9] +Output log files created by the log function +.IP /usr/lib/terminfo/?/* +or +.IP /etc/termcap +Terminal capability databases +.IP /etc/utmp +Login records +.IP $LOCKPRG +Program that locks a terminal. + + +.SH "SEE ALSO" +termcap(5), utmp(5), vi(1), captoinfo(1), tic(1) + + +.SH AUTHORS +Originally created by Oliver Laumann. For a long time maintained +and developed by Juergen Weigert, Michael Schroeder, Micah Cowan +and Sadrul Habib Chowdhury. This latest version was produced by +Amadeusz Slawinski <amade@asmblr.net> +and Alexander Naumov <alexander_naumov@opensuse.org>. + +.SH COPYLEFT +.nf +Copyright (c) 2015-2017 + Juergen Weigert <jnweiger@immd4.informatik.uni\-erlangen.de> + Alexander Naumov <alexander_naumov@opensuse.org> + Amadeusz Slawinski <amade@asmblr.net> +Copyright (c) 2010-2015 + Juergen Weigert <jnweiger@immd4.informatik.uni\-erlangen.de> + Sadrul Habib Chowdhury <sadrul@users.sourceforge.net> +Copyright (c) 2008, 2009 + Juergen Weigert <jnweiger@immd4.informatik.uni\-erlangen.de> + Michael Schroeder <mlschroe@immd4.informatik.uni\-erlangen.de> + Micah Cowan <micah@cowan.name> + Sadrul Habib Chowdhury <sadrul@users.sourceforge.net> +Copyright (C) 1993-2003 + Juergen Weigert <jnweiger@immd4.informatik.uni\-erlangen.de> + Michael Schroeder <mlschroe@immd4.informatik.uni\-erlangen.de> +Copyright (C) 1987 Oliver Laumann +.fi +.PP +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3, or (at your option) +any later version. +.PP +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +.PP +You should have received a copy of the GNU General Public License +along with this program (see the file COPYING); if not, write to the +Free Software Foundation, Inc., +59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + +.SH CONTRIBUTORS +.nf +Eric S. Raymond <esr@thyrsus.com>, +Thomas Renninger <treen@suse.com>, +Axel Beckert <abe@deuxchevaux.org>, +Ken Beal <kbeal@amber.ssd.csd.harris.com>, +Rudolf Koenig <rfkoenig@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>, +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@eterna.com.au>, +Christopher Williams <cgw@pobox.com>, +Matt Mosley <mattm@access.digex.net>, +Gregory Neil Shapiro <gshapiro@wpi.WPI.EDU>, +Johannes Zellner <johannes@zellner.org>, +Pablo Averbuj <pablo@averbuj.com>. +.fi + +.SH AVAILABILITY +The latest official release of +.I screen +available via anonymous ftp from ftp.gnu.org/gnu/screen/ or any other +.I GNU +distribution site. The home site of +.I screen +is savannah.gnu.org/projects/screen/. If you want to help, send a note to +screen-devel@gnu.org. + +.SH BUGS +.PD +.IP \(bu 3 +`dm' (delete mode) and `xs' are not handled +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 +.I vttest +is allowed to fail. +.IP \(bu +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 +capabilities to $TERMCAP may not have any effects. +.IP \(bu +.I Screen +does not make use of hardware tabs. +.IP \(bu +.I Screen +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 +.I 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. +.IP \(bu +.I Screen +may give a strange warning when your tty has no utmp entry. +.IP \(bu +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 +.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 bug-reports, fixes, enhancements, t-shirts, money, beer & pizza to +.BR screen-devel@gnu.org . + |