1
\input texinfo @c -*-texinfo-*-
4
@setfilename screen.info
5
@settitle Screen User's Manual
6
@dircategory General Commands
13
* Screen: (screen). Full-screen window manager.
16
@c For examples, use a literal escape in info.
25
This file documents the @code{Screen} virtual terminal manager.
27
Copyright (c) 1993-2003 Free Software Foundation, Inc.
29
Permission is granted to make and distribute verbatim copies of
30
this manual provided the copyright notice and this permission notice
31
are preserved on all copies.
34
Permission is granted to process this file through TeX and print the
35
results, provided the printed document carries copying permission
36
notice identical to this one except for the removal of this paragraph
37
(this paragraph not being relevant to the printed manual).
40
Permission is granted to copy and distribute modified versions of this
41
manual under the conditions for verbatim copying, provided that the entire
42
resulting derived work is distributed under the terms of a permission
43
notice identical to this one.
45
Permission is granted to copy and distribute translations of this manual
46
into another language, under the above conditions for modified versions,
47
except that this permission notice may be stated in a translation approved
53
@subtitle The virtual terminal manager
54
@subtitle for Version @value{version}
58
@vskip 0pt plus 1filll
59
Copyright @copyright{} 1993-2003 Free Software Foundation, Inc.
61
Permission is granted to make and distribute verbatim copies of
62
this manual provided the copyright notice and this permission notice
63
are preserved on all copies.
65
Permission is granted to copy and distribute modified versions of this
66
manual under the conditions for verbatim copying, provided that the entire
67
resulting derived work is distributed under the terms of a permission
68
notice identical to this one.
70
Permission is granted to copy and distribute translations of this manual
71
into another language, under the above conditions for modified versions,
72
except that this permission notice may be stated in a translation approved
79
@node Top, Overview, (dir), (dir)
83
This file documents the @code{Screen} virtual terminal manager, version
88
* Overview:: Preliminary information.
89
* Getting Started:: An introduction to @code{screen}.
90
* Invoking Screen:: Command line options for @code{screen}.
91
* Customization:: The @file{.screenrc} file.
92
* Commands:: List all of the commands.
93
* New Window:: Running a program in a new window.
94
* Selecting:: Selecting a window to display.
95
* Session Management:: Suspend/detach, grant access, connect sessions.
96
* Regions:: Split-screen commands.
97
* Window Settings:: Titles, logging, etc.
98
* Virtual Terminal:: Controlling the @code{screen} VT100 emulation.
99
* Copy and Paste:: Exchanging text between windows and sessions.
100
* Subprocess Execution:: I/O filtering with @code{exec}.
101
* Key Binding:: Binding commands to keys.
102
* Flow Control:: Trap or pass flow control characters.
103
* Termcap:: Tweaking your terminal's termcap entry.
104
* Message Line:: The @code{screen} message line.
105
* Logging:: Keeping a record of your session.
106
* Startup:: Functions only useful at @code{screen} startup.
107
* Miscellaneous:: Various other commands.
108
* String Escapes:: Inserting current information into strings
109
* Environment:: Environment variables used by @code{screen}.
110
* Files:: Files used by @code{screen}.
111
* Credits:: Who's who of @code{screen}.
112
* Bugs:: What to do if you find a bug.
113
* Installation:: Getting @code{screen} running on your system.
114
* Concept Index:: Index of concepts.
115
* Command Index:: Index of all @code{screen} commands.
116
* Keystroke Index:: Index of default key bindings.
119
@node Overview, Getting Started, Top, Top
123
Screen is a full-screen window manager that multiplexes a physical
124
terminal between several processes, typically interactive shells. Each
125
virtual terminal provides the functions of the DEC VT100 terminal and,
126
in addition, several control functions from the ISO 6429 (ECMA 48, ANSI X3.64)
127
and ISO 2022 standards (e.g. insert/delete line and support for multiple
128
character sets). There is a scrollback history buffer for each virtual
129
terminal and a copy-and-paste mechanism that allows the user to move
130
text regions between windows.
132
When @code{screen} is called, it creates a single window with a shell in
133
it (or the specified command) and then gets out of your way so that you
134
can use the program as you normally would. Then, at any time, you can
135
create new (full-screen) windows with other programs in them (including
136
more shells), kill the current window, view a list of the active
137
windows, turn output logging on and off, copy text between windows, view
138
the scrollback history, switch between windows, etc. All windows run
139
their programs completely independent of each other. Programs continue
140
to run when their window is currently not visible and even when the
141
whole screen session is detached from the user's terminal.
143
When a program terminates, @code{screen} (per default) kills the window
144
that contained it. If this window was in the foreground, the display
145
switches to the previously displayed window; if none are left,
148
Everything you type is sent to the program running in the current
149
window. The only exception to this is the one keystroke that is used to
150
initiate a command to the window manager. By default, each command
151
begins with a control-a (abbreviated @kbd{C-a} from now on), and is
152
followed by one other keystroke. The command character (@pxref{Command
153
Character}) and all the key bindings (@pxref{Key Binding}) can be fully
154
customized to be anything you like, though they are always two
155
characters in length.
157
@code{Screen} does not understand the prefix @kbd{C-} to mean control.
158
Please use the caret notation (@kbd{^A} instead of @kbd{C-a}) as arguments
159
to e.g. the @code{escape} command or the @code{-e} option. @code{Screen}
160
will also print out control characters in caret notation.
162
The standard way to create a new window is to type @kbd{C-a c}. This
163
creates a new window running a shell and switches to that window
164
immediately, regardless of the state of the process running in the
165
current window. Similarly, you can create a new window with a custom
166
command in it by first binding the command to a keystroke (in your
167
@file{.screenrc} file or at the @kbd{C-a :} command line) and then using it
168
just like the @kbd{C-a c} command. In addition, new windows can be created by
169
running a command like:
176
from a shell prompt within a previously created window. This will not
177
run another copy of @code{screen}, but will instead supply the command
178
name and its arguments to the window manager (specified in the $STY environment
179
variable) who will use it to create the new window. The above example would
180
start the @code{emacs} editor (editing @file{prog.c}) and switch to its window.
181
- Note that you cannot transport environment variables from
182
the invoking shell to the application (emacs in this case), because it is
183
forked from the parent screen process, not from the invoking shell.
185
If @file{/var/run/utmp} is writable by @code{screen}, an appropriate record
186
will be written to this file for each window, and removed when the
187
window is closed. This is useful for working with @code{talk},
188
@code{script}, @code{shutdown}, @code{rsend}, @code{sccs} and other
189
similar programs that use the utmp file to determine who you are. As
190
long as @code{screen} is active on your terminal, the terminal's own
191
record is removed from the utmp file. @xref{Login}.
193
@node Getting Started, Invoking Screen, Overview, Top
194
@chapter Getting Started
197
Before you begin to use @code{screen} you'll need to make sure you have
198
correctly selected your terminal type, just as you would for any other
199
termcap/terminfo program. (You can do this by using @code{tset},
200
@code{qterm}, or just @code{set term=mytermtype}, for example.)
202
If you're impatient and want to get started without doing a lot more
203
reading, you should remember this one command: @kbd{C-a ?} (@pxref{Key
204
Binding}). Typing these two characters will display a list of the
205
available @code{screen} commands and their bindings. Each keystroke is
206
discussed in the section on keystrokes (@pxref{Default Key Bindings}).
207
Another section (@pxref{Customization}) deals with the contents of your
210
If your terminal is a ``true'' auto-margin terminal (it doesn't allow
211
the last position on the screen to be updated without scrolling the
212
screen) consider using a version of your terminal's termcap that has
213
automatic margins turned @emph{off}. This will ensure an accurate
214
and optimal update of the screen in all circumstances. Most terminals
215
nowadays have ``magic'' margins (automatic margins plus usable last
216
column). This is the VT100 style type and perfectly suited for
218
If all you've got is a ``true'' auto-margin terminal @code{screen}
219
will be content to use it, but updating a character put into the last
220
position on the screen may not be possible until the screen scrolls or
221
the character is moved into a safe position in some other way. This
222
delay can be shortened by using a terminal with insert-character
225
@xref{Special Capabilities}, for more information about telling
226
@code{screen} what kind of terminal you have.
228
@node Invoking Screen, Customization, Getting Started, Top
229
@chapter Invoking @code{Screen}
232
@cindex command line options
234
Screen has the following command-line options:
238
Include @emph{all} capabilities (with some minor exceptions) in each
239
window's termcap, even if @code{screen} must redraw parts of the display
240
in order to implement a function.
243
Adapt the sizes of all windows to the size of the display. By default,
244
@code{screen} may try to restore its old window sizes when attaching to
245
resizable terminals (those with @samp{WS} in their descriptions, e.g.
246
@code{suncmd} or some varieties of @code{xterm}).
249
Use @var{file} as the user's configuration file instead of the default
250
of @file{$HOME/.screenrc}.
252
@item -d [@var{pid.sessionname}]
253
@itemx -D [@var{pid.sessionname}]
254
Do not start @code{screen}, but instead detach a @code{screen} session
255
running elsewhere (@pxref{Detach}). @samp{-d} has the same effect as
256
typing @kbd{C-a d} from the controlling terminal for the session.
257
@samp{-D} is the equivalent to the power detach key. If no session can
258
be detached, this option is ignored. In combination with the
259
@code{-r}/@code{-R} option more powerful effects can be achieved:
263
Reattach a session and if necessary detach it first.
265
Reattach a session and if necessary detach or even create it first.
267
Reattach a session and if necessary detach or create it.
268
Use the first session if more than one session is available.
270
Reattach a session. If necessary detach and logout remotely first.
272
Attach here and now. In detail this means: If a session is running,
273
then reattach. If necessary detach and logout remotely first. If it
274
was not running create it and notify the user.
275
This is the author's favorite.
277
Attach here and now. Whatever that means, just do it.
280
@emph{Note}: It is a good idea to check the status of your sessions
281
with @code{screen -list} before using this option.
284
Set the command character to @var{x}, and the character generating a
285
literal command character (when typed after the command character) to
286
@var{y}. The defaults are @kbd{C-a} and @kbd{a}, which can be specified
287
as @samp{-e^Aa}. When creating a @code{screen} session, this option
288
sets the default command character. In a multiuser session all users
289
added will start off with this command character. But when attaching
290
to an already running session, this option only changes the command
291
character of the attaching user.
292
This option is equivalent to the commands @code{defescape} or
293
@code{escape} respectively. (@pxref{Command Character}).
298
Set flow-control to on, off, or automatic switching mode, respectively.
299
This option is equivalent to the @code{defflow} command (@pxref{Flow
303
Set the history scrollback buffer to be @var{num} lines high.
304
Equivalent to the @code{defscrollback} command (@pxref{Copy}).
307
Cause the interrupt key (usually @kbd{C-c}) to interrupt the display
308
immediately when flow control is on. This option is equivalent to the
309
@code{interrupt} argument to the @code{defflow} command (@pxref{Flow
310
Control}). Its use is discouraged.
314
Turn login mode on or off (for @file{/var/run/utmp} updating). This option
315
is equivalent to the @code{deflogin} command (@pxref{Login}).
317
@item -ls [@var{match}]
318
@itemx -list [@var{match}]
319
Do not start @code{screen}, but instead print a list of session
320
identification strings (usually of the form @var{pid.tty.host};
321
@pxref{Session Name}). Sessions marked @samp{detached} can be resumed
322
with @code{screen -r}. Those marked @samp{attached} are running and
323
have a controlling terminal. If the session runs in multiuser mode,
324
it is marked @samp{multi}. Sessions marked as @samp{unreachable} either
325
live on a different host or are dead.
326
An unreachable session is considered dead, when its name matches either the
327
name of the local host, or the specified parameter, if any.
328
See the @code{-r} flag for a description how to construct matches.
329
Sessions marked as @samp{dead} should be thoroughly checked and removed.
330
Ask your system administrator if you are not sure.
331
Remove sessions with the @samp{-wipe} option.
334
Tell @code{screen} to turn on automatic output logging for the
338
Tell @code{screen} to ignore the @code{$STY} environment variable. When
339
this option is used, a new session will always be created, regardless of
340
whether @code{screen} is being called from within another @code{screen}
341
session or not. This flag has a special meaning in connection
342
with the @samp{-d} option:
345
Start @code{screen} in @emph{detached} mode. This creates a new
346
session but doesn't attach to it. This is useful for system startup
349
This also starts @code{screen} in @emph{detached} mode, but doesn't fork
350
a new process. The command exits if the session terminates.
354
Select a more optimal output mode for your terminal rather than true VT100
355
emulation (only affects auto-margin terminals without @samp{LP}). This
356
can also be set in your @file{.screenrc} by specifying @samp{OP} in the
357
@code{termcap} command.
359
@item -p @var{name_or_number}|-|=|+
360
Preselect a window. This is useful when you want to reattach to a
361
specific window or you want to send a command via the @samp{-X}
362
option to a specific window. As with screen's select command, @samp{-}
363
selects the blank window. As a special case for reattach, @samp{=}
364
brings up the windowlist on the blank window, while a @samp{+} will
365
create new window. The command will not be executed if the specified
366
window could not be found.
369
Suppress printing of error messages. In combination with @samp{-ls} the exit
370
value is set as follows: 9 indicates a directory without sessions. 10
371
indicates a directory with running but not attachable sessions. 11 (or more)
372
indicates 1 (or more) usable sessions.
373
In combination with @samp{-r} the exit value is as follows: 10 indicates that
374
there is no session to resume. 12 (or more) indicates that there are 2 (or
375
more) sessions to resume and you should specify which one to choose.
376
In all other cases @samp{-q} has no effect.
379
Some commands now can be queried from a remote session using this
380
flag, e.g. 'screen -Q windows'. The commands will send the
381
response to the stdout of the querying process. If there was an
382
error in the command, then the querying process will exit with
385
The commands that can be queried now are:
395
@item -r [@var{pid.sessionname}]
396
@itemx -r @var{sessionowner}/[@var{pid.sessionname}]
397
Resume a detached @code{screen} session. No other options (except
398
combinations with @samp{-d} or @samp{-D}) may be specified, though
400
(@pxref{Session Name}) may be needed to distinguish between multiple
401
detached @code{screen} sessions.
402
The second form is used to connect to another user's screen session which
403
runs in multiuser mode. This indicates that screen should look for
404
sessions in another user's directory. This requires setuid-root.
407
Resume the first appropriate detached @code{screen} session. If
408
successful, all other command-line options are ignored. If no detached
409
session exists, start a new session using the specified options, just as
410
if @samp{-R} had not been specified. This option is set by default if
411
screen is run as a login-shell (actually screen uses @samp{-xRR} in
413
For combinations with the
414
@samp{-D}/@samp{-d} option see there.
416
@item -s @var{program}
417
Set the default shell to be @var{program}. By default, @code{screen}
418
uses the value of the environment variable @code{$SHELL}, or
419
@file{/bin/sh} if it is not defined. This option is equivalent to the
420
@code{shell} command (@pxref{Shell}).
422
@item -S @var{sessionname}
423
Set the name of the new session to @var{sessionname}. This option can
424
be used to specify a meaningful name for the session in place of the
425
default @var{tty.host} suffix. This name identifies the session for the
426
@code{screen -list} and @code{screen -r} commands. This option is
427
equivalent to the @code{sessionname} command (@pxref{Session Name}).
430
Set the title (name) for the default shell or specified program.
431
This option is equivalent to the @code{shelltitle} command
435
Set the $TERM enviroment varible using the spcified @emph{term} as
436
opposed to the defualt setting of @code{screen}.
439
Run screen in UTF-8 mode. This option tells screen that your terminal
440
sends and understands UTF-8 encoded characters. It also sets the default
441
encoding for new windows to @samp{utf8}.
444
Print the version number.
446
@item -wipe [@var{match}]
447
List available screens like @code{screen -ls}, but remove destroyed
448
sessions instead of marking them as @samp{dead}.
449
An unreachable session is considered dead, when its name matches either
450
the name of the local host, or the explicitly given parameter, if any.
451
See the @code{-r} flag for a description how to construct matches.
454
Attach to a session which is already attached elsewhere (multi-display
456
@code{Screen} refuses to attach from within itself.
457
But when cascading multiple screens, loops are not detected; take care.
461
Send the specified command to a running screen session. You may use
462
the @code{-S} option to specify the screen session if you have several
463
running. You can use the @code{-d} or @code{-r} option to tell screen
464
to look only for attached or detached screen sessions. Note that this
465
command doesn't work if the session is password protected.
469
@node Customization, Commands, Invoking Screen, Top
470
@chapter Customizing @code{Screen}
471
@cindex customization
473
You can modify the default settings for @code{screen} to fit your tastes
474
either through a personal @file{.screenrc} file which contains commands
475
to be executed at startup, or on the fly using the @code{colon} command.
478
* Startup Files:: The @file{.screenrc} file.
479
* Source:: Read commands from a file.
480
* Colon:: Entering customization commands interactively.
483
@node Startup Files, Source, , Customization
484
@section The @file{.screenrc} file
487
When @code{screen} is invoked, it executes initialization commands from
488
the files @file{.screenrc} in the user's home directory and
489
@file{/etc/screenrc}. These defaults can be overridden in the
491
For the global screenrc file @code{screen} searches for the environment
492
variable @code{$SYSSCREENRC} (this override feature may be disabled at
493
compile-time). The user specific screenrc file is
494
searched for in @code{$SCREENRC}, then
495
@file{@code{$HOME}/.screenrc}. The command line option @samp{-c}
496
specifies which file to use (@pxref{Invoking Screen}. Commands in these
497
files are used to set options, bind commands to keys, and to
498
automatically establish one or more windows at the beginning of
499
your @code{screen} session. Commands are listed one per line, with
500
empty lines being ignored. A command's arguments are separated by tabs
501
or spaces, and may be surrounded by single or double quotes. A @samp{#}
502
turns the rest of the line into a comment, except in quotes.
503
Unintelligible lines are warned about and ignored. Commands may contain
504
references to environment variables. The syntax is the shell-like
505
@code{$VAR} or @code{$@{VAR@}}. Note that this causes incompatibility
506
with previous @code{screen} versions, as now the '$'-character has to be
507
protected with '\' if no variable substitution is intended. A string in
508
single-quotes is also protected from variable substitution.
510
Two configuration files are shipped as examples with your screen
511
distribution: @file{etc/screenrc} and @file{etc/etcscreenrc}. They
512
contain a number of useful examples for various commands.
514
@node Source, Colon, Startup Files, Customization
516
@deffn Command source file
518
Read and execute commands from file @var{file}. Source commands
519
may be nested to a maximum recursion level of ten. If @var{file}
520
is not an absolute path and screen is already processing a
521
source command, the parent directory of the running source
522
command file is used to search for the new command file before
523
screen's current directory.
525
Note that termcap/terminfo/termcapinfo commands only work
526
at startup and reattach time, so they must be reached via
527
the default screenrc files to have an effect.
530
@node Colon, , Source, Customization
532
Customization can also be done online, with this command:
537
Allows you to enter @file{.screenrc} command lines. Useful for
538
on-the-fly modification of key bindings, specific window creation and
539
changing settings. Note that the @code{set} keyword no longer exists,
540
as of version 3.3. Change default settings with commands starting with
541
@samp{def}. You might think of this as the @code{ex} command mode of
542
@code{screen}, with @code{copy} as its @code{vi} command mode
543
(@pxref{Copy and Paste}).
546
@node Commands, New Window, Customization, Top
549
A command in @code{screen} can either be bound to a key, invoked from a
550
screenrc file, or called from the @code{colon} prompt
551
(@pxref{Customization}). As of version 3.3, all commands can be bound
552
to keys, although some may be less useful than others.
553
For a number of real life working examples of the most important
554
commands see the files @file{etc/screenrc} and @file{etc/etcscreenrc}
555
of your screen distribution.
557
In this manual, a command definition looks like this:
560
@item -- Command: command [-n] ARG1 [ARG2] @dots{}
561
(@var{keybindings})@*
562
This command does something, but I can't remember what.
565
An argument in square brackets (@samp{[]}) is optional. Many commands
566
take an argument of @samp{on} or @samp{off}, which is indicated as
567
@var{state} in the definition.
570
* Default Key Bindings:: @code{screen} keyboard commands.
571
* Command Summary:: List of all commands.
574
@node Default Key Bindings, Command Summary, , Commands
575
@section Default Key Bindings
577
As mentioned previously, each keyboard command consists of a
578
@kbd{C-a} followed by one other character. For your convenience, all
579
commands that are bound to lower-case letters are also bound to their
580
control character counterparts (with the exception of @kbd{C-a a}; see
581
below). Thus, both @kbd{C-a c} and @kbd{C-a C-c} can be used to create
584
The following table shows the default key bindings:
589
Prompt for a window identifier and switch.
594
Present a list of all windows for selection.
597
@item @kbd{C-a 0@dots{}9, -}
598
(select 0@dots{}select 9, select -)@*
599
Switch to window number 0@dots{}9, or the blank window.
602
@item @kbd{C-a @key{Tab}}
604
Switch the input focus to the next region. @xref{Regions}.
608
Toggle to the window displayed previously. If this window does no
609
longer exist, @code{other} has the same effect as @code{next}.
614
Send the command character (C-a) to window. See @code{escape} command.
615
@xref{Command Character}.
619
Allow the user to enter a title for the current window.
620
@xref{Naming Windows}.
625
Send a break to the tty.
630
Close and reopen the tty-line.
636
Create a new window with a shell and switch to that window.
637
@xref{Screen Command}.
641
Clear the screen. @xref{Clear}.
646
Detach @code{screen} from this terminal. @xref{Detach}.
650
Detach and logout. @xref{Power Detach}.
655
Cycle flow among @samp{on}, @samp{off} or @samp{auto}. @xref{Flow}.
659
Resize the window to the current region size. @xref{Fit}.
663
Toggle visual bell mode. @xref{Bell}.
667
Write a hardcopy of the current window to the file ``hardcopy.@var{n}''.
672
Toggle logging of the current window to the file ``screenlog.@var{n}''.
678
Show info about the current window. @xref{Info}.
683
Destroy the current window. @xref{Kill}.
688
Fully refresh the current window. @xref{Redisplay}.
692
Toggle the current window's login state. @xref{Login}.
697
Repeat the last message displayed in the message line.
702
Toggle monitoring of the current window. @xref{Monitor}.
704
@item @kbd{C-a @key{SPC}}
708
Switch to the next window. @xref{Selecting}.
712
Show the number (and title) of the current window. @xref{Number}.
717
@itemx @kbd{C-a @key{BackSpace}}
719
Switch to the previous window (opposite of @kbd{C-a n}).
725
Send a ^Q (ASCII XON) to the current window. @xref{XON/XOFF}.
729
Delete all regions but the current one. @xref{Regions}.
734
Toggle the current window's line-wrap setting (turn the current window's
735
automatic margins on or off). @xref{Wrap}.
740
Send a ^S (ASCII XOFF) to the current window. @xref{XON/XOFF}.
744
Split the current region horizontally into two new ones. @xref{Regions}.
749
Show the load average and xref. @xref{Time}.
753
Display the version and compilation date. @xref{Version}.
757
Enter digraph. @xref{Digraph}.
762
Show a list of active windows. @xref{Windows}.
766
Toggle between 80 and 132 columns. @xref{Window Size}.
771
Lock your terminal. @xref{Lock}.
775
Kill the current region. @xref{Regions}.
780
Suspend @code{screen}. @xref{Suspend}.
784
Reset the virtual terminal to its ``power-on'' values.
789
Write out a @file{.termcap} file. @xref{Dump Termcap}.
793
Show key bindings. @xref{Help}.
797
Kill all windows and terminate @code{screen}. @xref{Quit}.
801
Enter a command line. @xref{Colon}.
805
@itemx @kbd{C-a @key{ESC}}
807
Enter copy/scrollback mode. @xref{Copy}.
812
Write the contents of the paste buffer to the stdin queue of the
813
current window. @xref{Paste}.
818
Copy and paste a previous (command) line. @xref{History}.
822
Write the paste buffer out to the screen-exchange file.
823
@xref{Screen Exchange}.
827
Read the screen-exchange file into the paste buffer.
828
@xref{Screen Exchange}.
832
Delete the screen-exchange file. @xref{Screen Exchange}.
836
Start/stop monitoring the current window for inactivity. @xref{Monitor}.
840
Split the current region vertically into two new ones. @xref{Regions}.
844
Show the copyright page. @xref{License}.
848
Show the listing of attached displays. @xref{Displays}.
851
@node Command Summary, , Default Key Bindings, Commands
852
@section Command Summary
853
@cindex command summary
856
@item acladd @var{usernames}
857
Allow other users in this session. @xref{Multiuser Session}.
858
@item aclchg @var{usernames permbits list}
859
Change a user's permissions. @xref{Multiuser Session}.
860
@item acldel @var{username}
861
Disallow other user in this session. @xref{Multiuser Session}.
862
@item aclgrp @var{usrname} [@var{groupname}]
863
Inherit permissions granted to a group leader. @xref{Multiuser Session}.
864
@item aclumask [@var{users}]+/-@var{bits} ...
865
Predefine access to new windows. @xref{Umask}.
866
@item activity @var{message}
867
Set the activity notification message. @xref{Monitor}.
868
@item addacl @var{usernames}
869
Synonym to @code{acladd}. @xref{Multiuser Session}.
870
@item allpartial @var{state}
871
Set all windows to partial refresh. @xref{Redisplay}.
872
@item altscreen @var{state}
873
Enables support for the "alternate screen" terminal capability. @xref{Redisplay}.
874
@item at [@var{ident}][@kbd{#}@var{|}@kbd{*}@var{|}@kbd{%}] @var{command} [@var{args}]
875
Execute a command at other displays or windows. @xref{At}.
876
@item attrcolor @var{attrib} [@var{attribute/color-modifier}]
877
Map attributes to colors. @xref{Attrcolor}.
878
@item autodetach @var{state}
879
Automatically detach the session on SIGHUP. @xref{Detach}.
880
@item autonuke @var{state}
881
Enable a clear screen to discard unwritten output. @xref{Autonuke}.
882
@item backtick @var{id} @var{lifespan} @var{autorefresh} @var{command} [@var{args}]
883
Define a command for the backtick string escape. @xref{Backtick}.
884
@item bce [@var{state}]
885
Change background color erase. @xref{Character Processing}.
886
@item bell_msg [@var{message}]
887
Set the bell notification message. @xref{Bell}.
888
@item bind [-c @var{class}] @var{key} [@var{command} [@var{args}]]
889
Bind a command to a key. @xref{Bind}.
890
@item bindkey [@var{opts}] [@var{string} [@var{cmd args}]]
891
Bind a string to a series of keystrokes. @xref{Bindkey}.
893
Blank the screen. @xref{Screen Saver}.
895
Define a blanker program. @xref{Screen Saver}.
896
@item break [@var{duration}]
897
Send a break signal to the current window. @xref{Break}.
898
@item breaktype [@var{tcsendbreak} | @var{TCSBRK} | @var{TIOCSBRK}]
899
Specify how to generate breaks. @xref{Break}.
900
@item bufferfile [@var{exchange-file}]
901
Select a file for screen-exchange. @xref{Screen Exchange}.
902
@item c1 [@var{state}]
903
Change c1 code processing. @xref{Character Processing}.
904
@item caption @var{mode} [@var{string}]
905
Change caption mode and string. @xref{Regions}.
906
@item chacl @var{usernames permbits list}
907
Synonym to @code{aclchg}. @xref{Multiuser Session}.
908
@item charset @var{set}
909
Change character set slot designation. @xref{Character Processing}.
910
@item chdir [@var{directory}]
911
Change the current directory for future windows. @xref{Chdir}.
913
Clear the window screen. @xref{Clear}.
915
Enter a @code{screen} command. @xref{Colon}.
916
@item command [-c @var{class}]
917
Simulate the screen escape key. @xref{Command Character}.
918
@item compacthist [@var{state}]
919
Selects compaction of trailing empty lines. @xref{Scrollback}.
920
@item console [@var{state}]
921
Grab or ungrab console output. @xref{Console}.
923
Enter copy mode. @xref{Copy}.
924
@item copy_reg [@var{key}]
925
Removed. Use @code{paste} instead. @xref{Registers}.
926
@item crlf @var{state}
927
Select line break behavior for copying. @xref{Line Termination}.
928
@item debug @var{state}
929
Suppress/allow debugging output. @xref{Debug}.
930
@item defautonuke @var{state}
931
Select default autonuke behavior. @xref{Autonuke}.
932
@item defbce @var{state}
933
Select background color erase. @xref{Character Processing}.
934
@item defbreaktype [@var{tcsendbreak} | @var{TCSBRK} | @var{TIOCSBRK}]
935
Specify the default for generating breaks. @xref{Break}.
936
@item defc1 @var{state}
937
Select default c1 processing behavior. @xref{Character Processing}.
938
@item defcharset [@var{set}]
939
Change defaul character set slot designation. @xref{Character Processing}.
940
@item defencoding @var{enc}
941
Select default window encoding. @xref{Character Processing}.
942
@item defescape @var{xy}
943
Set the default command and @code{meta} characters. @xref{Command Character}.
944
@item defflow @var{fstate}
945
Select default flow control behavior. @xref{Flow}.
946
@item defgr @var{state}
947
Select default GR processing behavior. @xref{Character Processing}.
948
@item defhstatus [@var{status}]
949
Select default window hardstatus line. @xref{Hardstatus}.
950
@item deflog @var{state}
951
Select default window logging behavior. @xref{Log}.
952
@item deflogin @var{state}
953
Select default utmp logging behavior. @xref{Login}.
954
@item defmode @var{mode}
955
Select default file mode for ptys. @xref{Mode}.
956
@item defmonitor @var{state}
957
Select default activity monitoring behavior. @xref{Monitor}.
958
@item defmousetrack @var{on}|@var{off}
959
Select the default mouse tracking behavior. @xref{Mousetrack}.
960
@item defnonblock @var{state}|@var{numsecs}
961
Select default nonblock mode. @xref{Nonblock}.
962
@item defobuflimit @var{limit}
963
Select default output buffer limit. @xref{Obuflimit}.
964
@item defscrollback @var{num}
965
Set default lines of scrollback. @xref{Scrollback}.
966
@item defshell @var{command}
967
Set the default program for new windows. @xref{Shell}.
968
@item defsilence @var{state}
969
Select default idle monitoring behavior. @xref{Monitor}.
970
@item defslowpaste @var{msec}
971
Select the default inter-character timeout when pasting. @xref{Paste}.
972
@item defutf8 @var{state}
973
Select default character encoding. @xref{Character Processing}.
974
@item defwrap @var{state}
975
Set default line-wrapping behavior. @xref{Wrap}.
976
@item defwritelock @var{on|off|auto}
977
Set default writelock behavior. @xref{Multiuser Session}.
978
@item defzombie [@var{keys}]
979
Keep dead windows. @xref{Zombie}.
981
Disconnect @code{screen} from the terminal. @xref{Detach}.
982
@item digraph [@var{preset} [@var{unicode-value}]]
983
Enter a digraph sequence. @xref{Digraph}.
985
Display terminal information. @xref{Info}.
987
List currently active user interfaces. @xref{Displays}.
989
Write the window's termcap entry to a file. @xref{Dump Termcap}.
990
@item echo [-n] @var{message}
991
Display a message on startup. @xref{Startup}.
992
@item encoding @var{enc} [@var{denc}]
993
Set the encoding of a window. @xref{Character Processing}.
994
@item escape @var{xy}
995
Set the command and @code{meta} characters. @xref{Command Character}.
996
@item eval @var{command1} [@var{command2} ...]
997
Parse and execute each argument. @xref{Eval}.
998
@item exec [[@var{fdpat}] @var{command} [@var{args} ...]]
999
Run a subprocess (filter). @xref{Exec}.
1001
Change window size to current display size. @xref{Window Size}.
1002
@item flow [@var{fstate}]
1003
Set flow control behavior. @xref{Flow}.
1005
Move focus to next region. @xref{Regions}.
1007
Force the current region to a certain size. @xref{Focusminsize}.
1008
@item gr [@var{state}]
1009
Change GR charset processing. @xref{Character Processing}.
1010
@item group [@var{grouptitle}]
1011
Change or show the group the current window belongs to. @xref{Window Groups}.
1012
@item hardcopy [-h] [@var{file}]
1013
Write out the contents of the current window. @xref{Hardcopy}.
1014
@item hardcopy_append @var{state}
1015
Append to hardcopy files. @xref{Hardcopy}.
1016
@item hardcopydir @var{directory}
1017
Place, where to dump hardcopy files. @xref{Hardcopy}.
1018
@item hardstatus [@var{state}]
1019
Use the hardware status line. @xref{Hardware Status Line}.
1020
@item height [@var{lines} [@var{cols}]]
1021
Set display height. @xref{Window Size}.
1022
@item help [-c @var{class}]
1023
Display current key bindings. @xref{Help}.
1025
Find previous command beginning @dots{}. @xref{History}.
1026
@item hstatus @var{status}
1027
Change the window's hardstatus line. @xref{Hardstatus}.
1028
@item idle [@var{timeout} [@var{cmd} @var{args}]]
1029
Define a screen saver command. @xref{Screen Saver}.
1030
@item ignorecase [on|off]
1031
Ignore character case in searches. @xref{Searching}.
1033
Display window settings. @xref{Info}.
1034
@item ins_reg [@var{key}]
1035
Removed, use @code{paste} instead. @xref{Registers}.
1037
Destroy the current window. @xref{Kill}.
1039
Redisplay the last message. @xref{Last Message}.
1040
@item layout new [@var{title}]
1041
Create a layout. @xref{Layout}.
1042
@item layout remove [@var{n}|@var{title}]
1043
Delete a layout. @xref{Layout}.
1045
Select the next layout. @xref{Layout}.
1047
Select the previous layout. @xref{Layout}.
1048
@item layout select [@var{n}|@var{title}]
1049
Jump to a layout. @xref{Layout}.
1051
List the available layouts. @xref{Layout}.
1052
@item layout title [@var{title}]
1053
Show or set the title of a layout. @xref{Layout}.
1054
@item layout number [@var{n}]
1055
Show or set the number of a layout. @xref{Layout}.
1056
@item layout attach [@var{title}|:last]
1057
Show or set which layout to reattach to. @xref{Layout}.
1058
@item layout save [@var{n}|@var{title}]
1059
Remember the organization of a layout. @xref{Layout}.
1060
@item layout autosave [@var{on}|@var{off}]
1061
Show or set the status of layout saving. @xref{Layout}.
1062
@item layout dump [filename]
1063
Save the layout arrangement to a file. @xref{Layout}.
1065
Display licensing information. @xref{Startup}.
1067
Lock the controlling terminal. @xref{Lock}.
1068
@item log [@var{state}]
1069
Log all output in the current window. @xref{Log}.
1070
@item logfile @var{filename}
1071
Place where to collect logfiles. @xref{Log}.
1072
@item login [@var{state}]
1073
Log the window in @file{/var/run/utmp}. @xref{Login}.
1074
@item logtstamp [@var{state}]
1075
Configure logfile time-stamps. @xref{Log}.
1077
Use only the default mapping table for the next keystroke. @xref{Bindkey Control}.
1079
Don't try to do keymapping on the next keystroke. @xref{Bindkey Control}.
1080
@item maptimeout @var{n}
1081
Set the inter-character timeout used for keymapping. @xref{Bindkey Control}.
1082
@item markkeys @var{string}
1083
Rebind keys in copy mode. @xref{Copy Mode Keys}.
1084
@item maxwin @var{n}
1085
Set the maximum window number. @xref{Maxwin}.
1087
Insert the command character. @xref{Command Character}.
1088
@item monitor [@var{state}]
1089
Monitor activity in window. @xref{Monitor}.
1090
@item mousetrack [@var{on}|@var{off}]
1091
Enable selecting split regions with mouse clicks. @xref{Mousetrack}.
1092
@item msgminwait @var{sec}
1093
Set minimum message wait. @xref{Message Wait}.
1094
@item msgwait @var{sec}
1095
Set default message wait. @xref{Message Wait}.
1096
@item multiuser @var{state}
1097
Go into single or multi user mode. @xref{Multiuser Session}.
1098
@item nethack @var{state}
1099
Use @code{nethack}-like error messages. @xref{Nethack}.
1101
Switch to the next window. @xref{Selecting}.
1102
@item nonblock [@var{state}|@var{numsecs}]
1103
Disable flow control to the current display. @xref{Nonblock}.|@var{numsecs}]
1104
@item number [@var{n}]
1105
Change/display the current window's number. @xref{Number}.
1106
@item obuflimit [@var{limit}]
1107
Select output buffer limit. @xref{Obuflimit}.
1109
Kill all other regions. @xref{Regions}.
1111
Switch to the window you were in last. @xref{Selecting}.
1112
@item partial @var{state}
1113
Set window to partial refresh. @xref{Redisplay}.
1114
@item password [@var{crypted_pw}]
1115
Set reattach password. @xref{Detach}.
1116
@item paste [@var{src_regs} [@var{dest_reg}]]
1117
Paste contents of paste buffer or registers somewhere. @xref{Paste}.
1118
@item pastefont [@var{state}]
1119
Include font information in the paste buffer. @xref{Paste}.
1121
Close and Reopen the window's terminal. @xref{Break}.
1123
Detach and hang up. @xref{Power Detach}.
1124
@item pow_detach_msg [@var{message}]
1125
Set message displayed on @code{pow_detach}. @xref{Power Detach}.
1127
Switch to the previous window. @xref{Selecting}.
1128
@item printcmd [@var{cmd}]
1129
Set a command for VT100 printer port emulation. @xref{Printcmd}.
1130
@item process [@var{key}]
1131
Treat a register as input to @code{screen}. @xref{Registers}.
1133
Kill all windows and exit. @xref{Quit}.
1134
@item readbuf [-e @var{encoding}] [@var{filename}]
1135
Read the paste buffer from the screen-exchange file. @xref{Screen Exchange}.
1136
@item readreg [-e @var{encoding}] [@var{reg} [@var{file}]]
1137
Load a register from paste buffer or file. @xref{Registers}.
1139
Redisplay the current window. @xref{Redisplay}.
1140
@item register [-e @var{encoding}] @var{key} @var{string}
1141
Store a string to a register. @xref{Registers}.
1143
Kill current region. @xref{Regions}.
1145
Delete the screen-exchange file. @xref{Screen Exchange}.
1146
@item rendition bell | monitor | silence | so @var{attr} [@var{color}]
1147
Change text attributes in caption for flagged windows. @xref{Rendition}.
1149
Reset the terminal settings for the window. @xref{Reset}.
1150
@item resize [(+/-)lines]
1151
Grow or shrink a region
1152
@item screen [@var{opts}] [@var{n}] [@var{cmd} [@var{args}] | //group]
1153
Create a new window. @xref{Screen Command}.
1154
@item scrollback @var{num}
1155
Set size of scrollback buffer. @xref{Scrollback}.
1156
@item select [@var{n}|-|.]
1157
Switch to a specified window. @xref{Selecting}.
1158
@item sessionname [@var{name}]
1159
Name this session. @xref{Session Name}.
1160
@item setenv [@var{var} [@var{string}]]
1161
Set an environment variable for new windows. @xref{Setenv}.
1162
@item setsid @var{state}
1163
Controll process group creation for windows. @xref{Setsid}.
1164
@item shell @var{command}
1165
Set the default program for new windows. @xref{Shell}.
1166
@item shelltitle @var{title}
1167
Set the default name for new windows. @xref{Shell}.
1168
@item silence [@var{state}|@var{seconds}]
1169
Monitor a window for inactivity. @xref{Monitor}.
1170
@item silencewait @var{seconds}
1171
Default timeout to trigger an inactivity notify. @xref{Monitor}.
1172
@item sleep @var{num}
1173
Pause during startup. @xref{Startup}.
1174
@item slowpaste @var{msec}
1175
Slow down pasting in windows. @xref{Paste}.
1176
@item source @var{file}
1177
Run commands from a file. @xref{Source}.
1178
@item sorendition [@var{attr} [@var{color}]]
1179
Deprecated. Use @code{rendition so} instead. @xref{Rendition}.
1181
Split region into two parts. @xref{Regions}.
1182
@item startup_message @var{state}
1183
Display copyright notice on startup. @xref{Startup}.
1184
@item stuff [@var{string}]
1185
Stuff a string in the input buffer of a window. @xref{Paste}.
1186
@item su [@var{username} [@var{password} [@var{password2}]]]
1187
Identify a user. @xref{Multiuser Session}.
1189
Put session in background. @xref{Suspend}.
1190
@item term @var{term}
1191
Set @code{$TERM} for new windows. @xref{Term}.
1192
@item termcap @var{term} @var{terminal-tweaks} [@var{window-tweaks}]
1193
Tweak termcap entries for best performance. @xref{Termcap Syntax}.
1194
@item terminfo @var{term} @var{terminal-tweaks} [@var{window-tweaks}]
1195
Ditto, for terminfo systems. @xref{Termcap Syntax}.
1196
@item termcapinfo @var{term} @var{terminal-tweaks} [@var{window-tweaks}]
1197
Ditto, for both systems. @xref{Termcap Syntax}.
1198
@item time [@var{string}]
1199
Display time and load average. @xref{Time}.
1200
@item title [@var{windowtitle}]
1201
Set the name of the current window. @xref{Title Command}.
1202
@item umask [@var{users}]+/-@var{bits} ...
1203
Synonym to @code{aclumask}. @xref{Umask}.
1205
Unset all keybindings. @xref{Bind}.
1206
@item unsetenv @var{var}
1207
Unset environment variable for new windows. @xref{Setenv}.
1208
@item utf8 [@var{state} [@var{dstate}]]
1209
Select character encoding of the current window. @xref{Character Processing}.
1210
@item vbell [@var{state}]
1211
Use visual bell. @xref{Bell}.
1212
@item vbell_msg [@var{message}]
1213
Set vbell message. @xref{Bell}.
1214
@item vbellwait @var{sec}
1215
Set delay for vbell message. @xref{Bell}.
1217
Display @code{screen} version. @xref{Version}.
1218
@item wall @var{message}
1219
Write a message to all displays. @xref{Multiuser Session}.
1220
@item width [@var{cols} [@var{lines}]]
1221
Set the width of the window. @xref{Window Size}.
1222
@item windowlist [[-b] [-m] [-g]] | string [@var{string}] | title [@var{title}]
1223
Present a list of all windows for selection. @xref{Windowlist}.
1225
List active windows. @xref{Windows}.
1226
@item wrap [ on | off ]
1227
Control line-wrap behavior. @xref{Wrap}.
1228
@item writebuf [-e @var{encoding}] [@var{filename}]
1229
Write paste buffer to screen-exchange file. @xref{Screen Exchange}.
1230
@item writelock @var{on}|@var{off}|@var{auto}
1231
Grant exclusive write permission. @xref{Multiuser Session}.
1233
Send an XOFF character. @xref{XON/XOFF}.
1235
Send an XON character. @xref{XON/XOFF}.
1236
@item zmodem [off|auto|catch|pass]
1237
Define how screen treats zmodem requests. @xref{Zmodem}.
1238
@item zombie [@var{keys} [onerror] ]
1239
Keep dead windows. @xref{Zombie}.
1242
@node New Window, Selecting, Commands, Top
1245
This section describes the commands for creating a new window for
1246
running programs. When a new window is created, the first available
1247
number is assigned to it.
1248
The number of windows is limited at compile-time by the MAXWIN
1249
configuration parameter (which defaults to 40).
1252
* Chdir:: Change the working directory for new windows.
1253
* Screen Command:: Create a new window.
1254
* Setenv:: Set environment variables for new windows.
1255
* Shell:: Parameters for shell windows.
1256
* Term:: Set the terminal type for new windows.
1257
* Window Types:: Creating different types of windows.
1258
* Window Groups:: Grouping windows together
1261
@node Chdir, Screen Command, , New Window
1263
@deffn Command chdir [directory]
1265
Change the current directory of @code{screen} to the specified directory
1266
or, if called without an argument, to your home directory (the value of
1267
the environment variable @code{$HOME}). All windows that are created by means
1268
of the @code{screen} command from within @file{.screenrc} or by means of
1269
@kbd{C-a : screen @dots{}} or @kbd{C-a c} use this as their default
1270
directory. Without a @code{chdir} command, this would be the directory
1271
from which @code{screen} was invoked. Hardcopy and log files are always
1272
written to the @emph{window's} default directory, @emph{not} the current
1273
directory of the process running in the window. You can use this
1274
command multiple times in your @file{.screenrc} to start various windows
1275
in different default directories, but the last @code{chdir} value will
1276
affect all the windows you create interactively.
1279
@node Screen Command, Setenv, Chdir, New Window
1280
@section Screen Command
1283
@deffn Command screen [opts] [n] [cmd [args] @var{| //group}]
1284
(@kbd{C-a c}, @kbd{C-a C-c})@*
1285
Establish a new window. The flow-control options (@samp{-f}, @samp{-fn}
1286
and @samp{-fa}), title option (@samp{-t}), login options
1287
(@samp{-l} and @samp{-ln}) , terminal type option (@samp{-T @var{term}}),
1288
the all-capability-flag (@samp{-a}) and scrollback option
1289
(@samp{-h @var{num}}) may be specified with each command.
1290
The option (@samp{-M}) turns monitoring on for this window.
1291
The option (@samp{-L}) turns output logging on for this window.
1292
If an optional number @var{n} in the range 0@dots{}MAXWIN-1 is given,
1293
the window number @var{n} is assigned to the newly created window (or,
1294
if this number is already in-use, the next available number). If a
1295
command is specified after @code{screen}, this command (with the given
1296
arguments) is started in the window; otherwise, a shell is created.
1297
If @samp{//group} is supplied, a container-type window is created in
1298
which other windows may be created inside it. @xref{Window Groups}.
1300
Screen has built in some functionality of @samp{cu} and @samp{telnet}.
1301
@xref{Window Types}.
1304
Thus, if your @file{.screenrc} contains the lines
1307
# example for .screenrc:
1309
screen -fn -t foobar 2 -L telnet foobar
1313
@code{screen} creates a shell window (in window #1) and a window with a
1314
TELNET connection to the machine foobar (with no flow-control using the
1315
title @samp{foobar} in window #2) and will write a logfile @samp{screenlog.2}
1316
of the telnet session. If you do not include any
1317
@code{screen} commands in your @file{.screenrc} file, then @code{screen}
1318
defaults to creating a single shell window, number zero. When the
1319
initialization is completed, @code{screen} switches to the last window
1320
specified in your .screenrc file or, if none, it opens default window
1323
@node Setenv, Shell, Screen Command, New Window
1325
@deffn Command setenv var string
1327
Set the environment variable @var{var} to value @var{string}.
1328
If only @var{var} is specified, the user will be prompted to enter a value.
1329
If no parameters are specified, the user will be prompted for both variable
1330
and value. The environment is inherited by all subsequently forked shells.
1333
@deffn Command unsetenv var
1335
Unset an environment variable.
1338
@node Shell, Term, Setenv, New Window
1340
@deffn Command shell command
1341
@deffnx Command defshell command
1343
Set the command to be used to create a new shell. This overrides the
1344
value of the environment variable @code{$SHELL}. This is useful if
1345
you'd like to run a tty-enhancer which is expecting to execute the
1346
program specified in @code{$SHELL}. If the command begins with
1347
a @samp{-} character, the shell will be started as a login-shell.
1349
@code{defshell} is currently a synonym to the @code{shell} command.
1352
@deffn Command shelltitle title
1354
Set the title for all shells created during startup or by the C-a C-c
1355
command. @xref{Naming Windows}, for details about what titles are.
1358
@node Term, Window Types , Shell, New Window
1360
@deffn Command term term
1362
In each window @code{screen} opens, it sets the @code{$TERM}
1363
variable to @code{screen} by default, unless no description for
1364
@code{screen} is installed in the local termcap or terminfo data base.
1365
In that case it pretends that the terminal emulator is @samp{vt100}.
1366
This won't do much harm, as @code{screen} is VT100/ANSI compatible. The
1367
use of the @code{term} command is discouraged for non-default purpose.
1368
That is, one may want to specify special @code{$TERM} settings (e.g. vt100) for
1369
the next @code{screen rlogin othermachine} command. Use the command
1370
@code{screen -T vt100 rlogin othermachine} rather than setting
1371
and resetting the default.
1374
@node Window Types, Window Groups, Term, New Window
1375
@section Window Types
1376
@cindex window types
1377
Screen provides three different window types. New windows are created
1378
with @code{screen}'s @samp{screen} command (@pxref{Screen Command}).
1379
The first parameter to the @samp{screen} command defines which
1380
type of window is created. The different window types are all
1381
special cases of the normal type. They have been added in order
1382
to allow @code{screen} to be used efficiently as a console
1383
with 100 or more windows.
1386
The normal window contains a shell (default, if no parameter is given)
1387
or any other system command that could be executed from a shell.
1388
(e.g. @samp{slogin}, etc...).
1391
If a tty (character special device) name (e.g. @samp{/dev/ttya})
1392
is specified as the first parameter, then the window is directly
1393
connected to this device.
1394
This window type is similar to @samp{screen cu -l /dev/ttya}.
1395
Read and write access is required on the device node,
1396
an exclusive open is attempted on the node to mark the connection line
1398
An optional parameter is allowed consisting of a comma separated
1399
list of flags in the notation used by @samp{stty(1)}:
1402
Usually 300, 1200, 9600 or 19200. This affects transmission as well as
1405
Specify the transmission of eight (or seven) bits per byte.
1407
Enables (or disables) software flow-control (CTRL-S/CTRL-Q) for sending
1409
@item ixoff or -ixoff
1410
Enables (or disables) software flow-control for receiving data.
1411
@item istrip or -istrip
1412
Clear (or keep) the eight bit in each received byte.
1415
You may want to specify as many of these options as applicable.
1416
Unspecified options cause the terminal driver to make up the parameter
1417
values of the connection. These values are system-dependent and may be
1418
in defaults or values saved from a previous connection.
1420
For tty windows, the @code{info} command shows some of the modem
1421
control lines in the status line.
1422
These may include @samp{RTS}, @samp{CTS}, @samp{DTR}, @samp{CD} and
1423
more. This depends rather on on the available @code{ioctl()}'s and system
1424
header files than on the physical capabilities of the serial board.
1425
The name of a logical low (inactive) signal is preceded by an
1426
exclamation mark (@samp{!}), otherwise the signal is logical high (active).
1427
Unsupported but shown signals are usually shown low.
1428
When the @code{CLOCAL} status bit is true, the whole set of modem signals is
1429
placed inside curly braces (@samp{@{} and @samp{@}}).
1430
When the @code{CRTSCTS} or @code{TIOCSOFTCAR} bit is true, the signals
1431
@samp{CTS} or @samp{CD} are shown in parenthesis, respectively.
1433
For tty windows, the command @code{break} causes the Data transmission
1434
line (TxD) to go low for a specified period of time. This is expected
1435
to be interpreted as break signal on the other side.
1436
No data is sent and no modem control line is changed when a
1437
@code{break} is issued.
1440
If the first parameter is @code{//telnet}, the second parameter is
1441
expected to be a host name, and an optional third parameter may specify
1442
a TCP port number (default decimal 23). Screen will connect to a
1443
server listening on the remote host and use the telnet protocol to
1444
communicate with that server.
1446
For telnet windows, the command @code{info} shows details about
1447
the connection in square brackets (@samp{[} and @samp{]}) at the end of
1451
BINARY. The connection is in binary mode.
1453
ECHO. Local echo is disabled.
1455
SGA. The connection is in `character mode' (default: `line mode').
1457
TTYPE. The terminal type has been requested by the remote host. Screen
1458
sends the name @code{screen} unless instructed otherwise (see also the
1459
command @samp{term}).
1461
NAWS. The remote site is notified about window size changes.
1463
LFLOW. The remote host will send flow control information.
1464
(Ignored at the moment.)
1466
Additional flags for debugging are @samp{x}, @samp{t} and @samp{n}
1467
(XDISPLOC, TSPEED and NEWENV).
1469
For telnet windows, the command @code{break} sends the telnet code
1470
@code{IAC BREAK} (decimal 243) to the remote host.
1474
@node Window Groups, , Window Types, New Window
1475
@section Window Groups
1476
@cindex window groups
1477
Screen provides a method for grouping windows together. Windows can be
1478
organized in a hierarchical fashion, resembling a tree structure. New
1479
screens are created using the @code{screen} command while new groups
1480
are created using @code{screen //group}. @xref{Screen Command}.
1482
Once a new group is created, it will act as a container for windows
1483
and even other groups. When a group is selected, you will see the
1484
output of the @code{windowlist} command, allowing you to select a
1485
window inside. If there are no windows inside a group, use the
1486
@code{screen} command to create one. Once inside a group, using the
1487
commands @code{next} and @code{prev} will switch between windows only
1488
in that group. Using the @code{windowlist} command will give you the
1489
opportunity to leave the group you are in. @xref{Windowlist}.
1491
@deffn Command group [grouptitle]
1493
Change or show the group the current window belongs to. Windows can
1494
be moved around between different groups by specifying the name of
1495
the destination group. Without specifying a group, the title of the
1496
current group is displayed.
1499
Using groups in combination with layouts will help create a
1500
multi-desktop experience. One group can be assigned for each
1501
layout made. Windows can be made, split, and organized within each
1502
group as desired. Afterwhich, switching between groups can be as easy
1503
as switching layouts.
1505
@node Selecting, Session Management, New Window, Top
1506
@chapter Selecting a Window
1508
This section describes the commands for switching between windows in an
1509
@code{screen} session. The windows are numbered from 0 to 9, and are created
1510
in that order by default (@pxref{New Window}).
1513
* Next and Previous:: Forward or back one window.
1514
* Other Window:: Switch back and forth between two windows.
1515
* Select:: Switch to a window (and to one after @code{kill}).
1516
* Windowlist:: Present a list of all windows for selection.
1519
@node Next and Previous, Other Window, , Selecting
1520
@section Moving Back and Forth
1525
(@kbd{C-a @key{SPC}}, @kbd{C-a n}, @kbd{C-a C-n})@*
1526
Switch to the next window. This command can be used repeatedly to
1527
cycle through the list of windows. (On some terminals, C-@key{SPC}
1528
generates a NUL character, so you must release the control key before
1537
(@kbd{C-a p}, @kbd{C-a C-p}, @kbd{C-a C-h}, @kbd{C-a @key{Backspace}})@*
1538
Switch to the previous window (the opposite of @kbd{C-a n}).
1541
@node Other Window, Select, Next and Previous, Selecting
1542
@section Other Window
1544
@deffn Command other
1546
Switch to the last window displayed. Note that this command
1547
defaults to the command character typed twice, unless overridden.
1548
For instance, if you use the option @samp{-e]x},
1549
this command becomes @kbd{]]} (@pxref{Command Character}).
1552
@node Select, Windowlist, Other Window, Selecting
1556
@deffn Command select [n @var{|-|.}]
1557
(@kbd{C-a @var{n}}, @kbd{C-a '})@*
1558
Switch to the window with the number @var{n}.
1559
If no window number is specified, you get prompted for an
1560
identifier. This can be a window name (title) or a number.
1561
When a new window is established, the lowest available number
1562
is assigned to this window.
1563
Thus, the first window can be activated by @code{select 0}; there
1564
can be no more than 10 windows present simultaneously (unless screen is
1565
compiled with a higher MAXWIN setting).
1566
There are two special arguments, @code{select -} switches to the
1567
internal blank window and @code{select .} switches to the
1568
current window. The latter is useful if used with screen's
1573
@node Windowlist, , Select, Selecting
1576
@deffn Command windowlist [-b] [-m] [-g]
1577
@deffnx Command windowlist string [@var{string}]
1578
@deffnx Command windowlist title [@var{title}]
1580
Display all windows in a table for visual window selection.
1581
If screen was in a window group, screen will
1582
back out of the group and then display the windows in that
1583
group. If the @code{-b} option is given, screen will
1584
switch to the blank window before presenting the list, so
1585
that the current window is also selectable.
1586
The @code{-m} option changes the order of the windows, instead of
1587
sorting by window numbers screen uses its internal most-recently-used
1588
list. The @code{-g} option will show the windows inside any groups
1589
in that level and downwards.
1591
The following keys are used to navigate in @code{windowlist}:
1594
@kbd{k}, @kbd{C-p}, or @kbd{up} Move up one line.
1597
@kbd{j}, @kbd{C-n}, or @kbd{down} Move down one line.
1600
@kbd{C-g} or @kbd{escape} Exit windowlist.
1603
@kbd{C-a} or @kbd{home} Move to the first line.
1606
@kbd{C-e} or @kbd{end} Move to the last line.
1609
@kbd{C-u} or @kbd{C-d} Move one half page up or down.
1612
@kbd{C-b} or @kbd{C-f} Move one full page up or down.
1615
@kbd{0..9} Using the number keys, move to the selected line.
1618
@kbd{mouseclick} Move to the selected line. Available when
1619
@code{mousetrack} is set to @code{on}.
1625
@kbd{n} Repeat search in the forward direction.
1628
@kbd{N} Repeat search in the backward direction.
1634
@kbd{g} Toggle group nesting.
1637
@kbd{a} All window view.
1640
@kbd{C-h} or @kbd{backspace} Back out the group.
1643
@kbd{,} Switch numbers with the previous window.
1646
@kbd{.} Switch numbers with the next window.
1649
@kbd{K} Kill that window.
1652
@kbd{space} or @kbd{enter} Select that window.
1654
The table format can be changed with the string and title
1655
option, the title is displayed as table heading, while the
1656
lines are made by using the string setting. The default
1657
setting is @samp{Num Name%=Flags} for the title and
1658
@samp{%3n %t%=%f} for the lines. See the string escapes chapter
1659
(@pxref{String Escapes}) for more codes (e.g. color settings).
1661
@code{Windowlist} needs a region size of at least 10 characters
1662
wide and 6 characters high in order to display.
1665
@node Session Management, Regions, Selecting, Top
1666
@chapter Session Management Commands
1668
Perhaps the most useful feature of @code{screen} is the way it allows
1669
the user to move a session between terminals, by detaching and
1670
reattaching. This also makes life easier for modem users who have to
1671
deal with unexpected loss of carrier.
1674
* Detach:: Disconnect @code{screen} from your terminal.
1675
* Power Detach:: Detach and log out.
1676
* Lock:: Lock your terminal temporarily.
1677
* Multiuser Session:: Changing number of allowed users.
1678
* Session Name:: Rename your session for later reattachment.
1679
* Suspend:: Suspend your session.
1680
* Quit:: Terminate your session.
1683
@node Detach, Power Detach, , Session Management
1686
@deffn Command autodetach state
1688
Sets whether @code{screen} will automatically detach upon hangup, which
1689
saves all your running programs until they are resumed with a
1690
@code{screen -r} command. When turned off, a hangup signal will
1691
terminate @code{screen} and all the processes it contains. Autodetach is
1697
@deffn Command detach
1698
(@kbd{C-a d}, @kbd{C-a C-d})@*
1699
Detach the @code{screen} session (disconnect it from the terminal and
1700
put it into the background). A detached @code{screen} can be resumed by
1701
invoking @code{screen} with the @code{-r} option (@pxref{Invoking
1703
The @code{-h} option tells screen to immediately close the connection
1704
to the terminal (@samp{hangup}).
1707
@deffn Command password [crypted_pw]
1709
Present a crypted password in your @file{.screenrc} file and screen will
1710
ask for it, whenever someone attempts to resume a detached session. This
1711
is useful, if you have privileged programs running under @code{screen}
1712
and you want to protect your session from reattach attempts by users
1713
that managed to assume your uid. (I.e. any superuser.) If no crypted
1714
password is specified, screen prompts twice a password and places its
1715
encryption in the paste buffer. Default is `none', which disables
1719
@node Power Detach, Lock, Detach, Session Management
1720
@section Power Detach
1723
@deffn Command pow_detach
1725
Mainly the same as @code{detach}, but also sends a HANGUP signal
1726
to the parent process of @code{screen}.@*
1727
@emph{Caution}: This will result in a
1728
logout if @code{screen} was started from your login shell.
1731
@deffn Command pow_detach_msg [message]
1733
The @var{message} specified here is output whenever a power detach is
1734
performed. It may be used as a replacement for a logout message or to reset
1736
Without a parameter, the current message is shown.
1739
@node Lock, Multiuser Session, Power Detach, Session Management
1743
@deffn Command lockscreen
1744
(@kbd{C-a x}, @kbd{C-a C-x})@*
1745
Call a screenlock program (@file{/local/bin/lck} or @file{/usr/bin/lock}
1746
or a builtin, if no other is available). Screen does not accept any
1747
command keys until this program terminates. Meanwhile processes in the
1748
windows may continue, as the windows are in the detached state.
1749
The screenlock program may be changed through the environment variable
1750
@code{$LOCKPRG} (which must be set in the shell from which @code{screen}
1751
is started) and is executed with the user's uid and gid.
1753
Warning: When you leave other shells unlocked and have no password set
1754
on @code{screen}, the lock is void: One could easily re-attach from an
1755
unlocked shell. This feature should rather be called
1756
@code{lockterminal}.
1759
@node Multiuser Session, Session Name, Lock, Session Management
1760
@section Multiuser Session
1761
@cindex multiuser session
1763
These commands allow other users to gain access to one single @code{screen}
1764
session. When attaching to a multiuser @code{screen} the sessionname is
1765
specified as @code{username/sessionname} to the @code{-S} command line option.
1766
@code{Screen} must be compiled with multiuser support to enable features
1770
* Multiuser:: Enable / Disable multiuser mode.
1771
* Acladd:: Enable a specific user.
1772
* Aclchg:: Change a users permissions.
1773
* Acldel:: Disable a specific user.
1774
* Aclgrp:: Grant a user permissions to other users.
1775
* Displays:: List all active users at their displays.
1776
* Umask:: Predefine access to new windows.
1777
* Wall:: Write a message to all users.
1778
* Writelock:: Grant exclusive window access.
1779
* Su:: Substitute user.
1782
@node Multiuser, Acladd, , Multiuser Session
1783
@subsection Multiuser
1784
@deffn Command multiuser @var{state}
1786
Switch between single-user and multi-user mode. Standard screen operation is
1787
single-user. In multi-user mode the commands @code{acladd}, @code{aclchg} and
1788
@code{acldel} can be used to enable (and disable) other users accessing this
1792
@node Acladd, Aclchg, Multiuser, Multiuser Session
1794
@deffn Command acladd @var{usernames}
1795
@deffnx Command addacl @var{usernames}
1797
Enable users to fully access this screen session. @var{Usernames} can be one
1798
user or a comma separated list of users. This command enables to attach to
1799
the @code{screen} session and performs the equivalent of
1800
@code{aclchg @var{usernames} +rwx "#?"}. To add a user with restricted access,
1801
use the @code{aclchg} command below.
1802
@code{Addacl} is a synonym to @code{acladd}.
1803
Multi-user mode only.
1806
@node Aclchg, Acldel, Acladd, Multiuser Session
1808
@deffn Command aclchg @var{usernames permbits list}
1809
@deffnx Command chacl @var{usernames permbits list}
1811
Change permissions for a comma separated list of users.
1812
Permission bits are represented as @samp{r}, @samp{w} and @samp{x}.
1813
Prefixing @samp{+} grants the permission, @samp{-} removes it. The third
1814
parameter is a comma separated list of commands or windows (specified either
1815
by number or title). The special list @samp{#} refers to all windows, @samp{?}
1816
to all commands. If @var{usernames} consists of a single @samp{*}, all
1817
known users are affected.
1818
A command can be executed when the user has the @samp{x} bit for it. The user
1819
can type input to a window when he has its @samp{w} bit set and no other
1820
user obtains a writelock for this window. Other bits are currently ignored.
1821
To withdraw the writelock from another user in e.g. window 2:
1822
@samp{aclchg @var{username} -w+w 2}. To allow read-only access
1823
to the session: @samp{aclchg @var{username} -w "#"}. As soon as a user's name
1824
is known to screen, he can attach to the session and (per default) has full
1825
permissions for all command and windows. Execution permission for the acl
1826
commands, @code{at} and others should also be removed or the user may be able
1827
to regain write permission.
1828
@code{Chacl} is a synonym to @code{aclchg}.
1829
Multi-user mode only.
1832
@node Acldel, Aclgrp, Aclchg, Multiuser Session
1834
@deffn Command acldel @var{username}
1836
Remove a user from screen's access control list. If currently attached, all the
1837
user's displays are detached from the session. He cannot attach again.
1838
Multi-user mode only.
1841
@node Aclgrp, Displays, Acldel, Multiuser Session
1843
@deffn Command aclgrp @var{username} [@var{groupname}]
1845
Creates groups of users that share common access rights. The
1846
name of the group is the username of the group leader. Each
1847
member of the group inherits the permissions that are
1848
granted to the group leader. That means, if a user fails an
1849
access check, another check is made for the group leader.
1850
A user is removed from all groups the special value @samp{none}
1851
is used for @var{groupname}. If the second parameter is omitted
1852
all groups the user is in are listed.
1855
@node Displays, Umask, Aclgrp, Multiuser Session
1856
@subsection Displays
1858
@deffn Command displays
1860
Shows a tabular listing of all currently connected user
1861
front-ends (displays). This is most useful for multiuser
1864
The following keys can be used in @code{displays} list:
1867
@kbd{k}, @kbd{C-p}, or @kbd{up} Move up one line.
1870
@kbd{j}, @kbd{C-n}, or @kbd{down} Move down one line.
1873
@kbd{C-a} or @kbd{home} Move to the first line.
1876
@kbd{C-e} or @kbd{end} Move to the last line.
1879
@kbd{C-u} or @kbd{C-d} Move one half page up or down.
1882
@kbd{C-b} or @kbd{C-f} Move one full page up or down.
1885
@kbd{mouseclick} Move to the selected line. Available when
1886
@code{mousetrack} is set to @code{on}.
1889
@kbd{space} Refresh the list.
1892
@kbd{d} Detach the selected display.
1895
@kbd{D} Power detach the selected display.
1898
@kbd{C-g}, @kbd{enter}, or @kbd{escape} Exit the list.
1901
The following is an example of what @code{displays} could
1905
xterm 80x42 jnweiger@@/dev/ttyp4 0(m11) &rWx
1906
facit 80x24 mlschroe@@/dev/ttyhf nb 11(tcsh) rwx
1907
xterm 80x42 jnhollma@@/dev/ttyp5 0(m11) &R.x
1908
(A) (B) (C) (D) (E) (F)(G) (H)(I)
1911
The legend is as follows:
1912
@*(A) The terminal type known by @code{screen} for this display.
1913
@*(B) Displays geometry as width x height.
1914
@*(C) Username who is logged in at the display.
1915
@*(D) Device name of the display or the attached device
1916
@*(E) Display is in blocking or nonblocking mode. The available
1917
modes are "nb", "NB", "Z<", "Z>", and "BL".
1918
@*(F) Number of the window
1919
@*(G) Name/title of window
1920
@*(H) Whether the window is shared
1921
@*(I) Window permissions. Made up of three characters:
1926
@samp{R} : read only due to foreign wlock
1929
@samp{.} : write suppressed by foreign wlock
1931
@samp{W} : own wlock
1933
@samp{-} : no execute
1937
@code{Displays} needs a region size of at least 10 characters
1938
wide and 5 characters high in order to display.
1941
@node Umask, Wall, Displays, Multiuser Session
1942
@subsection aclumask
1943
@deffn Command aclumask [@var{users}]+/-@var{bits} ...
1944
@deffnx Command umask [@var{users}]+/-@var{bits} ...
1946
This specifies the access other users have to windows that
1947
will be created by the caller of the command. @var{Users} may be no,
1948
one or a comma separated list of known usernames. If no users are
1949
specified, a list of all currently known users is assumed.
1950
@var{Bits} is any combination of access control bits allowed
1951
defined with the @code{aclchg} command. The special username @samp{?}
1952
predefines the access that not yet known users will be
1953
granted to any window initially. The special username @samp{??}
1954
predefines the access that not yet known users are granted
1955
to any command. Rights of the special username nobody cannot
1956
be changed (see the @code{su} command).
1957
@code{Umask} is a synonym to @code{aclumask}.
1961
@node Wall, Writelock, Umask, Multiuser Session
1963
@deffn Command wall @var{message}
1965
Write a message to all displays. The message will appear in the terminal's
1969
@node Writelock, Su , Wall, Multiuser Session
1970
@subsection Writelock
1971
@deffn Command writelock @var{on|off|auto}
1973
In addition to access control lists, not all users may be able to write to
1974
the same window at once. Per default, writelock is in @samp{auto} mode and
1975
grants exclusive input permission to the user who is the first to switch
1976
to the particular window. When he leaves the window, other users may obtain
1977
the writelock (automatically). The writelock of the current window is disabled
1978
by the command @code{writelock off}. If the user issues the command
1979
@code{writelock on} he keeps the exclusive write permission while switching
1983
@deffn Command defwritelock @var{on|off|auto}
1985
Sets the default writelock behavior for new windows. Initially all windows
1986
will be created with no writelocks.
1989
@node Su, , Writelock, Multiuser Session
1991
@deffn Command su [@var{username} [@var{password} [@var{password2}]]]
1993
Substitute the user of a display. The command prompts for
1994
all parameters that are omitted. If passwords are specified
1995
as parameters, they have to be specified un-crypted. The
1996
first password is matched against the systems passwd database,
1997
the second password is matched against the @code{screen}
1998
password as set with the commands @code{acladd} or @code{password}.
1999
@code{Su} may be useful for the @code{screen} administrator to test
2001
When the identification fails, the user has
2002
access to the commands available for user @samp{nobody}. These are
2003
@code{detach}, @code{license}, @code{version}, @code{help} and
2007
@node Session Name, Suspend, Multiuser Session, Session Management
2008
@section Session Name
2009
@deffn Command sessionname [@var{name}]
2011
Rename the current session. Note that for @code{screen -list} the name
2012
shows up with the process-id prepended. If the argument @var{name} is
2013
omitted, the name of this session is displayed.@*
2014
@emph{Caution}: The @code{$STY}
2015
environment variable will still reflect the old name in pre-existing
2016
shells. This may result in
2017
confusion. Use of this command is generally
2018
discouraged. Use the @code{-S} command-line option if you want to
2019
name a new session.The default is constructed from the tty and host names.
2022
@node Suspend, Quit, Session Name, Session Management
2026
@deffn Command suspend
2027
(@kbd{C-a z}, @kbd{C-a C-z})@*
2028
Suspend @code{screen}. The windows are in the detached state while
2029
@code{screen} is suspended. This feature relies on the parent shell
2030
being able to do job control.
2033
@node Quit, , Suspend, Session Management
2038
Kill all windows and terminate @code{screen}. Note that on VT100-style
2039
terminals the keys @kbd{C-4} and @kbd{C-\} are identical. So be careful
2040
not to type @kbd{C-a C-4} when selecting window no. 4. Use the empty
2041
bind command (as in @code{bind "^\"}) to remove a key binding
2042
(@pxref{Key Binding}).
2045
@node Regions, Window Settings, Session Management, Top
2048
Screen has the ability to display more than one window on the
2049
user's display. This is done by splitting the screen in regions,
2050
which can contain different windows.
2053
* Split:: Split a region into two
2054
* Focus:: Change to the next region
2055
* Only:: Delete all other regions
2056
* Remove:: Delete the current region
2057
* Resize:: Grow or shrink a region
2058
* Caption:: Control the window's caption
2059
* Fit:: Resize a window to fit the region
2060
* Focusminsize:: Force a minimum size on a current region
2061
* Layout:: Manage groups of regions
2064
@node Split, Focus, , Regions
2068
@deffn Command split [-v]
2069
(@kbd{C-a S}, @kbd{C-a |})@*
2070
Split the current region into two new ones. All regions on the
2071
display are resized to make room for the new region. The blank
2072
window is displayed on the new region. The default is to create
2073
a horizontal split, putting the new regions on the top and
2074
bottom of each other. Using -v will create a vertical split,
2075
causing the new regions to appear side by side of each other.
2077
With this current implementation of @code{screen}, scrolling data
2078
will appear much slower in a vertically split region than one
2079
that is not. This should be taken into consideration if you need
2080
to use system commands such as @code{cat} or @code{tail -f}.
2083
@node Focus, Only, Split, Regions
2086
@deffn Command focus
2087
(@kbd{C-a @key{Tab}})@*
2088
Move the input focus to the next region. This is done in a cyclic
2089
way so that the top region is selected after the bottom one. If
2090
no subcommand is given it defaults to `down'. `up' cycles in the
2091
opposite order, `top' and `bottom' go to the top and bottom
2092
region respectively. Useful bindings are (j and k as in vi)
2101
@node Only, Remove, Focus, Regions
2106
Kill all regions but the current one.
2109
@node Remove, Resize, Only, Regions
2112
@deffn Command remove
2114
Kill the current region. This is a no-op if there is only one region.
2117
@node Resize, Caption, Remove, Regions
2119
@deffn Command resize [(+/-)@var{lines}]
2121
Resize the current region. The space will be removed from or added to
2122
the region below or if there's not enough space from the region above.
2124
resize +N increase current region height by N
2125
resize -N decrease current region height by N
2126
resize N set current region height to N
2127
resize = make all windows equally high
2128
resize max maximize current region height
2129
resize min minimize current region height
2133
@node Caption, Fit, Resize, Regions
2135
@deffn Command caption @code{always}|@code{splitonly} [string]
2136
@deffnx Command caption @code{string} [string]
2138
This command controls the display of the window captions. Normally
2139
a caption is only used if more than one window is shown on the
2140
display (split screen mode). But if the type is set to
2141
@code{always}, @code{screen} shows a caption
2142
even if only one window is displayed. The default
2143
is @samp{splitonly}.
2145
The second form changes the text used for the caption. You can use
2146
all string escapes (@pxref{String Escapes}). @code{Screen} uses
2147
a default of @samp{%3n %t}.
2149
You can mix both forms by providing the string as an additional
2153
@node Fit, Focusminsize, Caption, Regions
2158
Change the window size to the size of the current region. This
2159
command is needed because screen doesn't adapt the window size
2160
automatically if the window is displayed more than once.
2163
@node Focusminsize, Layout, Fit, Regions
2164
@section Focusminsize
2165
@deffn Command focusminsize [ (width|@code{max}|@code{_}) (height|@code{max}|@code{_}) ]
2167
This forces any currently selected region to be automatically
2168
resized at least a certain @var{width} and @var{height}. All
2169
other surrounding regions will be resized in order to accommodate.
2170
This constraint follows every time the @code{focus} command is
2171
used. The @code{resize} command can be used to increase either
2172
dimension of a region, but never below what is set with
2173
@code{focusminsize}. The underscore @samp{_} is a synonym for
2174
@code{max}. Setting a @var{width} and @var{height} of @code{0 0}
2175
(zero zero) will undo any constraints and allow for manual resizing.
2176
Without any parameters, the minimum width and height is shown.
2179
@node Layout, , Focusminsize, Regions
2182
Using regions, and perhaps a large enough terminal, you can give
2183
@code{screen} more of a desktop feel. By being able to split
2184
regions horizontally or vertically, you can take advantage of the
2185
lesser used spaces of your terminal. The catch to these splits has
2186
been that they're not kept between screen detachments and reattachments.
2188
Layouts will help organize your regions. You can create one
2189
layout of four horizontal regions and then create a separate layout
2190
of regions in a two by two array. The regions could contain the same windows,
2191
but they don't have to. You can easily switch between layouts and keep
2192
them between detachments and reattachments.
2194
Note that there are several subcommands to @code{layout}.
2196
@deffn Command layout @code{new} [title]
2198
Create a new layout. The screen will change to one whole region
2199
and be switched to the blank window. From here, you build the
2200
regions and the windows they show as you desire. The new layout
2201
will be numbered with the smallest available integer, starting
2202
with zero. You can optionally give a title to your new layout.
2203
Otherwise, it will have a default title of @code{layout}. You
2204
can always change the title later by using the command
2205
@code{layout title}.
2208
@deffn Command layout @code{remove} [n|title]
2210
Remove, or in other words, delete the specified layout. Either
2211
the number or the title can be specified. Without either
2212
specification, @code{screen} will remove the current layout.
2214
Removing a layout does not affect your set windows or regions.
2217
@deffn Command layout @code{next}
2219
Switch to the next layout available
2222
@deffn Command layout @code{prev}
2224
Switch to the previous layout available
2227
@deffn Command layout @code{select} [n|title]
2229
Select the desired layout. Either the number or the title can
2230
be specified. Without either specification, @code{screen} will
2231
prompt and ask which screen is desired. To see which layouts are
2232
available, use the @code{layout show} command.
2235
@deffn Command layout @code{show}
2237
List on the message line the number(s) and title(s) of the available
2238
layout(s). The current layout is flagged.
2241
@deffn Command layout @code{title} [title]
2243
Change or display the title of the current layout. A string given
2244
will be used to name the layout. Without any options, the current
2245
title and number is displayed on the message line.
2248
@deffn Command layout @code{number} [n]
2250
Change or display the number of the current layout. An integer given
2251
will be used to number the layout. Without any options, the current
2252
number and title is displayed on the message line.
2255
@deffn Command layout @code{attach} [title|@code{:last}]
2257
Change or display which layout to reattach back to. The default is
2258
@code{:last}, which tells @code{screen} to reattach back to the last
2259
used layout just before detachment. By supplying a title, You can
2260
instruct @code{screen} to reattach to a particular layout regardless
2261
which one was used at the time of detachment. Without any options,
2262
the layout to reattach to will be shown in the message line.
2265
@deffn Command layout @code{save} [n|title]
2267
Remember the current arrangement of regions. When used, @code{screen}
2268
will remember the arrangement of vertically and horizontally split
2269
regions. This arrangement is restored when a @code{screen} session
2270
is reattached or switched back from a different layout. If the
2271
session ends or the @code{screen} process dies, the layout
2272
arrangements are lost. The @code{layout dump} command should help
2273
in this siutation. If a number
2274
or title is supplied, @code{screen} will remember the arrangement of
2275
that particular layout. Without any options, @code{screen} will
2276
remember the current layout.
2278
Saving your regions can be done automatically by using the
2279
@code{layout autosave} command.
2282
@deffn Command layout @code{autosave} [@code{on}|@code{off}]
2284
Change or display the status of automatically saving layouts. The
2285
default is @code{on}, meaning when @code{screen} is detached or
2286
changed to a different layout, the arrangement of regions and windows
2287
will be remembered at the time of change and restored upon return.
2288
If autosave is set to @code{off}, that arrangement will only be
2289
restored to either to the last manual save, using @code{layout save},
2290
or to when the layout was first created, to a single region with
2291
a single window. Without either an @code{on} or an @code{off}, the
2292
current status is displayed on the message line.
2295
@deffn Command layout @code{dump} [filename]
2297
Write to a file the order of splits made in the current layout. This
2298
is useful to recreate the order of your regions used in your current
2299
layout. Only the current layout is recorded. While the order of the
2300
regions are recorded, the sizes of those regions and which windows
2301
correspond to which regions are not. If no filename is specified,
2302
the default is @file{layout-dump}, saved in the directory that the
2303
@code{screen} process was started in. If the file already exists,
2304
@code{layout dump} will append to that file. As an example:
2306
layout dump /home/user/.screenrc
2308
will save or append the layout to the user's @file{.screenrc} file.
2311
@node Window Settings, Virtual Terminal, Regions, Top
2312
@chapter Window Settings
2314
These commands control the way @code{screen} treats individual windows
2315
in a session. @xref{Virtual Terminal}, for commands to control the
2316
terminal emulation itself.
2319
* Naming Windows:: Control the name of the window
2320
* Console:: See the host's console messages
2321
* Kill:: Destroy an unwanted window
2322
* Login:: Control @file{/var/run/utmp} logging
2323
* Mode:: Control the file mode of the pty
2324
* Monitor:: Watch for activity or inactivity in a window
2325
* Windows:: List the active windows
2326
* Hardstatus:: Set a window's hardstatus line
2329
@node Naming Windows, Console, , Window Settings
2330
@section Naming Windows (Titles)
2333
You can customize each window's name in the window display (viewed with
2334
the @code{windows} command (@pxref{Windows}) by setting it with
2335
one of the title commands. Normally the name displayed is the actual
2336
command name of the program created in the window. However, it is
2337
sometimes useful to distinguish various programs of the same name or to
2338
change the name on-the-fly to reflect the current state of the window.
2340
The default name for all shell windows can be set with the
2341
@code{shelltitle} command (@pxref{Shell}). You can specify the name you
2342
want for a window with the @samp{-t} option to the @code{screen} command
2343
when the window is created (@pxref{Screen Command}). To change the name after
2344
the window has been created you can use the title-string escape-sequence
2345
(@kbd{@key{ESC} k @var{name} @key{ESC} \}) and the @code{title} command
2346
(C-a A). The former can be output from an application to control the
2347
window's name under software control, and the latter will prompt for a
2348
name when typed. You can also bind predefined names to keys with the
2349
@code{title} command to set things quickly without prompting.
2352
* Title Command:: The @code{title} command.
2353
* Dynamic Titles:: Make shell windows change titles dynamically.
2354
* Title Prompts:: Set up your shell prompt for dynamic Titles.
2355
* Title Screenrc:: Set up Titles in your @file{.screenrc}.
2358
@node Title Command, Dynamic Titles, , Naming Windows
2359
@subsection Title Command
2361
@deffn Command title [windowtitle]
2363
Set the name of the current window to @var{windowtitle}. If no name is
2364
specified, screen prompts for one.
2367
@node Dynamic Titles, Title Prompts, Title Command, Naming Windows
2368
@subsection Dynamic Titles
2369
@code{screen} has a shell-specific heuristic that is enabled by
2370
setting the window's name to @var{search|name} and arranging to have a
2371
null title escape-sequence output as a part of your prompt. The
2372
@var{search} portion specifies an end-of-prompt search string, while the
2373
@var{name} portion specifies the default shell name for the window. If
2374
the @var{name} ends in a @samp{:} @code{screen} will add what it
2375
believes to be the current command running in the window to the end of
2376
the specified name (e.g. @var{name:cmd}). Otherwise the current
2377
command name supersedes the shell name while it is running.
2379
Here's how it works: you must modify your shell prompt to output a null
2380
title-escape-sequence (@key{ESC} k @key{ESC} \) as a part of your prompt.
2381
The last part of your prompt must be the same as the string you
2382
specified for the @var{search} portion of the title. Once this is set
2383
up, @code{screen} will use the title-escape-sequence to clear the previous
2384
command name and get ready for the next command. Then, when a newline
2385
is received from the shell, a search is made for the end of the prompt.
2386
If found, it will grab the first word after the matched string and use
2387
it as the command name. If the command name begins with @samp{!},
2388
@samp{%}, or @samp{^}, @code{screen} will use the first word on the
2389
following line (if found) in preference to the just-found name. This
2390
helps csh users get more accurate titles when using job control or
2391
history recall commands.
2393
@node Title Prompts, Title Screenrc, Dynamic Titles, Naming Windows
2394
@subsection Setting up your prompt for shell titles
2395
One thing to keep in mind when adding a null title-escape-sequence to your
2396
prompt is that some shells (like the csh) count all the non-control
2397
characters as part of the prompt's length. If these invisible
2398
characters aren't a multiple of 8 then backspacing over a tab will
2399
result in an incorrect display. One way to get around this is to use a
2403
set prompt='@value{esc}[0000m@value{esc}k@value{esc}\% '
2406
The escape-sequence @samp{@value{esc}[0000m} not only normalizes the
2407
character attributes, but all the zeros round the length of the
2408
invisible characters up to 8.
2410
Tcsh handles escape codes in the prompt more intelligently, so you can
2411
specify your prompt like this:
2414
set prompt="%@{\ek\e\\%@}\% "
2417
Bash users will probably want to echo the escape sequence in the
2421
PROMPT_COMMAND='printf "\033k\033\134"'
2424
(I used @samp{\134} to output a @samp{\} because of a bug in v1.04).
2426
@node Title Screenrc, , Title Prompts, Naming Windows
2427
@subsection Setting up shell titles in your @file{.screenrc}
2428
Here are some .screenrc examples:
2431
screen -t top 2 nice top
2434
Adding this line to your .screenrc would start a niced version of the
2435
@code{top} command in window 2 named @samp{top} rather than @samp{nice}.
2442
This file would start a shell using the given shelltitle. The title
2443
specified is an auto-title that would expect the prompt and the typed
2444
command to look something like the following:
2447
/usr/joe/src/dir> trn
2450
(it looks after the '> ' for the command name).
2451
The window status would show the name @samp{trn} while the command was
2452
running, and revert to @samp{csh} upon completion.
2455
bind R screen -t '% |root:' su
2458
Having this command in your .screenrc would bind the key sequence
2459
@kbd{C-a R} to the @code{su} command and give it an auto-title name of
2460
@samp{root:}. For this auto-title to work, the screen could look
2461
something like this:
2468
Here the user typed the csh history command @code{!em} which ran the
2469
previously entered @code{emacs} command. The window status would show
2470
@samp{root:emacs} during the execution of the command, and revert to
2471
simply @samp{root:} at its completion.
2476
bind u title (unknown)
2479
The first binding doesn't have any arguments, so it would prompt you for
2480
a title when you type @kbd{C-a o}. The second binding would clear an
2481
auto-titles current setting (C-a E). The third binding would set the
2482
current window's title to @samp{(unknown)} (C-a u).
2484
@node Console, Kill, Naming Windows, Window Settings
2486
@deffn Command console [@var{state}]
2488
Grabs or un-grabs the machines console output to a window. When the argument
2489
is omitted the current state is displayed.
2490
@emph{Note}: Only the owner of @file{/dev/console} can grab the console
2491
output. This command is only available if the host supports the ioctl
2495
@node Kill, Login, Console, Window Settings
2501
(@kbd{C-a k}, @kbd{C-a C-k})@*
2502
Kill the current window.@*
2503
If there is an @code{exec} command running (@pxref{Exec}) then it is killed.
2504
Otherwise the process (e.g. shell) running in the window receives a
2505
@code{HANGUP} condition,
2506
the window structure is removed and screen (your display) switches to another
2507
window. When the last window is destroyed, @code{screen} exits.
2508
After a kill screen switches to the previously displayed window.
2510
@emph{Caution}: @code{emacs} users may find themselves killing their
2511
@code{emacs} session when trying to delete the current line. For this
2512
reason, it is probably wise to use a different command character
2513
(@pxref{Command Character}) or rebind @code{kill} to another key
2514
sequence, such as @kbd{C-a K} (@pxref{Key Binding}).
2517
@node Login, Mode, Kill, Window Settings
2520
@deffn Command deflogin state
2522
Same as the @code{login} command except that the default setting for new
2523
windows is changed. This defaults to `on' unless otherwise specified at
2524
compile time (@pxref{Installation}). Both commands are only present when
2525
@code{screen} has been compiled with utmp support.
2529
@deffn Command login [state]
2531
Adds or removes the entry in @file{/var/run/utmp} for the current window.
2532
This controls whether or not the window is @dfn{logged in}. In addition
2533
to this toggle, it is convenient to have ``log in'' and ``log out''
2534
keys. For instance, @code{bind I login on} and @code{bind O
2535
login off} will map these keys to be @kbd{C-a I} and @kbd{C-a O}
2536
(@pxref{Key Binding}).
2539
@node Mode, Monitor, Login, Window Settings
2541
@deffn Command defmode mode
2543
The mode of each newly allocated pseudo-tty is set to @var{mode}.
2544
@var{mode} is an octal number as used by chmod(1). Defaults to 0622 for
2545
windows which are logged in, 0600 for others (e.g. when @code{-ln} was
2546
specified for creation, @pxref{Screen Command}).
2549
@node Monitor, Windows, Mode, Window Settings
2552
@deffn Command activity message
2554
When any activity occurs in a background window that is being monitored,
2555
@code{screen} displays a notification in the message line. The
2556
notification message can be redefined by means of the @code{activity}
2557
command. Each occurrence of @samp{%} in @var{message} is replaced by
2558
the number of the window in which activity has occurred, and each
2559
occurrence of @samp{^G} is replaced by the definition for bell in your
2560
termcap (usually an audible bell). The default message is
2563
'Activity in window %n'
2566
Note that monitoring is off for all windows by default, but can be altered
2567
by use of the @code{monitor} command (@kbd{C-a M}).
2570
@deffn Command defmonitor state
2572
Same as the @code{monitor} command except that the default setting for
2573
new windows is changed. Initial setting is `off'.
2577
@deffn Command monitor [state]
2579
Toggles monitoring of the current window. When monitoring is turned on
2580
and the affected window is switched into the background, the activity
2581
notification message will be displayed in the status line at the first
2582
sign of output, and the window will also be marked with an @samp{@@} in
2583
the window-status display (@pxref{Windows}). Monitoring defaults to
2584
@samp{off} for all windows.
2588
@deffn Command silence [@var{state}|@var{sec}]
2590
Toggles silence monitoring of windows. When silence is turned on and an
2591
affected window is switched into the background, you will receive the
2592
silence notification message in the status line after a specified period
2593
of inactivity (silence). The default timeout can be changed with the
2594
@code{silencewait} command or by specifying a number of seconds instead of
2595
@code{on} or @code{off}. Silence is initially off for all windows.
2598
@deffn Command defsilence state
2600
Same as the @code{silence} command except that the default setting for
2601
new windows is changed. Initial setting is `off'.
2604
@deffn Command silencewait @var{seconds}
2606
Define the time that all windows monitored for silence should wait
2607
before displaying a message. Default is 30 seconds.
2610
@node Windows, Hardstatus, Monitor, Window Settings
2614
@deffn Command windows
2615
(@kbd{C-a w}, @kbd{C-a C-w})@*
2616
Uses the message line to display a list of all the windows. Each
2617
window is listed by number with the name of the program running in the
2618
window (or its title).
2620
The current window is marked with a @samp{*};
2621
the previous window is marked with a @samp{-};
2622
all the windows that are logged in are marked with a @samp{$} (@pxref{Login});
2623
a background window that has received a bell is marked with a @samp{!};
2624
a background window that is being monitored and has had activity occur is
2625
marked with an @samp{@@} (@pxref{Monitor});
2626
a window which has output logging turned on is marked with @samp{(L)};
2627
windows occupied by other users are marked with @samp{&}
2628
or @samp{&&} if the window is shared by other users;
2629
windows in the zombie state are marked with @samp{Z}.
2631
If this list is too long to fit on the terminal's status line only the
2632
portion around the current window is displayed.
2635
@node Hardstatus, Mousetrack, Windows, Window Settings
2638
@code{Screen} maintains a hardstatus line for every window. If a window
2639
gets selected, the display's hardstatus will be updated to match
2640
the window's hardstatus line.
2641
The hardstatus line can be changed with the ANSI Application
2642
Program Command (APC): @samp{ESC_<string>ESC\}. As a convenience
2643
for xterm users the sequence @samp{ESC]0..2;<string>^G} is
2646
@deffn Command defhstatus [status]
2648
The hardstatus line that all new windows will get is set to
2650
This command is useful to make the hardstatus of every window
2651
display the window number or title or the like. @var{status}
2652
may contain the same directives as in the window messages, but
2653
the directive escape character is @samp{^E} (octal 005) instead
2654
of @samp{%}. This was done to make a misinterpretation of program
2655
generated hardstatus lines impossible.
2656
If the parameter @var{status}
2657
is omitted, the current default string is displayed.
2658
Per default the hardstatus line of new windows is empty.
2661
@deffn Command hstatus status
2663
Changes the current window's hardstatus line to @var{status}.
2666
@node Mousetrack, , Hardstatus, Miscellaneous
2669
@deffn Command mousetrack [ @code{on|off} ]
2671
This command determines whether @code{screen} will watch for
2672
mouse clicks. When this command is enabled, regions that have
2673
been split in various ways can be selected by pointing to them
2674
with a mouse and left-clicking them. Without specifying @var{on}
2675
or @var{off}, the current state is displayed. The default state
2676
is determined by the @code{defmousetrack} command.
2679
@deffn Command defmousetrack @code{on|off}
2681
This command determines the default state of the @code{mousetrack}
2682
command, currently defaulting of @var{off}.
2685
@node Virtual Terminal, Copy and Paste, Window Settings, Top
2686
@chapter Virtual Terminal
2688
Each window in a @code{screen} session emulates a VT100 terminal, with
2689
some extra functions added. The VT100 emulator is hard-coded, no other
2690
terminal types can be emulated.
2691
The commands described here modify the terminal emulation.
2694
* Control Sequences:: Details of the internal VT100 emulation.
2695
* Input Translation:: How keystrokes are remapped.
2696
* Digraph:: Entering digraph sequences.
2697
* Bell:: Getting your attention.
2698
* Clear:: Clear the window display.
2699
* Info:: Terminal emulation statistics.
2700
* Redisplay:: When the display gets confusing.
2701
* Wrap:: Automatic margins.
2702
* Reset:: Recovering from ill-behaved applications.
2703
* Window Size:: Changing the size of your terminal.
2704
* Character Processing:: Change the effect of special characters.
2707
@node Control Sequences, Input Translation, , Virtual Terminal
2708
@section Control Sequences
2709
@cindex control sequences
2710
The following is a list of control sequences recognized by
2711
@code{screen}. @samp{(V)} and @samp{(A)} indicate VT100-specific and
2712
ANSI- or ISO-specific functions, respectively.
2718
ESC H Horizontal Tab Set
2719
ESC Z Send VT100 Identification String
2720
ESC 7 (V) Save Cursor and Attributes
2721
ESC 8 (V) Restore Cursor and Attributes
2722
ESC [s (A) Save Cursor and Attributes
2723
ESC [u (A) Restore Cursor and Attributes
2724
ESC c Reset to Initial State
2726
ESC Pn p Cursor Visibility (97801)
2729
ESC = (V) Application Keypad Mode
2730
ESC > (V) Numeric Keypad Mode
2731
ESC # 8 (V) Fill Screen with E's
2732
ESC \ (A) String Terminator
2733
ESC ^ (A) Privacy Message String (Message Line)
2734
ESC ! Global Message String (Message Line)
2735
ESC k Title Definition String
2736
ESC P (A) Device Control String
2737
Outputs a string directly to the host
2738
terminal without interpretation.
2739
ESC _ (A) Application Program Command (Hardstatus)
2740
ESC ] 0 ; string ^G (A) Operating System Command (Hardstatus, xterm
2742
ESC ] 83 ; cmd ^G (A) Execute screen command. This only works if
2743
multi-user support is compiled into screen.
2744
The pseudo-user ":window:" is used to check
2745
the access control list. Use "addacl :window:
2746
-rwx #?" to create a user with no rights and
2747
allow only the needed commands.
2748
Control-N (A) Lock Shift G1 (SO)
2749
Control-O (A) Lock Shift G0 (SI)
2750
ESC n (A) Lock Shift G2
2751
ESC o (A) Lock Shift G3
2752
ESC N (A) Single Shift G2
2753
ESC O (A) Single Shift G3
2754
ESC ( Pcs (A) Designate character set as G0
2755
ESC ) Pcs (A) Designate character set as G1
2756
ESC * Pcs (A) Designate character set as G2
2757
ESC + Pcs (A) Designate character set as G3
2758
ESC [ Pn ; Pn H Direct Cursor Addressing
2759
ESC [ Pn ; Pn f same as above
2760
ESC [ Pn J Erase in Display
2761
Pn = None or 0 From Cursor to End of Screen
2762
1 From Beginning of Screen to Cursor
2764
ESC [ Pn K Erase in Line
2765
Pn = None or 0 From Cursor to End of Line
2766
1 From Beginning of Line to Cursor
2768
ESC [ Pn X Erase character
2769
ESC [ Pn A Cursor Up
2770
ESC [ Pn B Cursor Down
2771
ESC [ Pn C Cursor Right
2772
ESC [ Pn D Cursor Left
2773
ESC [ Pn E Cursor next line
2774
ESC [ Pn F Cursor previous line
2775
ESC [ Pn G Cursor horizontal position
2776
ESC [ Pn ` same as above
2777
ESC [ Pn d Cursor vertical position
2778
ESC [ Ps ;...; Ps m Select Graphic Rendition
2779
Ps = None or 0 Default Rendition
2782
3 (A) @i{Standout} Mode (ANSI: Italicized)
2786
22 (A) Normal Intensity
2787
23 (A) @i{Standout} Mode off (ANSI: Italicized off)
2788
24 (A) Not Underlined
2790
27 (A) Positive Image
2791
30 (A) Foreground Black
2792
31 (A) Foreground Red
2793
32 (A) Foreground Green
2794
33 (A) Foreground Yellow
2795
34 (A) Foreground Blue
2796
35 (A) Foreground Magenta
2797
36 (A) Foreground Cyan
2798
37 (A) Foreground White
2799
39 (A) Foreground Default
2800
40 (A) Background Black
2802
49 (A) Background Default
2803
ESC [ Pn g Tab Clear
2804
Pn = None or 0 Clear Tab at Current Position
2806
ESC [ Pn ; Pn r (V) Set Scrolling Region
2807
ESC [ Pn I (A) Horizontal Tab
2808
ESC [ Pn Z (A) Backward Tab
2809
ESC [ Pn L (A) Insert Line
2810
ESC [ Pn M (A) Delete Line
2811
ESC [ Pn @@ (A) Insert Character
2812
ESC [ Pn P (A) Delete Character
2813
ESC [ Pn S Scroll Scrolling Region Up
2814
ESC [ Pn T Scroll Scrolling Region Down
2815
ESC [ Pn ^ same as above
2816
ESC [ Ps ;...; Ps h Set Mode
2817
ESC [ Ps ;...; Ps l Reset Mode
2818
Ps = 4 (A) Insert Mode
2819
20 (A) @samp{Automatic Linefeed} Mode.
2820
34 Normal Cursor Visibility
2821
?1 (V) Application Cursor Keys
2822
?3 (V) Change Terminal Width to 132 columns
2823
?5 (V) Reverse Video
2824
?6 (V) @samp{Origin} Mode
2825
?7 (V) @samp{Wrap} Mode
2826
?9 X10 mouse tracking
2827
?25 (V) Visible Cursor
2828
?47 Alternate Screen (old xterm code)
2829
?1000 (V) VT200 mouse tracking
2830
?1047 Alternate Screen (new xterm code)
2831
?1049 Alternate Screen (new xterm code)
2832
ESC [ 5 i (A) Start relay to printer (ANSI Media Copy)
2833
ESC [ 4 i (A) Stop relay to printer (ANSI Media Copy)
2834
ESC [ 8 ; Ph ; Pw t Resize the window to @samp{Ph} lines and
2835
@samp{Pw} columns (SunView special)
2836
ESC [ c Send VT100 Identification String
2837
ESC [ x (V) Send Terminal Parameter Report
2838
ESC [ > c Send Secondary Device Attributes String
2839
ESC [ 6 n Send Cursor Position Report
2844
@node Input Translation, Digraph, Control Sequences, Virtual Terminal
2845
@section Input Translation
2846
@cindex input translation
2847
In order to do a full VT100 emulation @code{screen} has to detect
2848
that a sequence of characters in the input stream was generated
2849
by a keypress on the user's keyboard and insert the VT100
2850
style escape sequence. @code{Screen} has a very flexible way of doing
2851
this by making it possible to map arbitrary commands on arbitrary
2852
sequences of characters. For standard VT100 emulation the command
2853
will always insert a string in the input buffer of the window
2854
(see also command @code{stuff}, @pxref{Paste}).
2855
Because the sequences generated by a keypress can
2856
change after a reattach from a different terminal type, it is
2857
possible to bind commands to the termcap name of the keys.
2858
@code{Screen} will insert the correct binding after each
2859
reattach. See @ref{Bindkey} for further details on the syntax and examples.
2861
Here is the table of the default key bindings. (A) means that the
2862
command is executed if the keyboard is switched into application
2866
Key name Termcap name Command
2867
-----------------------------------------------------
2868
Cursor up ku stuff \033[A
2870
Cursor down kd stuff \033[B
2872
Cursor right kr stuff \033[C
2874
Cursor left kl stuff \033[D
2876
Function key 0 k0 stuff \033[10~
2877
Function key 1 k1 stuff \033OP
2878
Function key 2 k2 stuff \033OQ
2879
Function key 3 k3 stuff \033OR
2880
Function key 4 k4 stuff \033OS
2881
Function key 5 k5 stuff \033[15~
2882
Function key 6 k6 stuff \033[17~
2883
Function key 7 k7 stuff \033[18~
2884
Function key 8 k8 stuff \033[19~
2885
Function key 9 k9 stuff \033[20~
2886
Function key 10 k; stuff \033[21~
2887
Function key 11 F1 stuff \033[23~
2888
Function key 12 F2 stuff \033[24~
2889
Home kh stuff \033[1~
2890
End kH stuff \033[4~
2891
Insert kI stuff \033[2~
2892
Delete kD stuff \033[3~
2893
Page up kP stuff \033[5~
2894
Page down kN stuff \033[6~
2929
Keypad enter fe stuff \015
2933
@node Digraph, Bell, Input Translation, Virtual Terminal
2937
@deffn Command digraph [preset [unicode-value]]
2939
This command prompts the user for a digraph sequence. The next
2940
two characters typed are looked up in a builtin table and the
2941
resulting character is inserted in the input stream. For example,
2942
if the user enters @samp{a"}, an a-umlaut will be inserted. If the
2943
first character entered is a 0 (zero), @code{screen}
2944
will treat the following characters (up to three) as an octal
2945
number instead. The optional argument @var{preset}
2946
is treated as user input, thus one can create an "umlaut" key.
2947
For example the command @samp{bindkey ^K digraph '"'} enables the user
2948
to generate an a-umlaut by typing @samp{CTRL-K a}. When a non-zero
2949
@var{unicode-value} is specified, a new digraph is created with the
2950
specified preset. The digraph is unset if a zero value is provided
2951
for the @var{unicode-value}.
2953
The following table is the builtin sequences.
2955
@documentencoding ISO-8859-1
2957
Sequence Octal Digraph Unicode Equivalent
2958
-----------------------------------------------
2959
' ', ' ' 160 (space) U+00A0
2960
'N', 'S' 160 (space) U+00A0
2961
'~', '!' 161 � U+00A1
2962
'!', '!' 161 � U+00A1
2963
'!', 'I' 161 � U+00A1
2964
'c', '|' 162 � U+00A2
2965
'c', 't' 162 � U+00A2
2966
'$', '$' 163 � U+00A3
2967
'P', 'd' 163 � U+00A3
2968
'o', 'x' 164 � U+00A4
2969
'C', 'u' 164 � U+00A4
2970
'C', 'u' 164 � U+00A4
2971
'E', 'u' 164 � U+00A4
2972
'Y', '-' 165 � U+00A5
2973
'Y', 'e' 165 � U+00A5
2974
'|', '|' 166 � U+00A6
2975
'B', 'B' 166 � U+00A6
2976
'p', 'a' 167 � U+00A7
2977
'S', 'E' 167 � U+00A7
2978
'"', '"' 168 � U+00A8
2979
''', ':' 168 � U+00A8
2980
'c', 'O' 169 � U+00A9
2981
'C', 'o' 169 � U+00A9
2982
'a', '-' 170 � U+00AA
2983
'<', '<' 171 � U+00AB
2984
'-', ',' 172 � U+00AC
2985
'N', 'O' 172 � U+00AC
2986
'-', '-' 173 � U+00AD
2987
'r', 'O' 174 � U+00AE
2988
'R', 'g' 174 � U+00AE
2989
'-', '=' 175 � U+00AF
2990
''', 'm' 175 � U+00AF
2991
'~', 'o' 176 � U+00B0
2992
'D', 'G' 176 � U+00B0
2993
'+', '-' 177 � U+00B1
2994
'2', '2' 178 � U+00B2
2995
'2', 'S' 178 � U+00B2
2996
'3', '3' 179 � U+00B3
2997
'3', 'S' 179 � U+00B3
2998
''', ''' 180 � U+00B4
2999
'j', 'u' 181 � U+00B5
3000
'M', 'y' 181 � U+00B5
3001
'p', 'p' 182 � U+00B6
3002
'P', 'I' 182 � U+00B6
3003
'~', '.' 183 � U+00B7
3004
'.', 'M' 183 � U+00B7
3005
',', ',' 184 � U+00B8
3006
''', ',' 184 � U+00B8
3007
'1', '1' 185 � U+00B9
3008
'1', 'S' 185 � U+00B9
3009
'o', '-' 186 � U+00BA
3010
'>', '>' 187 � U+00BB
3011
'1', '4' 188 � U+00BC
3012
'1', '2' 189 � U+00BD
3013
'3', '4' 190 � U+00BE
3014
'~', '?' 191 � U+00BF
3015
'?', '?' 191 � U+00BF
3016
'?', 'I' 191 � U+00BF
3017
'A', '`' 192 � U+00C0
3018
'A', '!' 192 � U+00C0
3019
'A', ''' 193 � U+00C1
3020
'A', '^' 194 � U+00C2
3021
'A', '>' 194 � U+00C2
3022
'A', '~' 195 � U+00C3
3023
'A', '?' 195 � U+00C3
3024
'A', '"' 196 � U+00C4
3025
'A', ':' 196 � U+00C4
3026
'A', '@@' 197 � U+00C5
3027
'A', 'A' 197 � U+00C5
3028
'A', 'E' 198 � U+00C6
3029
'C', ',' 199 � U+00C7
3030
'E', '`' 200 � U+00C8
3031
'E', '!' 200 � U+00C8
3032
'E', ''' 201 � U+00C9
3033
'E', '^' 202 � U+00CA
3034
'E', '>' 202 � U+00CA
3035
'E', '"' 203 � U+00CB
3036
'E', ':' 203 � U+00CB
3037
'I', '`' 204 � U+00CC
3038
'I', '!' 204 � U+00CC
3039
'I', ''' 205 � U+00CD
3040
'I', '^' 206 � U+00CE
3041
'I', '>' 206 � U+00CE
3042
'I', '"' 207 � U+00CF
3043
'I', ':' 207 � U+00CF
3044
'D', '-' 208 � U+00D0
3045
'N', '~' 209 � U+00D1
3046
'N', '?' 209 � U+00D1
3047
'O', '`' 210 � U+00D2
3048
'O', '!' 210 � U+00D2
3049
'O', ''' 211 � U+00D3
3050
'O', '^' 212 � U+00D4
3051
'O', '>' 212 � U+00D4
3052
'O', '~' 213 � U+00D5
3053
'O', '?' 213 � U+00D5
3054
'O', '"' 214 � U+00D6
3055
'O', ':' 214 � U+00D6
3056
'/', '\' 215 � U+00D7
3057
'*', 'x' 215 � U+00D7
3058
'O', '/' 216 � U+00D8
3059
'U', '`' 217 � U+00D9
3060
'U', '!' 217 � U+00D9
3061
'U', ''' 218 � U+00DA
3062
'U', '^' 219 � U+00DB
3063
'U', '>' 219 � U+00DB
3064
'U', '"' 220 � U+00DC
3065
'U', ':' 220 � U+00DC
3066
'Y', ''' 221 � U+00DD
3067
'I', 'p' 222 � U+00DE
3068
'T', 'H' 222 � U+00DE
3069
's', 's' 223 � U+00DF
3070
's', '"' 223 � U+00DF
3071
'a', '`' 224 � U+00E0
3072
'a', '!' 224 � U+00E0
3073
'a', ''' 225 � U+00E1
3074
'a', '^' 226 � U+00E2
3075
'a', '>' 226 � U+00E2
3076
'a', '~' 227 � U+00E3
3077
'a', '?' 227 � U+00E3
3078
'a', '"' 228 � U+00E4
3079
'a', ':' 228 � U+00E4
3080
'a', 'a' 229 � U+00E5
3081
'a', 'e' 230 � U+00E6
3082
'c', ',' 231 � U+00E7
3083
'e', '`' 232 � U+00E8
3084
'e', '!' 232 � U+00E8
3085
'e', ''' 233 � U+00E9
3086
'e', '^' 234 � U+00EA
3087
'e', '>' 234 � U+00EA
3088
'e', '"' 235 � U+00EB
3089
'e', ':' 235 � U+00EB
3090
'i', '`' 236 � U+00EC
3091
'i', '!' 236 � U+00EC
3092
'i', ''' 237 � U+00ED
3093
'i', '^' 238 � U+00EE
3094
'i', '>' 238 � U+00EE
3095
'i', '"' 239 � U+00EF
3096
'i', ':' 239 � U+00EF
3097
'd', '-' 240 � U+00F0
3098
'n', '~' 241 � U+00F1
3099
'n', '?' 241 � U+00F1
3100
'o', '`' 242 � U+00F2
3101
'o', '!' 242 � U+00F2
3102
'o', ''' 243 � U+00F3
3103
'o', '^' 244 � U+00F4
3104
'o', '>' 244 � U+00F4
3105
'o', '~' 245 � U+00F5
3106
'o', '?' 245 � U+00F5
3107
'o', '"' 246 � U+00F6
3108
'o', ':' 246 � U+00F6
3109
':', '-' 247 � U+00F7
3110
'o', '/' 248 � U+00F8
3111
'u', '`' 249 � U+00F9
3112
'u', '!' 249 � U+00F9
3113
'u', ''' 250 � U+00FA
3114
'u', '^' 251 � U+00FB
3115
'u', '>' 251 � U+00FB
3116
'u', '"' 252 � U+00FC
3117
'u', ':' 252 � U+00FC
3118
'y', ''' 253 � U+00FD
3119
'i', 'p' 254 � U+00FE
3120
't', 'h' 254 � U+00FE
3121
'y', '"' 255 � U+00FF
3122
'y', ':' 255 � U+00FF
3123
'"', '[' 196 � U+00C4
3124
'"', '\' 214 � U+00D6
3125
'"', ']' 220 � U+00DC
3126
'"', '@{' 228 � U+00E4
3127
'"', '|' 246 � U+00F6
3128
'"', '@}' 252 � U+00FC
3129
'"', '~' 223 � U+00DF
3134
@node Bell, Clear, Digraph, Virtual Terminal
3137
@deffn Command bell_msg [message]
3139
When a bell character is sent to a background window, @code{screen}
3140
displays a notification in the message line. The notification message
3141
can be re-defined by this command. Each occurrence
3142
of @samp{%} in @var{message} is replaced by the number of the window to
3143
which a bell has been sent, and each occurrence of @samp{^G} is replaced
3144
by the definition for bell in your termcap (usually an audible bell).
3145
The default message is
3151
An empty message can be supplied to the @code{bell_msg} command to suppress
3152
output of a message line (@code{bell_msg ""}).
3153
Without a parameter, the current message is shown.
3157
@deffn Command vbell [state]
3159
Sets or toggles the visual bell setting for the current window. If
3160
@code{vbell} is switched to @samp{on}, but your
3161
terminal does not support a visual bell, the visual bell message is
3162
displayed in the status line when the bell character is received.
3163
Visual bell support of a terminal is
3164
defined by the termcap variable @code{vb}. @xref{Bell, , Visual Bell,
3165
termcap, The Termcap Manual}, for more information on visual bells.
3166
The equivalent terminfo capability is @code{flash}.
3168
Per default, @code{vbell} is @samp{off}, thus the audible bell is used.
3171
@deffn Command vbell_msg [message]
3173
Sets the visual bell message. @var{Message} is printed to the status
3174
line if the window receives a bell character (^G), @code{vbell} is
3175
set to @samp{on} and the terminal does not support a visual bell.
3176
The default message is @samp{Wuff, Wuff!!}.
3177
Without a parameter, the current message is shown.
3180
@deffn Command vbellwait sec
3182
Define a delay in seconds after each display of @code{screen} 's visual
3183
bell message. The default is 1 second.
3186
@node Clear, Info, Bell, Virtual Terminal
3189
@deffn Command clear
3191
Clears the screen and saves its contents to the scrollback buffer.
3194
@node Info, Redisplay, Clear, Virtual Terminal
3199
(@kbd{C-a i}, @kbd{C-a C-i})@*
3200
Uses the message line to display some information about the current
3201
window: the cursor position in the form @samp{(@var{column},@var{row})}
3202
starting with @samp{(1,1)}, the terminal width and height plus the size
3203
of the scrollback buffer in lines, like in @samp{(80,24)+50},
3204
the current state of window XON/XOFF flow control is shown like this
3205
(@pxref{Flow Control}):
3207
+flow automatic flow control, currently on.
3208
-flow automatic flow control, currently off.
3209
+(+)flow flow control enabled. Agrees with automatic control.
3210
-(+)flow flow control disabled. Disagrees with automatic control.
3211
+(-)flow flow control enabled. Disagrees with automatic control.
3212
-(-)flow flow control disabled. Agrees with automatic control.
3215
The current line wrap setting (@samp{+wrap} indicates enabled, @samp{-wrap}
3216
not) is also shown. The flags @samp{ins}, @samp{org}, @samp{app}, @samp{log},
3217
@samp{mon} and @samp{nored} are displayed when the window is in insert mode,
3218
origin mode, application-keypad mode, has output logging,
3219
activity monitoring or partial redraw enabled.
3221
The currently active
3222
character set (@samp{G0}, @samp{G1}, @samp{G2}, or @samp{G3}), and in
3223
square brackets the terminal character sets that are currently
3224
designated as @samp{G0} through @samp{G3}.
3225
If the window is in UTF-8 mode, the string @samp{UTF-8} is shown instead.
3226
Additional modes depending on the type of the window are displayed at
3227
the end of the status line (@pxref{Window Types}).
3229
If the state machine of the terminal emulator is in a non-default state,
3230
the info line is started with a string identifying the current state.
3232
For system information use @code{time}.
3235
@deffn Command dinfo
3237
Show what @code{screen} thinks about your terminal. Useful if you want to know
3238
why features like color or the alternate charset don't work.
3241
@node Redisplay, Wrap, Info, Virtual Terminal
3244
@deffn Command allpartial state
3246
If set to on, only the current cursor line is refreshed on window change.
3247
This affects all windows and is useful for slow terminal lines. The
3248
previous setting of full/partial refresh for each window is restored
3249
with @code{allpartial off}. This is a global flag that immediately takes effect
3250
on all windows overriding the @code{partial} settings. It does not change the
3251
default redraw behavior of newly created windows.
3254
@deffn Command altscreen state
3256
If set to on, "alternate screen" support is enabled in virtual terminals,
3257
just like in xterm. Initial setting is @samp{off}.
3260
@deffn Command partial state
3262
Defines whether the display should be refreshed (as with
3263
@code{redisplay}) after switching to the current window. This command
3264
only affects the current window. To immediately affect all windows use the
3265
@code{allpartial} command. Default is @samp{off}, of course. This default is
3266
fixed, as there is currently no @code{defpartial} command.
3271
@deffn Command redisplay
3272
(@kbd{C-a l}, @kbd{C-a C-l})@*
3273
Redisplay the current window. Needed to get a full redisplay in
3274
partial redraw mode.
3277
@node Wrap, Reset, Redisplay, Virtual Terminal
3282
@deffn Command wrap [ on | off ]
3283
(@kbd{C-a r}, @kbd{C-a C-r}) @*
3284
Sets the line-wrap setting for the current window. When line-wrap is
3285
on, the second consecutive printable character output at the last column
3286
of a line will wrap to the start of the following line. As an added
3287
feature, backspace (^H) will also wrap through the left margin to the
3288
previous line. Default is @samp{on}. Without any options, the state of
3289
@code{wrap} is toggled.
3292
@deffn Command defwrap state
3294
Same as the @code{wrap} command except that the default setting for new
3295
windows is changed. Initially line-wrap is on and can be toggled with the
3296
@code{wrap} command (@kbd{C-a r}) or by means of "C-a : wrap on|off".
3299
@node Reset, Window Size, Wrap, Virtual Terminal
3302
@deffn Command reset
3304
Reset the virtual terminal to its ``power-on'' values. Useful when strange
3305
settings (like scroll regions or graphics character set) are left over from
3309
@node Window Size, Character Processing, Reset, Virtual Terminal
3310
@section Window Size
3312
@deffn Command width [@code{-w}|@code{-d}] [cols [lines]]
3314
Toggle the window width between 80 and 132 columns, or set it to
3315
@var{cols} columns if an argument is specified. This requires a
3316
capable terminal and the termcap entries @samp{Z0} and @samp{Z1}. See
3317
the @code{termcap} command (@pxref{Termcap}), for more information.
3318
You can also specify a height if you want to
3319
change both values. The @code{-w} option tells screen to leave
3320
the display size unchanged and just set the window size,
3321
@code{-d} vice versa.
3324
@deffn Command height [@code{-w}|@code{-d}] [lines [cols]]
3326
Set the display height to a specified number of lines. When no
3327
argument is given it toggles between 24 and 42 lines display.
3330
@node Character Processing, ,Window Size, Virtual Terminal
3331
@section Character Processing
3333
@deffn Command c1 [state]
3335
Change c1 code processing. @samp{c1 on} tells screen to treat
3336
the input characters between 128 and 159 as control functions.
3337
Such an 8-bit code is normally the same as ESC followed by the
3338
corresponding 7-bit code. The default setting is to process c1
3339
codes and can be changed with the @samp{defc1} command.
3340
Users with fonts that have usable characters in the
3341
c1 positions may want to turn this off.
3344
@deffn Command gr [state]
3346
Turn GR charset switching on/off. Whenever screen sees an input
3347
char with an 8th bit set, it will use the charset stored in the
3348
GR slot and print the character with the 8th bit stripped. The
3349
default (see also @samp{defgr}) is not to process GR switching because
3350
otherwise the ISO88591 charset would not work.
3353
@deffn Command bce [state]
3355
Change background-color-erase setting. If @samp{bce} is set to
3356
on, all characters cleared by an erase/insert/scroll/clear
3357
operation will be displayed in the current background color.
3358
Otherwise the default background color is used.
3361
@deffn Command encoding enc [denc]
3363
Tell screen how to interpret the input/output. The first argument
3364
sets the encoding of the current window.
3365
Each window can emulate a different encoding. The optional second
3366
parameter overwrites the encoding of the connected terminal.
3367
It should never be needed as screen uses the locale setting to detect
3369
There is also a way to select a terminal encoding depending on
3370
the terminal type by using the @samp{KJ} termcap entry. @xref{Special Capabilities}.
3372
Supported encodings are
3373
@code{eucJP}, @code{SJIS}, @code{eucKR},
3374
@code{eucCN}, @code{Big5}, @code{GBK}, @code{KOI8-R}, @code{CP1251},
3375
@code{UTF-8}, @code{ISO8859-2}, @code{ISO8859-3},
3376
@code{ISO8859-4}, @code{ISO8859-5}, @code{ISO8859-6},
3377
@code{ISO8859-7}, @code{ISO8859-8}, @code{ISO8859-9},
3378
@code{ISO8859-10}, @code{ISO8859-15}, @code{jis}.
3380
See also @samp{defencoding}, which changes the default setting of a new
3384
@deffn Command charset set
3386
Change the current character set slot designation and charset
3387
mapping. The first four character of @var{set}
3388
are treated as charset designators while the fifth and sixth
3389
character must be in range @samp{0} to @samp{3} and set the GL/GR
3390
charset mapping. On every position a @samp{.} may be used to indicate
3391
that the corresponding charset/mapping should not be changed
3392
(@var{set} is padded to six characters internally by appending
3393
@samp{.} chars). New windows have @samp{BBBB02} as default
3394
charset, unless a @samp{encoding} command is active.
3396
The current setting can be viewed with the @ref{Info} command.
3399
@deffn Command utf8 [state [dstate]]
3401
Change the encoding used in the current window. If utf8 is enabled, the
3402
strings sent to the window will be UTF-8 encoded and vice versa.
3404
parameter toggles the setting. If a second parameter is given, the
3406
encoding is also changed (this should rather be done with screen's
3408
See also @samp{defutf8}, which changes the default setting of a new
3412
@deffn Command defc1 state
3414
Same as the @samp{c1} command except that the default setting for
3415
new windows is changed. Initial setting is @samp{on}.
3418
@deffn Command defgr state
3420
Same as the @samp{gr} command except that the default setting for
3421
new windows is changed. Initial setting is @samp{off}.
3424
@deffn Command defbce state
3426
Same as the @samp{bce} command except that the default setting for
3427
new windows is changed. Initial setting is @samp{off}.
3430
@deffn Command defencoding enc
3432
Same as the @samp{encoding} command except that the default setting for
3433
new windows is changed. Initial setting is the encoding taken from the
3437
@deffn Command defcharset [set]
3438
Like the @samp{charset} command except that the default setting for
3439
new windows is changed. Shows current default if called without
3443
@deffn Command defutf8 state
3445
Same as the @samp{utf8} command except that the default setting for new
3446
windows is changed. Initial setting is @code{on} if screen was started
3447
with @samp{-U}, otherwise @code{off}.
3450
@node Copy and Paste, Subprocess Execution, Virtual Terminal, Top
3451
@chapter Copy and Paste
3452
@cindex copy and paste
3454
For those confined to a hardware terminal, these commands provide a cut
3455
and paste facility more powerful than those provided by most windowing
3459
* Copy:: Copy from scrollback to buffer
3460
* Paste:: Paste from buffer into window
3461
* Registers:: Longer-term storage
3462
* Screen Exchange:: Sharing data between screen users
3463
* History:: Recalling previous input
3466
@node Copy, Paste, , Copy and Paste
3474
(@kbd{C-a [}, @kbd{C-a C-[}, @kbd{C-a @key{ESC}})@*
3475
Enter copy/scrollback mode. This allows you to copy text from the
3476
current window and its history into the paste buffer. In this mode a
3477
@code{vi}-like full screen editor is active, with controls as
3482
* Line Termination:: End copied lines with CR/LF
3483
* Scrollback:: Set the size of the scrollback buffer
3484
* Copy Mode Keys:: Remap keys in copy mode
3485
* Movement:: Move around in the scrollback buffer
3486
* Marking:: Select the text you want
3487
* Repeat count:: Repeat a command
3488
* Searching:: Find the text you want
3489
* Specials:: Other random keys
3492
@node Line Termination, Scrollback, , Copy
3494
@deffn Command crlf [state]
3496
This affects the copying of text regions with the @code{copy} command.
3497
If it is set to @samp{on}, lines will be separated by the two character
3498
sequence @samp{CR}/@samp{LF}. Otherwise only @samp{LF} is used.
3499
@code{crlf} is off by default.
3500
When no parameter is given, the state is toggled.
3503
@node Scrollback, Copy Mode Keys, Line Termination, Copy
3504
@subsection Scrollback
3505
To access and use the contents in the scrollback buffer, use the @code{copy} command. @xref{Copy}.
3506
@deffn Command defscrollback num
3508
Same as the @code{scrollback} command except that the default setting
3509
for new windows is changed. Defaults to 100.
3512
@deffn Command scrollback num
3514
Set the size of the scrollback buffer for the current window to
3515
@var{num} lines. The default scrollback is 100 lines. Use @code{info}
3516
to view the current setting.
3519
@deffn Command compacthist [state]
3521
This tells screen whether to suppress trailing blank lines when
3522
scrolling up text into the history buffer. Turn compacting @samp{on}
3523
to hold more useful lines in your scrollback buffer.
3526
@node Copy Mode Keys, Movement, Scrollback, Copy
3527
@subsection Markkeys
3528
@deffn Command markkeys string
3530
This is a method of changing the keymap used for copy/history mode. The
3531
string is made up of @var{oldchar}=@var{newchar} pairs which are
3532
separated by @samp{:}. Example: The command @code{markkeys
3533
h=^B:l=^F:$=^E} would set some keys to be more familiar to @code{emacs}
3535
If your terminal sends characters, that cause you to abort copy mode,
3536
then this command may help by binding these characters to do nothing.
3537
The no-op character is `@@' and is used like this: @code{markkeys @@=L=H}
3538
if you do not want to use the `H' or `L' commands any longer.
3539
As shown in this example, multiple keys can be assigned to one function
3540
in a single statement.
3543
@node Movement, Marking, Copy Mode Keys, Copy
3544
@subsection Movement Keys
3547
@kbd{h}, @kbd{C-h}, or @kbd{left arrow} move the cursor left.
3550
@kbd{j}, @kbd{C-n}, or @kbd{down arrow} move the cursor down.
3553
@kbd{k}, @kbd{C-p}, or @kbd{up arrow} move the cursor up.
3556
@kbd{l} ('el'), or @kbd{right arrow} move the cursor right.
3559
@kbd{0} (zero) or @kbd{C-a} move to the leftmost column.
3562
@kbd{+} and @kbd{-} move the cursor to the leftmost column of the next
3566
@kbd{H}, @kbd{M} and @kbd{L} move the cursor to the leftmost column
3567
of the top, center or bottom line of the window.
3570
@kbd{|} moves to the specified absolute column.
3573
@kbd{g} or @kbd{home} moves to the beginning of the buffer.
3576
@kbd{G} or @kbd{end} moves to the specified absolute line (default: end of buffer).
3579
@kbd{%} jumps to the specified percentage of the buffer.
3582
@kbd{^} or @kbd{$} move to the first
3583
or last non-whitespace character on the line.
3586
@kbd{w}, @kbd{b}, and @kbd{e} move the cursor word by word.
3589
@kbd{B}, @kbd{E} move the cursor WORD by WORD (as in vi).
3592
@kbd{f}/@kbd{F}, @kbd{t}/@kbd{T} move the cursor forward/backward to the
3593
next occurence of the target. (eg, '3fy' will move the cursor to the 3rd
3597
@kbd{;} and @kbd{,} Repeat the last f/F/t/T command in the same/opposite direction.
3600
@kbd{C-e} and @kbd{C-y} scroll the display up/down by one line
3601
while preserving the cursor position.
3604
@kbd{C-u} and @kbd{C-d} scroll the display up/down by the specified
3605
amount of lines while preserving the cursor position. (Default: half
3609
@kbd{C-b} and @kbd{C-f} move the cursor up/down a full screen.
3611
Note that Emacs-style movement keys can be specified by a .screenrc
3612
command. (@code{markkeys "h=^B:l=^F:$=^E"}) There is no simple method for
3613
a full emacs-style keymap, however, as this involves multi-character codes.
3615
@node Marking, Repeat count, Movement, Copy
3618
The copy range is specified by setting two marks. The text between these
3619
marks will be highlighted. Press:
3622
@kbd{space} or @kbd{enter} to set the first or second mark respectively.
3623
If @code{mousetrack} is set to @code{on}, marks can also be set using
3624
@kbd{left mouse click}.
3627
@kbd{Y} and @kbd{y} can be used to mark one whole line or to mark from
3631
@kbd{W} marks exactly one word.
3633
@node Repeat count, Searching, Marking, Copy
3634
@subsection Repeat Count
3636
Any command in copy mode can be prefixed with a number (by pressing
3637
digits @kbd{0@dots{}9}) which is taken as a repeat count. Example:
3639
@kbd{C-a C-[ H 10 j 5 Y}
3642
will copy lines 11 to 15 into the paste buffer.
3644
@node Searching, Specials, Repeat count, Copy
3645
@subsection Searching
3648
@kbd{/} @code{vi}-like search forward.
3651
@kbd{?} @code{vi}-like search backward.
3654
@kbd{C-a s} @code{emacs} style incremental search forward.
3657
@kbd{C-r} @code{emacs} style reverse i-search.
3659
@deffn Command ignorecase [on|off]
3661
Tell screen to ignore the case of characters in searches. Default is
3662
@code{off}. Without any options, the state of @code{ignorecase}
3667
@kbd{n} Repeat search in forward direction.
3670
@kbd{N} Repeat search in backward direction.
3672
@node Specials, , Searching, Copy
3673
@subsection Specials
3675
There are, however, some keys that act differently here from in
3676
@code{vi}. @code{Vi} does not allow to yank rectangular blocks of text,
3677
but @code{screen} does. Press:
3680
@kbd{c} or @kbd{C} to set the left or right margin respectively. If no
3681
repeat count is given, both default to the current cursor position.@*
3682
Example: Try this on a rather full text screen:
3684
@kbd{C-a [ M 20 l SPACE c 10 l 5 j C SPACE}.
3688
This moves one to the middle line of the screen, moves in 20 columns left,
3689
marks the beginning of the paste buffer, sets the left column, moves 5 columns
3690
down, sets the right column, and then marks the end of
3691
the paste buffer. Now try:
3693
@kbd{C-a [ M 20 l SPACE 10 l 5 j SPACE}
3697
and notice the difference in the amount of text copied.
3700
@kbd{J} joins lines. It toggles between 4 modes: lines separated by a
3701
newline character (012), lines glued seamless, lines separated by a single
3702
space or comma separated lines. Note that you can prepend the newline
3703
character with a carriage return character, by issuing a @code{set crlf
3707
@kbd{v} or @kbd{V} is for all the @code{vi} users who use @code{:set numbers} - it
3708
toggles the left margin between column 9 and 1.
3711
@kbd{a} before the final @kbd{space} key turns on append mode. Thus
3712
the contents of the paste buffer will not be overwritten, but appended to.
3715
@kbd{A} turns on append mode and sets a (second) mark.
3718
@kbd{>} sets the (second) mark and writes the contents of the paste buffer
3719
to the screen-exchange file (@file{/tmp/screen-exchange} per default)
3720
once copy-mode is finished. @xref{Screen Exchange}.@*
3721
This example demonstrates how to dump the
3722
whole scrollback buffer to that file:
3724
@kbd{C-a [ g SPACE G $ >}.
3728
@kbd{C-g} gives information about the current line and column.
3731
@kbd{x} or @kbd{o} ('oh') exchanges the first mark and the current cursor position. You
3732
can use this to adjust an already placed mark.
3735
@kbd{C-l} ('el') will redraw the screen.
3738
@kbd{@@} does nothing. Absolutely nothing. Does not even exit copy
3742
All keys not described here exit copy mode.
3744
@node Paste, Registers, Copy, Copy and Paste
3749
@deffn Command paste [registers [destination]]
3750
(@kbd{C-a ]}, @kbd{C-a C-]})@*
3751
Write the (concatenated) contents of the specified registers to the stdin
3752
stream of the current window. The register @samp{.} is treated as the
3753
paste buffer. If no parameter is specified the user is prompted to enter a
3754
single register. The paste buffer can be filled with the
3755
@code{copy}, @code{history} and @code{readbuf} commands.
3756
Other registers can be filled with the @code{register}, @code{readreg} and
3757
@code{paste} commands.
3758
If @code{paste} is called with a second argument, the contents of the specified
3759
registers is pasted into the named destination register rather than
3760
the window. If @samp{.} is used as the second argument, the display's paste
3761
buffer is the destination.
3762
Note, that @code{paste} uses a wide variety of resources: Usually both, a
3763
current window and a current display are required. But whenever a second
3764
argument is specified no current window is needed. When the source specification
3765
only contains registers (not the paste buffer) then there need not be a current
3766
display (terminal attached), as the registers are a global resource. The
3767
paste buffer exists once for every user.
3770
@deffn Command stuff [string]
3772
Stuff the string @var{string} in the input buffer of the current window.
3773
This is like the @code{paste} command, but with much less overhead.
3774
Without a paramter, @code{screen} will prompt for a string to stuff.
3775
You cannot paste large buffers with the @code{stuff} command. It is most
3776
useful for key bindings. @xref{Bindkey}.
3779
@deffn Command pastefont [state]
3780
Tell screen to include font information in the paste buffer. The
3781
default is not to do so. This command is especially useful for
3782
multi character fonts like kanji.
3785
@deffn Command slowpaste msec
3786
@deffnx Command defslowpaste msec
3788
Define the speed text is inserted in the current window by the @code{paste}
3789
command. If the slowpaste value is nonzero text is written character by
3791
@code{screen} will pause for @var{msec} milliseconds after each write
3792
to allow the application to process the input. only use @code{slowpaste} if
3793
your underlying system exposes flow control problems while pasting large
3795
@code{defslowpaste} specifies the default for new windows.
3798
@deffn Command readreg [-e encoding] [register [filename]]
3800
Does one of two things, dependent on number of arguments: with zero or one
3801
arguments it it duplicates the paste buffer contents into the register specified
3802
or entered at the prompt. With two arguments it reads the contents of the named
3803
file into the register, just as @code{readbuf} reads the screen-exchange file
3804
into the paste buffer.
3805
You can tell screen the encoding of the file via the @code{-e} option.
3806
The following example will paste the system's password file into
3807
the screen window (using register p, where a copy remains):
3810
C-a : readreg p /etc/passwd
3815
@node Registers, Screen Exchange, Paste, Copy and Paste
3818
@deffn Command copy_reg [key]
3820
Removed. Use @code{readreg} instead.
3823
@deffn Command ins_reg [key]
3825
Removed. Use @code{paste} instead.
3828
@deffn Command process [key]
3830
Stuff the contents of the specified register into the @code{screen}
3831
input queue. If no argument is given you are prompted for a
3832
register name. The text is parsed as if it had been typed in from the user's
3833
keyboard. This command can be used to bind multiple actions to a single key.
3836
@deffn Command register [-e encoding] key string
3838
Save the specified @var{string} to the register @var{key}.
3839
The encoding of the string can be specified via the @code{-e} option.
3842
@node Screen Exchange, History, Registers, Copy and Paste
3843
@section Screen Exchange
3845
@deffn Command bufferfile [@var{exchange-file}]
3847
Change the filename used for reading and writing with the paste buffer.
3848
If the @var{exchange-file} parameter is omitted, @code{screen} reverts
3849
to the default of @file{/tmp/screen-exchange}. The following example
3850
will paste the system's password file into the screen window (using the
3851
paste buffer, where a copy remains):
3854
C-a : bufferfile /etc/passwd
3861
@deffn Command readbuf [-e @var{encoding}] [@var{filename}]
3863
Reads the contents of the specified file into the paste buffer.
3864
You can tell screen the encoding of the file via the @code{-e} option.
3865
If no file is specified, the screen-exchange filename is used.
3869
@deffn Command removebuf
3871
Unlinks the screen-exchange file.
3875
@deffn Command writebuf [-e @var{encoding}] [@var{filename}]
3877
Writes the contents of the paste buffer to the specified file, or the
3878
public accessible screen-exchange file if no filename is given.
3879
This is thought of as a primitive means of
3880
communication between @code{screen} users on the same host.
3881
If an encoding is specified the paste buffer is recoded on the fly to
3884
@kbd{C-a @key{ESC}} (@pxref{Copy}).
3887
@node History, , Screen Exchange, Copy and Paste
3892
@deffn Command history
3893
(@kbd{C-a @{}, @kbd{C-a @}})@*
3894
Usually users work with a shell that allows easy access to previous
3895
commands. For example, @code{csh} has the command @code{!!} to repeat
3896
the last command executed. @code{screen} provides a primitive way of
3897
recalling ``the command that started @dots{}'': You just type the first
3898
letter of that command, then hit @kbd{C-a @{} and @code{screen} tries to
3899
find a previous line that matches with the prompt character to the left
3900
of the cursor. This line is pasted into this window's input queue. Thus
3901
you have a crude command history (made up by the visible window and its
3905
@node Subprocess Execution, Key Binding, Copy and Paste, Top
3906
@chapter Subprocess Execution
3907
Control Input or Output of a window by another filter process.
3911
* Exec:: The @code{exec} command syntax.
3912
* Using Exec:: Weird things that filters can do.
3915
@node Exec, Using Exec, , Subprocess Execution
3917
@deffn Command exec [[@var{fdpat}] @var{newcommand} [@var{args} ... ]]
3919
Run a unix subprocess (specified by an executable path @var{newcommand} and
3920
its optional arguments) in the current window. The flow of data between
3921
newcommands stdin/stdout/stderr, the process originally started (let us call it
3922
"application-process") and
3923
screen itself (window) is controlled by the file descriptor pattern @var{fdpat}.
3924
This pattern is basically a three character sequence representing stdin, stdout
3925
and stderr of newcommand. A dot (@code{.}) connects the file descriptor
3926
to screen. An exclamation mark (@code{!}) causes the file descriptor to be
3927
connected to the application-process. A colon (@code{:}) combines both.
3929
User input will go to newcommand unless newcommand receives the
3930
application-process'
3931
output (@var{fdpat}s first character is @samp{!} or @samp{:}) or a pipe symbol
3932
(@samp{|}) is added to the end of @var{fdpat}.
3934
Invoking @code{exec} without arguments shows name and arguments of the currently
3935
running subprocess in this window. Only one subprocess can be running per
3938
When a subprocess is running the @code{kill} command will affect it instead of
3939
the windows process. Only one subprocess a time can be running in each window.
3941
Refer to the postscript file @file{doc/fdpat.ps} for a confusing
3942
illustration of all 21 possible combinations. Each drawing shows the digits
3943
2, 1, 0 representing the three file descriptors of newcommand. The box
3944
marked `W' is usual pty that has the application-process on its slave side.
3945
The box marked `P' is the secondary pty that now has screen at its master
3949
@node Using Exec, , Exec, Subprocess Execution
3956
Whitespace between the word @samp{exec} and @var{fdpat} and the command name
3960
Trailing dots and a @var{fdpat} consisting only of dots can be omitted.
3963
A simple @samp{|} is synonymous for the @samp{!..|} pattern.
3966
The word @samp{exec} can be omitted when the @samp{|} abbreviation is used.
3969
The word @samp{exec} can always be replaced by leading @samp{!}.
3978
@itemx exec ... /bin/sh
3979
All of the above are equivalent.
3980
Creates another shell in the same window, while the original shell is still
3981
running. Output of both shells is displayed and user input is sent to the new
3985
@itemx exec!stty 19200
3986
@itemx exec !.. stty 19200
3987
All of the above are equivalent.
3988
Set the speed of the window's tty. If your stty command operates on stdout,
3989
then add another @samp{!}. This is a useful command, when a screen window
3990
is directly connected to a serial line that needs to be configured.
3993
@itemx exec !..| less
3994
Both are equivalent.
3995
This adds a pager to the window output. The special character @samp{|} is
3996
needed to give the user control over the pager although it gets its input from
3997
the window's process. This works, because @samp{less} listens on stderr
3998
(a behavior that @code{screen} would not expect without the @samp{|})
3999
when its stdin is not a tty. @code{Less} versions newer than 177 fail miserably
4000
here; good old @code{pg} still works.
4002
@item !:sed -n s/.*Error.*/\007/p
4003
Sends window output to both, the user and the sed command. The sed inserts an
4004
additional bell character (oct. 007) to the window output seen by screen.
4005
This will cause 'Bell in window x' messages, whenever the string @samp{Error}
4006
appears in the window.
4009
@node Key Binding, Flow Control, Subprocess Execution, Top
4010
@chapter Key Binding
4014
You may disagree with some of the default bindings (I know I do). The
4015
@code{bind} command allows you to redefine them to suit your
4019
* Bind:: @code{bind} syntax.
4020
* Bind Examples:: Using @code{bind}.
4021
* Command Character:: The character used to start keyboard commands.
4022
* Help:: Show current key bindings.
4023
* Bindkey:: @code{bindkey} syntax.
4024
* Bindkey Examples:: Some easy examples.
4025
* Bindkey Control:: How to control the bindkey mechanism.
4028
@node Bind, Bind Examples, , Key Binding
4029
@section The @code{bind} command
4030
@deffn Command bind [-c class] key [command [args]]
4032
Bind a command to a key. The @var{key} argument is either a single
4033
character, a two-character sequence of the form @samp{^x} (meaning
4034
@kbd{C-x}), a backslash followed by an octal number (specifying the
4035
ASCII code of the character), or a backslash followed by a second
4036
character, such as @samp{\^} or @samp{\\}. The argument can also be
4037
quoted, if you like. If no further argument is given, any previously
4038
established binding for this key is removed. The @var{command}
4039
argument can be any command (@pxref{Command Index}).
4041
If a command class is specified via the @code{-c} option, the
4042
key is bound for the specified class. Use the @code{command}
4043
command to activate a class. Command classes can be used
4044
to create multiple command keys or multi-character bindings.
4046
By default, most suitable commands are bound to one or more keys
4047
(@pxref{Default Key Bindings}); for instance, the command to create a
4048
new window is bound to @kbd{C-c} and @kbd{c}. The @code{bind} command
4049
can be used to redefine the key bindings and to define new bindings.
4052
@deffn Command unbindall
4054
Unbind all the bindings. This can be useful when
4055
screen is used solely for its detaching abilities, such as when
4056
letting a console application run as a daemon. If, for some reason,
4057
it is necessary to bind commands after this, use 'screen -X'.
4060
@node Bind Examples, Command Character, Bind, Key Binding
4061
@section Examples of the @code{bind} command
4067
bind ^f screen telnet foobar
4068
bind \033 screen -ln -t root -h 1000 9 su
4072
would bind the space key to the command that displays a list of windows
4073
(so that the command usually invoked by @kbd{C-a C-w} would also be
4074
available as @kbd{C-a space}), bind @kbd{C-f} to the command
4075
``create a window with a TELNET connection to foobar'', and bind
4076
@key{ESC} to the command that creates an non-login window with title
4077
@samp{root} in slot #9, with a superuser shell and a scrollback buffer
4081
bind -c demo1 0 select 10
4082
bind -c demo1 1 select 11
4083
bind -c demo1 2 select 12
4084
bindkey "^B" command -c demo1
4086
makes @kbd{C-b 0} select window 10, @kbd{C-b 1} window 11, etc.
4089
bind -c demo2 0 select 10
4090
bind -c demo2 1 select 11
4091
bind -c demo2 2 select 12
4092
bind - command -c demo2
4094
makes @kbd{C-a - 0} select window 10, @kbd{C-a - 1} window 11, etc.
4096
@node Command Character, Help, Bind Examples, Key Binding
4097
@cindex escape character
4098
@cindex command character
4099
@section Command Character
4101
@deffn Command escape xy
4103
Set the command character to @var{x} and the character generating a
4104
literal command character (by triggering the @code{meta} command)
4105
to @var{y} (similar to the @samp{-e} option).
4106
Each argument is either a single character, a two-character
4107
sequence of the form @samp{^x} (meaning @kbd{C-x}), a backslash followed
4108
by an octal number (specifying the ASCII code of the character), or a
4109
backslash followed by a second character, such as @samp{\^} or
4110
@samp{\\}. The default is @samp{^Aa}, but @samp{``} is recommended by
4114
@deffn Command defescape xy
4116
Set the default command characters. This is equivalent to the command
4117
@code{escape} except that it is useful for multiuser sessions only.
4118
In a multiuser session
4119
@code{escape} changes the command character of the calling user, where
4120
@code{defescape} changes the default command characters for users that
4121
will be added later.
4127
Send the command character (@kbd{C-a}) to the process in the current
4128
window. The keystroke for this command is the second parameter to the
4129
@samp{-e} command line switch (@pxref{Invoking Screen}), or the
4130
@code{escape} .screenrc directive.
4133
@deffn Command command [-c @var{class}]
4135
This command has the same effect as typing the screen escape character
4136
(@kbd{C-a}). It is probably only useful for key bindings.
4137
If the @samp{-c} option is given, select the specified command class.
4138
@xref{Bind}, @xref{Bindkey}.
4141
@node Help, Bindkey, Command Character, Key Binding
4146
Displays a help screen showing you all the key bindings. The first
4147
pages list all the internal commands followed by their bindings.
4148
Subsequent pages will display the custom commands, one command per key.
4149
Press space when you're done reading each page, or return to exit early.
4150
All other characters are ignored.
4151
If the @samp{-c} option is given, display all bound commands for the
4152
specified command class.
4153
@xref{Default Key Bindings}.
4156
@node Bindkey, Bindkey Examples, Help, Key Binding
4158
@deffn Command bindkey [@var{opts}] [@var{string} [@var{cmd} @var{args}]]
4160
This command manages screen's input translation tables. Every
4161
entry in one of the tables tells screen how to react if a certain
4162
sequence of characters is encountered. There are three tables:
4163
one that should contain actions programmed by the user, one for
4164
the default actions used for terminal emulation and one for
4165
screen's copy mode to do cursor movement. See @ref{Input Translation}
4166
for a list of default key bindings.
4169
option is given, bindkey modifies the default table, @samp{-m}
4170
changes the copy mode table and with neither option the user
4171
table is selected. The argument @samp{string} is the sequence of
4172
characters to which an action is bound. This can either be a fixed
4173
string or a termcap keyboard capability name (selectable with the
4176
Some keys on a VT100 terminal can send a different
4177
string if application mode is turned on (e.g. the cursor keys).
4178
Such keys have two entries in the translation table. You can
4179
select the application mode entry by specifying the @samp{-a}
4182
The @samp{-t} option tells screen not to do inter-character
4183
timing. One cannot turn off the timing if a termcap capability is
4186
@samp{cmd} can be any of screen's commands with an arbitrary
4187
number of @samp{args}. If @samp{cmd} is omitted the key-binding is
4188
removed from the table.
4191
@node Bindkey Examples, Bindkey Control,Bindkey, Key Binding
4192
@section Bindkey Examples
4194
Here are some examples of keyboard bindings:
4200
Show all of the default key bindings. The application mode entries
4201
are marked with [A].
4204
bindkey -k k1 select 1
4207
Make the "F1" key switch to window one.
4210
bindkey -t foo stuff barfoo
4213
Make @samp{foo} an abbreviation of the word @samp{barfoo}. Timeout is
4214
disabled so that users can type slowly.
4217
bindkey "\024" mapdefault
4220
This key-binding makes @samp{C-t} an escape character for key-bindings. If
4221
you did the above @samp{stuff barfoo} binding, you can enter the word
4222
@samp{foo} by typing @samp{C-t foo}. If you want to insert a
4223
@samp{C-t} you have to press the key twice (i.e., escape the escape
4227
bindkey -k F1 command
4230
Make the F11 (not F1!) key an alternative screen
4231
escape (besides @samp{C-a}).
4233
@node Bindkey Control, , Bindkey Examples, Key Binding
4234
@section Bindkey Control
4235
@deffn Command mapdefault
4237
Tell screen that the next input character should only be looked up
4238
in the default bindkey table.
4240
@deffn Command mapnotnext
4242
Like mapdefault, but don't even look in the default bindkey table.
4244
@deffn Command maptimeout n
4246
Set the inter-character timer for input sequence detection to a timeout
4247
of @var{n} ms. The default timeout is 300ms. Maptimeout with no
4248
arguments shows the current setting.
4251
@node Flow Control, Termcap, Key Binding, Top
4252
@chapter Flow Control
4253
@cindex flow control
4255
@code{screen} can trap flow control characters or pass them to the
4256
program, as you see fit. This is useful when your terminal wants to use
4257
XON/XOFF flow control and you are running a program which wants to use
4258
^S/^Q for other purposes (i.e. @code{emacs}).
4261
* Flow Control Summary:: The effect of @code{screen} flow control
4262
* Flow:: Setting the flow control behavior
4263
* XON/XOFF:: Sending XON or XOFF to the window
4266
@node Flow Control Summary, Flow, , Flow Control
4267
@section About @code{screen} flow control settings
4268
Each window has a flow-control setting that determines how screen deals
4269
with the XON and XOFF characters (and perhaps the interrupt character).
4270
When flow-control is turned off, screen ignores the XON and XOFF
4271
characters, which allows the user to send them to the current program by
4272
simply typing them (useful for the @code{emacs} editor, for instance).
4273
The trade-off is that it will take longer for output from a
4274
``normal'' program to pause in response to an XOFF. With
4275
flow-control turned on, XON and XOFF characters are used to immediately
4276
pause the output of the current window. You can still send these
4277
characters to the current program, but you must use the appropriate
4278
two-character screen commands (typically @kbd{C-a q} (xon) and @kbd{C-a
4279
s} (xoff)). The xon/xoff commands are also useful for typing C-s and
4280
C-q past a terminal that intercepts these characters.
4282
Each window has an initial flow-control value set with either the
4283
@samp{-f} option or the @code{defflow} command. By default the
4284
windows are set to automatic flow-switching. It can then be toggled
4285
between the three states 'fixed on', 'fixed off' and 'automatic'
4286
interactively with the @code{flow} command bound to @kbd{C-a f}.
4288
The automatic flow-switching mode deals with flow control using the
4289
TIOCPKT mode (like @code{rlogin} does). If the tty driver does not
4290
support TIOCPKT, screen tries to determine the right mode based on the
4291
current setting of the application keypad --- when it is enabled,
4292
flow-control is turned off and visa versa. Of course, you can still
4293
manipulate flow-control manually when needed.
4295
If you're running with flow-control enabled and find that pressing the
4296
interrupt key (usually C-c) does not interrupt the display until another
4297
6-8 lines have scrolled by, try running screen with the @samp{interrupt}
4298
option (add the @samp{interrupt} flag to the @code{flow} command in your
4299
.screenrc, or use the @samp{-i} command-line option). This causes the
4300
output that @code{screen} has accumulated from the interrupted program
4301
to be flushed. One disadvantage is that the virtual terminal's memory
4302
contains the non-flushed version of the output, which in rare cases can
4303
cause minor inaccuracies in the output. For example, if you switch
4304
screens and return, or update the screen with @kbd{C-a l} you would see
4305
the version of the output you would have gotten without @samp{interrupt}
4306
being on. Also, you might need to turn off flow-control (or use
4307
auto-flow mode to turn it off automatically) when running a program that
4308
expects you to type the interrupt character as input, as the
4309
@samp{interrupt} parameter only takes effect when flow-control is
4310
enabled. If your program's output is interrupted by mistake, a simple
4311
refresh of the screen with @kbd{C-a l} will restore it. Give each mode
4312
a try, and use whichever mode you find more comfortable.
4314
@node Flow, XON/XOFF, Flow Control Summary, Flow Control
4316
@deffn Command defflow fstate [interrupt]
4318
Same as the @code{flow} command except that the default setting for new
4319
windows is changed. Initial setting is `auto'.
4320
Specifying @code{flow auto interrupt} has the same effect as the
4321
command-line options @samp{-fa} and @samp{-i}.
4322
Note that if @samp{interrupt} is enabled, all existing displays are
4323
changed immediately to forward interrupt signals.
4328
@deffn Command flow [fstate]
4329
(@kbd{C-a f}, @kbd{C-a C-f})@*
4330
Sets the flow-control mode for this window to @var{fstate}, which can be
4331
@samp{on}, @samp{off} or @samp{auto}.
4332
Without parameters it cycles the current window's
4333
flow-control setting. Default is set by `defflow'.
4336
@node XON/XOFF, , Flow, Flow Control
4337
@section XON and XOFF
4341
(@kbd{C-a q}, @kbd{C-a C-q})@*
4342
Send a ^Q (ASCII XON) to the program in the current window. Redundant
4343
if flow control is set to @samp{off} or @samp{auto}.
4349
(@kbd{C-a s}, @kbd{C-a C-s})@*
4350
Send a ^S (ASCII XOFF) to the program in the current window.
4353
@node Termcap, Message Line, Flow Control, Top
4356
@code{Screen} demands the most out of your terminal so that it can
4357
perform its VT100 emulation most efficiently. These functions provide
4358
means for tweaking the termcap entries for both your physical terminal
4359
and the one simulated by @code{screen}.
4362
* Window Termcap:: Choosing a termcap entry for the window.
4363
* Dump Termcap:: Write out a termcap entry for the window.
4364
* Termcap Syntax:: The @code{termcap} and @code{terminfo} commands.
4365
* Termcap Examples:: Uses for @code{termcap}.
4366
* Special Capabilities:: Non-standard capabilities used by @code{screen}.
4367
* Autonuke:: Flush unseen output
4368
* Obuflimit:: Allow pending output when reading more
4369
* Character Translation:: Emulating fonts and charsets.
4372
@node Window Termcap, Dump Termcap, , Termcap
4373
@section Choosing the termcap entry for a window
4374
Usually @code{screen} tries to emulate as much of the VT100/ANSI
4375
standard as possible. But if your terminal lacks certain capabilities
4376
the emulation may not be complete. In these cases @code{screen} has to
4377
tell the applications that some of the features are missing. This is no
4378
problem on machines using termcap, because @code{screen} can use the
4379
@code{$TERMCAP} variable to customize the standard screen termcap.
4381
But if you do a rlogin on another machine or your machine supports only
4382
terminfo this method fails. Because of this @code{screen} offers a way
4383
to deal with these cases. Here is how it works:
4385
When @code{screen} tries to figure out a terminal name for itself, it
4386
first looks for an entry named @code{screen.@var{term}}, where
4387
@var{term} is the contents of your @code{$TERM} variable. If no such entry
4388
exists, @code{screen} tries @samp{screen} (or @samp{screen-w}, if the
4389
terminal is wide (132 cols or more)). If even this entry cannot be
4390
found, @samp{vt100} is used as a substitute.
4392
The idea is that if you have a terminal which doesn't support an
4393
important feature (e.g. delete char or clear to EOS) you can build a new
4394
termcap/terminfo entry for @code{screen} (named
4395
@samp{screen.@var{dumbterm}}) in which this capability has been
4396
disabled. If this entry is installed on your machines you are able to
4397
do a rlogin and still keep the correct termcap/terminfo entry. The
4398
terminal name is put in the @code{$TERM} variable of all new windows.
4399
@code{screen} also sets the @code{$TERMCAP} variable reflecting the
4400
capabilities of the virtual terminal emulated.
4401
Furthermore, the variable @code{$WINDOW} is set to the window number of each
4404
The actual set of capabilities supported by the virtual terminal depends
4405
on the capabilities supported by the physical terminal. If, for
4406
instance, the physical terminal does not support underscore mode,
4407
@code{screen} does not put the @samp{us} and @samp{ue} capabilities into
4408
the window's @code{$TERMCAP} variable, accordingly. However, a minimum number
4409
of capabilities must be supported by a terminal in order to run
4410
@code{screen}; namely scrolling, clear screen, and direct cursor
4411
addressing (in addition, @code{screen} does not run on hardcopy
4412
terminals or on terminals that over-strike).
4414
Also, you can customize the @code{$TERMCAP} value used by @code{screen} by
4415
using the @code{termcap} command, or by defining the variable
4416
@code{$SCREENCAP} prior to startup. When the latter defined, its value will be
4417
copied verbatim into each window's @code{$TERMCAP} variable. This can either
4418
be the full terminal definition, or a filename where the terminal
4419
@samp{screen} (and/or @samp{screen-w}) is defined.
4421
Note that @code{screen} honors the @code{terminfo} command if the system
4422
uses the terminfo database rather than termcap. On such machines the
4423
@code{$TERMCAP} variable has no effect and you must use the
4424
@code{dumptermcap} command (@pxref{Dump Termcap}) and the @code{tic}
4425
program to generate terminfo entries for @code{screen} windows.
4427
When the boolean @samp{G0} capability is present in the termcap entry
4428
for the terminal on which @code{screen} has been called, the terminal
4429
emulation of @code{screen} supports multiple character sets. This
4430
allows an application to make use of, for instance, the VT100 graphics
4431
character set or national character sets. The following control
4432
functions from ISO 2022 are supported: @samp{lock shift G0} (@samp{SI}),
4433
@samp{lock shift G1} (@samp{SO}), @samp{lock shift G2}, @samp{lock shift
4434
G3}, @samp{single shift G2}, and @samp{single shift G3}. When a virtual
4435
terminal is created or reset, the ASCII character set is designated as
4436
@samp{G0} through @samp{G3}. When the @samp{G0} capability is present,
4437
screen evaluates the capabilities @samp{S0}, @samp{E0}, and @samp{C0} if
4438
present. @samp{S0} is the sequence the terminal uses to enable and start
4439
the graphics character set rather than @samp{SI}. @samp{E0} is the
4440
corresponding replacement for @samp{SO}. @samp{C0} gives a character by
4441
character translation string that is used during semi-graphics mode.
4442
This string is built like the @samp{acsc} terminfo capability.
4444
When the @samp{po} and @samp{pf} capabilities are present in the
4445
terminal's termcap entry, applications running in a @code{screen} window
4446
can send output to the printer port of the terminal. This allows a user
4447
to have an application in one window sending output to a printer
4448
connected to the terminal, while all other windows are still active (the
4449
printer port is enabled and disabled again for each chunk of output).
4450
As a side-effect, programs running in different windows can send output
4451
to the printer simultaneously. Data sent to the printer is not
4452
displayed in the window. The @code{info} command displays a line starting
4453
with @samp{PRIN} while the printer is active.
4455
Some capabilities are only put into the @code{$TERMCAP} variable of the virtual
4456
terminal if they can be efficiently implemented by the physical
4457
terminal. For instance, @samp{dl} (delete line) is only put into the
4458
@code{$TERMCAP} variable if the terminal supports either delete line itself or
4459
scrolling regions. Note that this may provoke confusion, when the
4460
session is reattached on a different terminal, as the value of @code{$TERMCAP}
4461
cannot be modified by parent processes. You can force @code{screen} to
4462
include all capabilities in @code{$TERMCAP} with the @samp{-a}
4463
command-line option (@pxref{Invoking Screen}).
4465
The "alternate screen" capability is not enabled by default.
4466
Set the @code{altscreen} @file{.screenrc} command to enable it.
4468
@node Dump Termcap, Termcap Syntax, Window Termcap, Termcap
4469
@section Write out the window's termcap entry
4471
@deffn Command dumptermcap
4473
Write the termcap entry for the virtual terminal optimized for the
4474
currently active window to the file @file{.termcap} in the user's
4475
@file{$HOME/.screen} directory (or wherever @code{screen} stores its
4476
sockets. @pxref{Files}). This termcap entry is identical to
4477
the value of the environment variable @code{$TERMCAP} that is set up by
4478
@code{screen} for each window. For terminfo based systems you will need
4479
to run a converter like @code{captoinfo} and then compile the entry with
4483
@node Termcap Syntax, Termcap Examples, Dump Termcap, Termcap
4484
@section The @code{termcap} command
4485
@deffn Command termcap term terminal-tweaks [window-tweaks]
4486
@deffnx Command terminfo term terminal-tweaks [window-tweaks]
4487
@deffnx Command termcapinfo term terminal-tweaks [window-tweaks]
4489
Use this command to modify your terminal's termcap entry without going
4490
through all the hassles involved in creating a custom termcap entry.
4491
Plus, you can optionally customize the termcap generated for the
4493
You have to place these commands in one of the screenrc startup files, as they
4494
are meaningless once the terminal emulator is booted.
4496
If your system uses the terminfo database rather than termcap,
4497
@code{screen} will understand the @code{terminfo} command, which has the
4498
same effects as the @code{termcap} command. Two separate commands are
4499
provided, as there are subtle syntactic differences, e.g. when parameter
4500
interpolation (using @samp{%}) is required. Note that the termcap names of
4501
the capabilities should also be used with the @code{terminfo} command.
4503
In many cases, where the arguments are valid in both terminfo and termcap
4504
syntax, you can use the command @code{termcapinfo}, which is just a
4505
shorthand for a pair of @code{termcap} and @code{terminfo} commands with
4506
identical arguments.
4509
The first argument specifies which terminal(s) should be affected by
4510
this definition. You can specify multiple terminal names by separating
4511
them with @samp{|}s. Use @samp{*} to match all terminals and @samp{vt*}
4512
to match all terminals that begin with @samp{vt}.
4514
Each @var{tweak} argument contains one or more termcap defines
4515
(separated by @samp{:}s) to be inserted at the start of the appropriate
4516
termcap entry, enhancing it or overriding existing values. The first
4517
tweak modifies your terminal's termcap, and contains definitions that
4518
your terminal uses to perform certain functions. Specify a null string
4519
to leave this unchanged (e.g. ""). The second (optional) tweak modifies
4520
all the window termcaps, and should contain definitions that screen
4521
understands (@pxref{Virtual Terminal}).
4523
@node Termcap Examples, Special Capabilities, Termcap Syntax, Termcap
4524
@section Termcap Examples
4528
termcap xterm* xn:hs@@
4532
Informs @code{screen} that all terminals that begin with @samp{xterm}
4533
have firm auto-margins that allow the last position on the screen to be
4534
updated (xn), but they don't really have a status line (no 'hs' --
4535
append @samp{@@} to turn entries off). Note that we assume @samp{xn} for
4536
all terminal names that start with @samp{vt}, but only if you don't
4537
specify a termcap command for that terminal.
4541
termcap vt102|vt220 Z0=\E[?3h:Z1=\E[?3l
4545
Specifies the firm-margined @samp{xn} capability for all terminals that
4546
begin with @samp{vt}, and the second line will also add the
4547
escape-sequences to switch into (Z0) and back out of (Z1)
4548
132-character-per-line mode if this is a VT102 or VT220. (You must
4549
specify Z0 and Z1 in your termcap to use the width-changing commands.)
4552
termcap vt100 "" l0=PF1:l1=PF2:l2=PF3:l3=PF4
4556
This leaves your vt100 termcap alone and adds the function key labels to
4557
each window's termcap entry.
4560
termcap h19|z19 am@@:im=\E@@:ei=\EO dc=\E[P
4564
Takes a h19 or z19 termcap and turns off auto-margins (am@@) and enables
4565
the insert mode (im) and end-insert (ei) capabilities (the @samp{@@} in
4566
the @samp{im} string is after the @samp{=}, so it is part of the
4567
string). Having the @samp{im} and @samp{ei} definitions put into your
4568
terminal's termcap will cause screen to automatically advertise the
4569
character-insert capability in each window's termcap. Each window will
4570
also get the delete-character capability (dc) added to its termcap,
4571
which screen will translate into a line-update for the terminal (we're
4572
pretending it doesn't support character deletion).
4574
If you would like to fully specify each window's termcap entry, you
4575
should instead set the @code{$SCREENCAP} variable prior to running
4576
@code{screen}. @xref{Virtual Terminal}, for the details of the
4577
@code{screen} terminal emulation. @xref{Top, , Termcap, termcap, The
4578
Termcap Manual}, for more information on termcap definitions.
4580
@node Special Capabilities, Autonuke, Termcap Examples, Termcap
4581
@section Special Terminal Capabilities
4582
@cindex terminal capabilities
4583
@cindex capabilities
4584
The following table describes all terminal capabilities that are
4585
recognized by @code{screen} and are not in the termcap manual
4586
(@pxref{Top, , Termcap, termcap, The Termcap Manual}).
4587
You can place these capabilities in your termcap entries (in
4588
@file{/etc/termcap}) or use them with the commands @code{termcap},
4589
@code{terminfo} and @code{termcapinfo} in your @code{screenrc} files. It is
4590
often not possible to place these capabilities in the terminfo database.
4594
Terminal has VT100 style margins (`magic margins'). Note that
4595
this capability is obsolete --- @code{screen} now uses the standard
4600
Change width to 132 columns.
4604
Change width to 80 columns.
4608
Resize display. This capability has the desired width and height as
4609
arguments. SunView(tm) example: @samp{\E[8;%d;%dt}.
4613
Terminal doesn't need flow control. Send ^S and ^Q direct to
4614
the application. Same as @code{flow off}. The opposite of this
4615
capability is @samp{nx}.
4619
Terminal can deal with ISO 2022 font selection sequences.
4623
Switch charset @samp{G0} to the specified charset. Default
4628
Switch charset @samp{G0} back to standard charset. Default
4633
Use the string as a conversion table for font 0. See
4634
the @samp{ac} capability for more details.
4638
Switch cursor-keys to application mode.
4642
Switch cursor-keys to cursor mode.
4646
Enable autonuke for displays of this terminal type.
4651
Set the output buffer limit. See the @samp{obuflimit} command
4652
(@pxref{Obuflimit}) for more details.
4656
Set the encoding of the terminal. See the @samp{encoding} command
4657
(@pxref{Character Processing}) for valid encodings.
4661
Change character foreground color in an ANSI conform way. This
4662
capability will almost always be set to @samp{\E[3%dm}
4663
(@samp{\E[3%p1%dm} on terminfo machines).
4667
Same as @samp{AF}, but change background color.
4671
Does understand ANSI set default fg/bg color (@samp{\E[39m / \E[49m}).
4675
Describe a translation of characters to strings depending on the
4676
current font. (@pxref{Character Translation}).
4680
Terminal understands special xterm sequences (OSC, mouse tracking).
4684
Terminal needs bold to display high-intensity colors (e.g. Eterm).
4688
Add missing capabilities to the termcap/info entry. (Set by default).
4691
@node Autonuke, Obuflimit, Special Capabilities, Termcap
4693
@deffn Command autonuke @var{state}
4695
Sets whether a clear screen sequence should nuke all the output
4696
that has not been written to the terminal. @xref{Obuflimit}.
4697
This property is set per display, not per window.
4700
@deffn Command defautonuke @var{state}
4702
Same as the @code{autonuke} command except that the default setting for
4703
new displays is also changed. Initial setting is @code{off}.
4704
Note that you can use the special @code{AN} terminal capability if you
4705
want to have a terminal type dependent setting.
4708
@node Obuflimit, Character Translation, Autonuke, Termcap
4710
@deffn Command obuflimit [@var{limit}]
4712
If the output buffer contains more bytes than the specified limit, no
4713
more data will be read from the windows. The default value is 256. If
4714
you have a fast display (like @code{xterm}), you can set it to some
4715
higher value. If no argument is specified, the current setting is displayed.
4716
This property is set per display, not per window.
4719
@deffn Command defobuflimit @var{limit}
4721
Same as the @code{obuflimit} command except that the default setting for new
4722
displays is also changed. Initial setting is 256 bytes. Note that you can use
4723
the special @code{OL} terminal capability if you want to have a terminal
4724
type dependent limit.
4727
@node Character Translation, , Obuflimit, Termcap
4728
@section Character Translation
4729
@code{Screen} has a powerful mechanism to translate characters to
4730
arbitrary strings depending on the current font and terminal type.
4731
Use this feature if you want to work with a common standard character
4732
set (say ISO8851-latin1) even on terminals that scatter the more
4733
unusual characters over several national language font pages.
4738
XC=@var{<charset-mapping>}@{,,@var{<charset-mapping>}@}
4739
@var{<charset-mapping>} := @var{<designator>}@var{<template>}@{,@var{<mapping>}@}
4740
@var{<mapping>} := @var{<char-to-be-mapped>}@var{<template-arg>}
4743
The things in braces may be repeated any number of times.
4745
A @var{<charset-mapping>} tells screen how to map characters
4746
in font @var{<designator>} (@samp{B}: Ascii, @samp{A}: UK,
4747
@samp{K}: german, etc.)
4748
to strings. Every @var{<mapping>} describes to what string a single
4749
character will be translated. A template mechanism is used, as
4750
most of the time the codes have a lot in common (for example
4751
strings to switch to and from another charset). Each occurrence
4752
of @samp{%} in @var{<template>} gets substituted with the
4754
specified together with the character. If your strings are not
4755
similar at all, then use @samp{%} as a template and place the full
4756
string in @var{<template-arg>}. A quoting mechanism was added to make
4757
it possible to use a real @samp{%}. The @samp{\} character quotes the
4758
special characters @samp{\}, @samp{%}, and @samp{,}.
4763
termcap hp700 'XC=B\E(K%\E(B,\304[,\326\\\\,\334]'
4766
This tells @code{screen}, how to translate ISOlatin1 (charset @samp{B})
4767
upper case umlaut characters on a @code{hp700} terminal that has a
4768
German charset. @samp{\304} gets translated to
4769
@samp{\E(K[\E(B} and so on.
4770
Note that this line gets parsed *three* times before the internal
4771
lookup table is built, therefore a lot of quoting is needed to
4772
create a single @samp{\}.
4774
Another extension was added to allow more emulation: If a mapping
4775
translates the unquoted @samp{%} char, it will be sent to the terminal
4776
whenever screen switches to the corresponding @var{<designator>}.
4778
special case the template is assumed to be just @samp{%} because
4779
the charset switch sequence and the character mappings normally
4780
haven't much in common.
4782
This example shows one use of the extension:
4784
termcap xterm 'XC=K%,%\E(B,[\304,\\\\\326,]\334'
4787
Here, a part of the German (@samp{K}) charset is emulated on an xterm.
4788
If screen has to change to the @samp{K} charset, @samp{\E(B} will be
4790
to the terminal, i.e. the ASCII charset is used instead. The
4791
template is just @samp{%}, so the mapping is straightforward:
4792
@samp{[} to @samp{\304}, @samp{\} to @samp{\326}, and @samp{]} to
4795
@node Message Line, Logging, Termcap, Top
4796
@chapter The Message Line
4797
@cindex message line
4799
@code{Screen} displays informational messages and other diagnostics in a
4800
@dfn{message line} at the bottom of the screen. If your terminal has a
4801
status line defined in its termcap, screen will use this for displaying
4802
its messages, otherwise the last line of the screen will be temporarily
4803
overwritten and output will be momentarily interrupted. The message
4804
line is automatically removed after a few seconds delay, but it can also
4805
be removed early (on terminals without a status line) by beginning to
4809
* Privacy Message:: Using the message line from your program.
4810
* Hardware Status Line:: Use the terminal's hardware status line.
4811
* Last Message:: Redisplay the last message.
4812
* Message Wait:: Control how long messages are displayed.
4815
@node Privacy Message, Hardware Status Line, , Message Line
4816
@section Using the message line from your program
4817
The message line facility can be used by an application running in the
4818
current window by means of the ANSI @dfn{Privacy message} control
4819
sequence. For instance, from within the shell, try something like:
4822
echo "@value{esc}^Hello world from window $WINDOW@value{esc}\"
4825
where @samp{@value{esc}} is ASCII ESC and the @samp{^} that follows it
4826
is a literal caret or up-arrow.
4828
@node Hardware Status Line, Last Message, Privacy Message, Message Line
4829
@section Hardware Status Line
4830
@deffn Command hardstatus [state]
4831
@deffnx Command hardstatus [@code{always}]@code{lastline}|@code{message}|@code{ignore} [string]
4832
@deffnx Command hardstatus @code{string} [string]
4834
This command configures the use and emulation of the terminal's
4835
hardstatus line. The first form toggles whether @code{screen}
4836
will use the hardware status line to display messages. If the
4837
flag is set to @samp{off}, these messages
4838
are overlaid in reverse video mode at the display line. The default
4839
setting is @samp{on}.
4841
The second form tells screen what to do if the terminal doesn't
4842
have a hardstatus line (i.e. the termcap/terminfo capabilities
4843
"hs", "ts", "fs" and "ds" are not set). If the type
4844
@code{lastline} is used, screen will reserve the last line of the
4845
display for the hardstatus. @code{message} uses
4846
@code{screen}'s message mechanism and
4847
@code{ignore} tells @code{screen} never to display the hardstatus.
4848
If you prepend the word @code{always} to the type (e.g., @code{alwayslastline}), @code{screen} will use
4849
the type even if the terminal supports a hardstatus line.
4851
The third form specifies the contents of the hardstatus line.
4852
@code{%h} is used as default string, i.e., the stored hardstatus of the
4853
current window (settable via @samp{ESC]0;^G} or @samp{ESC_\\}) is
4855
You can customize this to any string you like including
4856
string escapes (@pxref{String Escapes}).
4858
out the argument @var{string}, the current string is displayed.
4860
You can mix the second and third form by providing the string as
4861
additional argument.
4864
@node Last Message, Message Wait, Hardware Status Line, Message Line
4865
@section Display Last Message
4868
@deffn Command lastmsg
4869
(@kbd{C-a m}, @kbd{C-a C-m})@*
4870
Repeat the last message displayed in the message line. Useful if you're
4871
typing when a message appears, because (unless your terminal has a
4872
hardware status line) the message goes away when you press a key.
4875
@node Message Wait, , Last Message, Message Line
4876
@section Message Wait
4877
@deffn Command msgminwait sec
4879
Defines the time @code{screen} delays a new message when another is
4880
currently displayed. Defaults to 1 second.
4883
@deffn Command msgwait sec
4885
Defines the time a message is displayed, if @code{screen} is not
4886
disturbed by other activity. Defaults to 5 seconds.
4889
@node Logging, Startup, Message Line, Top
4892
This section describes the commands for keeping a record of your session.
4895
* Hardcopy:: Dump the current screen to a file
4896
* Log:: Log the output of a window to a file
4899
@node Hardcopy, Log, , Logging
4902
@deffn Command hardcopy [-h] [@var{file}]
4904
Writes out the currently displayed image to the file @var{file}, or,
4905
if no filename is specified, to @file{hardcopy.@var{n}}
4906
in the default directory, where @var{n} is the number of the
4907
current window. This either appends or overwrites the file if it
4908
exists, as determined by the @code{hardcopy_append} command.
4909
If the option @code{-h} is specified, dump also the
4910
contents of the scrollback buffer.
4913
@deffn Command hardcopy_append state
4915
If set to @samp{on}, @code{screen} will append to the
4916
@file{hardcopy.@var{n}} files created by the command @code{hardcopy};
4917
otherwise, these files are overwritten each time.
4920
@deffn Command hardcopydir directory
4922
Defines a directory where hardcopy files will be placed.
4923
If unset, hardcopys are dumped in screen's current working
4927
@node Log, , Hardcopy, Logging
4930
@deffn Command deflog state
4932
Same as the @code{log} command except that the default setting for new
4933
windows is changed. Initial setting is `off'.
4937
@deffn Command log [state]
4939
Begins/ends logging of the current window to the file
4940
@file{screenlog.@var{n}} in the window's default directory, where
4941
@var{n} is the number of the current window.
4942
This filename can be changed with the @samp{logfile} command.
4943
If no parameter is given,
4944
the logging state is toggled. The session log is
4945
appended to the previous contents of the file if it already exists. The
4946
current contents and the contents of the scrollback history are not
4947
included in the session log. Default is @samp{off}.
4950
@deffn Command logfile filename
4951
@deffnx Command logfile flush secs
4953
Defines the name the log files will get. The default is @samp{screenlog.%n}.
4954
The second form changes the number of seconds @code{screen}
4955
will wait before flushing the logfile buffer to the file-system. The
4956
default value is 10 seconds.
4959
@deffn Command logtstamp [state]
4960
@deffnx Command logtstamp @code{after} secs
4961
@deffnx Command logtstamp @code{string} string
4963
This command controls logfile time-stamp mechanism of screen. If
4964
time-stamps are turned @samp{on}, screen adds a string containing
4965
the current time to the logfile after two minutes of inactivity.
4966
When output continues and more than another two minutes have passed,
4967
a second time-stamp is added to document the restart of the
4968
output. You can change this timeout with the second form
4969
of the command. The third form is used for customizing the time-stamp
4970
string (@samp{-- %n:%t -- time-stamp -- %M/%d/%y %c:%s --\n} by
4974
@node Startup, Miscellaneous, Logging, Top
4977
This section describes commands which are only useful in the
4978
@file{.screenrc} file, for use at startup.
4981
* echo:: Display a message.
4982
* sleep:: Pause execution of the @file{.screenrc}.
4983
* Startup Message:: Control display of the copyright notice.
4986
@node echo, sleep, , Startup
4988
@deffn Command echo [@samp{-n}] message
4990
The echo command may be used to annoy @code{screen} users with a
4991
'message of the day'. Typically installed in a global screenrc.
4992
The option @samp{-n} may be used to suppress the line feed.
4993
See also @code{sleep}.
4994
Echo is also useful for online checking of environment variables.
4997
@node sleep, Startup Message, echo, Startup
4999
@deffn Command sleep num
5001
This command will pause the execution of a .screenrc file for @var{num}
5002
seconds. Keyboard activity will end the sleep. It may be used to give
5003
users a chance to read the messages output by @code{echo}.
5006
@node Startup Message, , sleep, Startup
5007
@section Startup Message
5008
@deffn Command startup_message state
5010
Select whether you want to see the copyright notice during startup.
5011
Default is @samp{on}, as you probably noticed.
5014
@node Miscellaneous, String Escapes, Startup, Top
5015
@chapter Miscellaneous commands
5017
The commands described here do not fit well under any of the other
5021
* At:: Execute a command at other displays or windows.
5022
* Break:: Send a break signal to the window.
5023
* Debug:: Suppress/allow debugging output.
5024
* License:: Display the disclaimer page.
5025
* Nethack:: Use @code{nethack}-like error messages.
5026
* Nonblock:: Disable flow-control to a display.
5027
* Number:: Change the current window's number.
5028
* Time:: Display the time and load average.
5029
* Verbose:: Display window creation commands.
5030
* Version:: Display the version of @code{screen}.
5031
* Zombie:: Keep dead windows.
5032
* Printcmd:: Set command for VT100 printer port emulation.
5033
* Rendition:: Change text attributes in caption for flagged windows.
5034
* Sorendition:: Change the text highlighting method.
5035
* Attrcolor:: Map attributes to colors.
5036
* Setsid:: Change process group management.
5037
* Eval:: Parse and execute arguments.
5038
* Maxwin:: Set the maximum window number.
5039
* Backtick:: Program a command for a backtick string escape.
5040
* Screen Saver:: Define a screen safer.
5041
* Zmodem:: Define how screen treats zmodem requests.
5042
* Mousetrack:: Set whether screen should track mouse events.
5045
@node At, Break, , Miscellaneous
5047
@deffn Command at [identifier][#|*|%] command [args]
5049
Execute a command at other displays or windows as if it had been entered there.
5050
@code{At} changes the context (the `current window' or `current display'
5051
setting) of the command. If the first parameter describes a non-unique context,
5052
the command will be executed multiple times. If the first parameter is of the
5053
form @samp{@var{identifier}*} then identifier is matched against user names.
5054
The command is executed once for each display of the selected user(s).
5055
If the first parameter is of the form @samp{@var{identifier}%} identifier is
5056
matched against displays. Displays are named after the ttys they attach. The
5057
prefix @samp{/dev/} or @samp{/dev/tty} may be omitted from the identifier.
5058
If @var{identifier} has a @code{#} or nothing appended it is matched against
5059
window numbers and titles. Omitting an identifier in front of the @code{#},
5060
@code{*} or @code{%} character selects all users, displays or windows because
5061
a prefix-match is performed. Note that on the affected display(s) a short
5062
message will describe what happened.
5063
Note that the @code{#} character works as a comment introducer when it is
5064
preceded by whitespace. This can be escaped by prefixing @code{#} with a
5066
Permission is checked for the initiator of the @code{at} command, not for the
5067
owners of the affected display(s).
5069
When matching against windows, the command is executed at least
5070
once per window. Commands that change the internal arrangement of windows
5071
(like @code{other}) may be called again. In shared windows the command will
5072
be repeated for each attached display. Beware, when issuing toggle commands
5074
Some commands (e.g. @code{\*Qprocess}) require
5075
that a display is associated with the target windows. These commands may not
5076
work correctly under @code{at} looping over windows.
5079
@node Break, Debug, At, Miscellaneous
5083
@deffn Command break [duration]
5084
(@kbd{C-a b}, @kbd{C-a C-b})@*
5085
Send a break signal for @var{duration}*0.25 seconds to this window.
5086
For non-Posix systems the time interval is rounded up to full seconds.
5087
Most useful if a character device is attached to the window rather than
5088
a shell process (@pxref{Window Types}). The maximum duration of
5089
a break signal is limited to 15 seconds.
5093
@deffn Command pow_break
5095
Reopen the window's terminal line and send a break condition.
5098
@deffn Command breaktype [tcsendbreak|TIOCSBRK|TCSBRK]
5100
Choose one of the available methods of generating a break signal for
5101
terminal devices. This command should affect the current window only.
5102
But it still behaves identical to @code{defbreaktype}. This will be changed in
5104
Calling @code{breaktype} with no parameter displays the break setting for the
5108
@deffn Command defbreaktype [tcsendbreak|TIOCSBRK|TCSBRK]
5110
Choose one of the available methods of generating a break signal for
5111
terminal devices opened afterwards. The preferred methods are
5112
@code{tcsendbreak} and
5113
@code{TIOCSBRK}. The third, @code{TCSBRK}, blocks the complete @code{screen}
5114
session for the duration of the break, but it may be the only way to
5115
generate long breaks. @code{tcsendbreak} and @code{TIOCSBRK} may or may not
5116
produce long breaks with spikes (e.g. 4 per second). This is not only system
5117
dependent, this also differs between serial board drivers.
5118
Calling @code{defbreaktype} with no parameter displays the current setting.
5121
@node Debug, License, Break, Miscellaneous
5123
@deffn Command debug [on|off]
5125
Turns runtime debugging on or off. If @code{screen} has been compiled with
5126
option @code{-DDEBUG} debugging is available and is turned on per default.
5127
Note that this command only affects debugging output from the main
5128
@samp{SCREEN} process correctly. Debug output from attacher processes can only
5129
be turned off once and forever.
5132
@node License, Nethack, Debug, Miscellaneous
5135
@deffn Command license
5137
Display the disclaimer page. This is done whenever @code{screen} is
5138
started without options, which should be often enough.
5141
@node Nethack, Nonblock, License, Miscellaneous
5143
@deffn Command nethack state
5145
Changes the kind of error messages used by @code{screen}. When you are
5146
familiar with the game @code{nethack}, you may enjoy the nethack-style
5147
messages which will often blur the facts a little, but are much funnier
5148
to read. Anyway, standard messages often tend to be unclear as well.
5150
This option is only available if @code{screen} was compiled with the
5151
NETHACK flag defined (@pxref{Installation}). The default setting is then
5152
determined by the presence of the environment variable
5153
@code{$NETHACKOPTIONS} and the file @code{~/.nethackrc} - if either one is
5154
present, the default is @code{on}.
5157
@node Nonblock, Number, Nethack, Miscellaneous
5159
@deffn Command nonblock [@var{state}|@var{numsecs}]
5160
Tell screen how to deal with user interfaces (displays) that cease to
5161
accept output. This can happen if a user presses ^S or a TCP/modem
5162
connection gets cut but no hangup is received. If nonblock is
5163
@code{off} (this is the default) screen waits until the display
5164
restarts to accept the output. If nonblock is @code{on}, screen
5165
waits until the timeout is reached (@code{on} is treated as 1s). If the
5166
display still doesn't receive characters, screen will consider
5167
it ``blocked'' and stop sending characters to it. If at
5168
some time it restarts to accept characters, screen will unblock
5169
the display and redisplay the updated window contents.
5172
@deffn Command defnonblock @var{state}|@var{numsecs}
5173
Same as the @code{nonblock} command except that the default setting for
5174
displays is changed. Initial setting is @code{off}.
5177
@node Number, Time, Nonblock, Miscellaneous
5180
@deffn Command number [[+|-]@var{n}]
5182
Change the current window's number. If the given number @var{n} is already
5183
used by another window, both windows exchange their numbers. If no argument is
5184
specified, the current window number (and title) is shown. Using either a
5185
plus (`+') or minus (`-') will change the window's number by the relative
5189
@node Time, Verbose, Number, Miscellaneous
5193
@deffn Command time [@var{string}]
5194
(@kbd{C-a t}, @kbd{C-a C-t})@*
5195
Uses the message line to display the time of day, the host name, and the
5196
load averages over 1, 5, and 15 minutes (if this is available on your
5197
system). For window-specific information use @code{info} (@pxref{Info}).
5198
If a @var{string} is specified, it changes the format of the time report
5199
like it is described in the string escapes chapter (@pxref{String Escapes}). Screen uses a default of @samp{%c:%s %M %d %H%? %l%?}.
5202
@node Verbose, Version, Time, Miscellaneous
5204
@deffn Command verbose [on|off]
5205
If verbose is switched on, the command name is echoed, whenever a window
5206
is created (or resurrected from zombie state). Default is off.
5207
Without a parameter, the current setting is shown.
5210
@node Version, Zombie, Verbose, Miscellaneous
5213
@deffn Command version
5215
Display the version and modification date in the message line.
5218
@node Zombie, Printcmd, Version, Miscellaneous
5220
@deffn Command zombie [@var{keys} [onerror] ]
5221
@deffnx Command defzombie [@var{keys}]
5223
Per default windows are removed from the window list as soon as the
5224
windows process (e.g. shell) exits. When a string of two keys is
5225
specified to the zombie command, `dead' windows will remain in the list.
5226
The @code{kill} command may be used to remove the window. Pressing the first key
5227
in the dead window has the same effect. Pressing the second key, however,
5228
screen will attempt to resurrect the window. The process that was initially
5229
running in the window will be launched again. Calling @code{zombie} without
5230
parameters will clear the zombie setting, thus making windows disappear when
5231
the process terminates.
5233
As the zombie setting is affected globally for all windows, this command
5234
should only be called @code{defzombie}. Until we need this as a per window
5235
setting, the commands @code{zombie} and @code{defzombie} are synonymous.
5237
Optionally you can put the word @code{onerror} after the keys. This will
5238
cause screen to monitor exit status of the process running in the window.
5239
If it exits normally ('0'), the window disappears. Any other exit value
5240
causes the window to become a zombie.
5243
@node Printcmd, Rendition, Zombie, Miscellaneous
5245
@deffn Command printcmd [@var{cmd}]
5247
If @var{cmd} is not an empty string, screen will not use the terminal
5248
capabilities @code{po/pf} for printing if it detects an ansi print
5249
sequence @code{ESC [ 5 i}, but pipe the output into @var{cmd}.
5250
This should normally be a command like @samp{lpr} or
5251
@samp{cat > /tmp/scrprint}.
5252
@code{Printcmd} without an argument displays the current setting.
5253
The ansi sequence @code{ESC \} ends printing and closes the pipe.
5255
Warning: Be careful with this command! If other user have write
5256
access to your terminal, they will be able to fire off print commands.
5259
@node Rendition, Sorendition, Printcmd, Miscellaneous
5261
@deffn Command rendition bell | monitor | silence | so @var{attr} [@var{color}]
5263
Change the way screen renders the titles of windows that have monitor
5264
or bell flags set in caption or hardstatus or windowlist.
5266
about string escapes (@pxref{String Escapes}) for the syntax of
5267
the modifiers. The default for monitor is currently @samp{=b} (bold,
5268
active colors), for bell @samp{=ub} (underline, bold and active colors), and
5269
for silence @samp{=u}.
5272
@node Sorendition, Attrcolor, Rendition, Miscellaneous
5273
@section Sorendition
5274
@deffn Command sorendition [@var{attr} [@var{color}]]
5276
This command has been deprecated. Use @code{rendition so} instead.
5279
@node Attrcolor, Setsid, Sorendition, Miscellaneous
5281
@deffn Command attrcolor @var{attrib} [@var{attribute/color-modifier}]
5283
This command can be used to highlight attributes by changing the color of
5284
the text. If the attribute
5286
is in use, the specified attribute/color modifier is also applied. If no
5287
modifier is given, the current one is deleted. See the chapter
5288
about string escapes (@pxref{String Escapes}) for the syntax of
5289
the modifier. @code{Screen} understands two pseudo-attributes, @code{i}
5290
stands for high-intensity foreground color and @code{I} for
5291
high-intensity background color.
5296
@item attrcolor b "R"
5297
Change the color to bright red if bold text is to be printed.
5298
@item attrcolor u "-u b"
5299
Use blue text instead of underline.
5300
@item attrcolor b ".I"
5301
Use bright colors for bold text. Most terminal emulators do this
5303
@item attrcolor i "+b"
5304
Make bright colored text also bold.
5308
@node Setsid, Eval, Attrcolor, Miscellaneous
5310
@deffn Command setsid state
5312
Normally @code{screen} uses different sessions and process groups for
5313
the windows. If setsid is turned @code{off}, this is not done
5314
anymore and all windows will be in the same process group as the
5315
screen backend process. This also breaks job-control, so be careful.
5316
The default is @code{on}, of course. This command is probably useful
5317
only in rare circumstances.
5320
@node Eval, Maxwin, Setsid, Miscellaneous
5322
@deffn Command eval @var{command1} [@var{command2} ...]
5324
Parses and executes each argument as separate command.
5327
@node Maxwin, Backtick, Eval, Miscellaneous
5329
@deffn Command maxwin @var{n}
5331
Set the maximum window number screen will create. Doesn't affect
5332
already existing windows. The number can be increased only when there are no
5336
@node Backtick, Screen Saver, Maxwin, Miscellaneous
5338
@deffn Command backtick @var{id} @var{lifespan} @var{autorefresh} @var{command} [@var{args}]
5339
@deffnx Command backtick @var{id}
5341
Program the backtick command with the numerical id @var{id}.
5342
The output of such a command is used for substitution of the
5343
@code{%`} string escape (@pxref{String Escapes}).
5344
The specified @var{lifespan} is the number
5345
of seconds the output is considered valid. After this time, the
5346
command is run again if a corresponding string escape is encountered.
5347
The @var{autorefresh} parameter triggers an
5348
automatic refresh for caption and hardstatus strings after the
5349
specified number of seconds. Only the last line of output is used
5352
If both the @var{lifespan} and the @var{autorefresh} parameters
5353
are zero, the backtick program is expected to stay in the
5354
background and generate output once in a while.
5355
In this case, the command is executed right away and screen stores
5356
the last line of output. If a new line gets printed screen will
5357
automatically refresh the hardstatus or the captions.
5359
The second form of the command deletes the backtick command
5360
with the numerical id @var{id}.
5363
@node Screen Saver, Zmodem, Backtick, Miscellaneous
5364
@section Screen Saver
5365
@deffn Command idle [@var{timeout} [@var{cmd} @var{args}]]
5367
Sets a command that is run after the specified number of
5368
seconds inactivity is reached. This command will normally
5369
be the @code{blanker} command to create a screen blanker, but
5370
it can be any screen command. If no command is specified,
5371
only the timeout is set. A timeout of zero (ot the special
5372
timeout @code{off}) disables the timer. If no arguments are
5373
given, the current settings are displayed.
5376
@deffn Command blanker
5378
Activate the screen blanker. First the screen is cleared.
5379
If no blanker program is defined, the cursor is turned
5380
off, otherwise, the program is started and it's output is
5381
written to the screen. The screen blanker is killed with
5382
the first keypress, the read key is discarded.
5384
This command is normally used together with the @code{idle}
5388
@deffn Command blankerprg [@var{program args}]
5389
Defines a blanker program. Disables the blanker program if an
5390
empty argument is given. Shows the currently set blanker program if no
5391
arguments are given.
5395
@node Zmodem, , Screen Saver, Miscellaneous
5397
@deffn Command zmodem [off|auto|catch|pass]
5398
@deffnx Command zmodem sendcmd [string]
5399
@deffnx Command zmodem recvcmd [string]
5401
Define zmodem support for @code{screen}. @code{Screen} understands two
5402
different modes when it detects a zmodem request: @code{pass}
5403
and @code{catch}. If the mode is set to @code{pass}, screen will
5404
relay all data to the attacher until the end of the
5405
transmission is reached. In @code{catch} mode screen acts as a
5406
zmodem endpoint and starts the corresponding rz/sz commands.
5407
If the mode is set to @code{auto}, screen will use @code{catch} if
5408
the window is a tty (e.g. a serial line), otherwise it
5409
will use @code{pass}.
5411
You can define the templates screen uses in @code{catch} mode
5412
via the second and the third form.
5414
Note also that this is an experimental feature.
5417
@node String Escapes, Environment, Miscellaneous, Top
5418
@chapter String Escapes
5419
@cindex string escapes
5420
Screen provides an escape mechanism to insert information like the
5421
current time into messages or file names. The escape character
5422
is @code{%} with one exception: inside of a window's hardstatus
5423
@code{^%} (@code{^E}) is used instead.
5425
Here is the full list of supported escapes:
5429
the escape character itself
5431
either @code{am} or @code{pm}
5433
either @code{AM} or @code{PM}
5435
current time @code{HH:MM} in 24h format
5437
current time @code{HH:MM} in 12h format
5443
sets %? to true if the escape character has been pressed.
5445
flags of the window. @xref{Windows}, for meanings of the various flags.
5447
sets %? to true if the window has the focus
5449
hardstatus of the window
5451
hostname of the system
5453
current load of the system
5461
sets %? to true if the current region is in copy/paste mode
5469
all other users on this window
5471
all window numbers and names. With @code{-} qualifier: up to the current
5472
window; with @code{+} qualifier: starting with the window after the current
5475
all window numbers and names except the current one
5477
last two digits of the year number
5481
the part to the next @code{%?} is displayed only if a @code{%} escape
5482
inside the part expands to a non-empty string
5484
else part of @code{%?}
5486
pad the string to the display's width (like TeX's hfill). If a
5487
number is specified, pad to the percentage of the window's width.
5488
A @code{0} qualifier tells screen to treat the number as absolute position.
5489
You can specify to pad relative to the last absolute pad position
5490
by adding a @code{+} qualifier or to pad relative to the right margin
5491
by using @code{-}. The padding truncates the string if the specified
5492
position lies before the current position. Add the @code{L} qualifier
5495
same as @code{%=} but just do truncation, do not fill with spaces
5497
mark the current text position for the next truncation. When
5498
screen needs to do truncation, it tries to do it in a way that
5499
the marked position gets moved to the specified percentage of
5500
the output area. (The area starts from the last absolute pad
5501
position and ends with the position specified by the truncation
5502
operator.) The @code{L} qualifier tells screen to mark the truncated
5503
parts with @samp{...}.
5505
attribute/color modifier string terminated by the next @code{@}}
5507
Substitute with the output of a `backtick' command. The length
5508
qualifier is misused to identify one of the commands. @xref{Backtick}.
5510
The @code{c} and @code{C} escape may be qualified with a @code{0} to
5512
zero instead of space as fill character.
5514
@code{=} escapes understand
5515
a length qualifier (e.g. @code{%3n}), @code{D} and @code{M} can be
5516
prefixed with @code{L} to generate long names, @code{w} and
5517
@code{W} also show the window flags if @code{L} is given.
5519
An attribute/color modifier is is used to change the attributes or the
5520
color settings. Its format
5521
is @samp{[attribute modifier] [color description]}. The attribute modifier
5522
must be prefixed by a change type indicator if it can be confused with
5523
a color description. The following change types are known:
5526
add the specified set to the current attributes
5528
remove the set from the current attributes
5530
invert the set in the current attributes
5532
change the current attributes to the specified set
5534
The attribute set can either be specified as a hexadecimal number or
5535
a combination of the following letters:
5550
Colors are coded either as a hexadecimal number or two letters specifying
5551
the desired background and foreground color (in that order). The following
5573
leave color unchanged
5575
The capitalized versions of the letter specify bright colors. You can also
5576
use the pseudo-color @samp{i} to set just the brightness and leave the color
5579
A one digit/letter color description is treated as foreground or
5580
background color dependent on the current attributes: if reverse mode is
5581
set, the background color is changed instead of the foreground color.
5582
If you don't like this, prefix the color with a @samp{.}. If you want
5583
the same behavior for two-letter color descriptions, also prefix them
5586
As a special case, @samp{%@{-@}} restores the attributes and colors that
5587
were set before the last change was made (i.e. pops one level of the
5588
color-change stack).
5594
set color to bright green
5598
clear all attributes, write in default color on yellow background.
5599
@item %-Lw%@{= BW@}%50>%n%f* %t%@{-@}%+Lw%<
5600
The available windows centered at the current win dow and truncated to
5601
the available width. The current window is displayed white on blue.
5602
This can be used with @samp{hardstatus alwayslastline}.
5603
@item %?%F%@{.R.@}%?%3n %t%? [%h]%?
5604
The window number and title and the window's hardstatus, if one is set.
5605
Also use a red background if this is the active focus.
5606
Useful for @samp{caption string}.
5610
@node Environment, Files, String Escapes, Top
5611
@chapter Environment Variables
5616
Number of columns on the terminal (overrides termcap entry).
5619
Directory in which to look for .screenrc.
5622
Number of lines on the terminal (overrides termcap entry).
5625
Screen lock program.
5627
@item NETHACKOPTIONS
5628
Turns on @code{nethack} option.
5631
Used for locating programs to run.
5634
For customizing a terminal's @code{TERMCAP} value.
5637
Alternate socket directory.
5640
Alternate user screenrc file.
5643
Default shell program for opening windows (default @file{/bin/sh}).
5646
Alternate socket name. If @code{screen} is invoked, and the environment variable
5647
@code{STY} is set, then it creates only a window in the running @code{screen}
5648
session rather than starting a new session.
5651
Alternate system screenrc file.
5657
Terminal description.
5660
Window number of a window (at creation time).
5663
@node Files, Credits, Environment, Top
5664
@chapter Files Referenced
5668
@item .../screen-4.?.??/etc/screenrc
5669
@itemx .../screen-4.?.??/etc/etcscreenrc
5670
Examples in the @code{screen} distribution package for private and
5671
global initialization files.
5673
@item @code{$SYSSCREENRC}
5674
@itemx /etc/screenrc
5675
@code{screen} initialization commands
5677
@item @code{$SCREENRC}
5678
@itemx @code{$HOME}/.iscreenrc
5679
@itemx @code{$HOME}/.screenrc
5680
Read in after /etc/screenrc
5682
@item @code{$SCREENDIR}/S-@var{login}
5684
@item /var/run/screen/S-@var{login}
5685
Socket directories (default)
5687
@item /usr/tmp/screens/S-@var{login}
5688
Alternate socket directories.
5690
@item @var{socket directory}/.termcap
5691
Written by the @code{dumptermcap} command
5693
@item /usr/tmp/screens/screen-exchange or
5694
@itemx /tmp/screen-exchange
5695
@code{screen} interprocess communication buffer
5697
@item hardcopy.[0-9]
5698
Screen images created by the hardcopy command
5700
@item screenlog.[0-9]
5701
Output log files created by the log command
5703
@item /usr/lib/terminfo/?/* or
5705
Terminal capability databases
5710
@item @code{$LOCKPRG}
5711
Program for locking the terminal.
5714
@node Credits, Bugs, Files, Top
5721
Originally created by Oliver Laumann, this latest version was
5722
produced by Juergen Weigert, Michael Schroeder, Micah Cowan and
5723
Sadrul Habib Chowdhury.
5730
Ken Beal (kbeal@@amber.ssd.csd.harris.com),
5731
Rudolf Koenig (rfkoenig@@informatik.uni-erlangen.de),
5732
Toerless Eckert (eckert@@informatik.uni-erlangen.de),
5733
Wayne Davison (davison@@borland.com),
5734
Patrick Wolfe (pat@@kai.com, kailand!pat),
5735
Bart Schaefer (schaefer@@cse.ogi.edu),
5736
Nathan Glasser (nathan@@brokaw.lcs.mit.edu),
5737
Larry W. Virden (lvirden@@cas.org),
5738
Howard Chu (hyc@@hanauma.jpl.nasa.gov),
5739
Tim MacKenzie (tym@@dibbler.cs.monash.edu.au),
5740
Markku Jarvinen (mta@@@{cc,cs,ee@}.tut.fi),
5741
Marc Boucher (marc@@CAM.ORG),
5742
Doug Siebert (dsiebert@@isca.uiowa.edu),
5743
Ken Stillson (stillson@@tsfsrv.mitre.org),
5744
Ian Frechett (frechett@@spot.Colorado.EDU),
5745
Brian Koehmstedt (bpk@@gnu.ai.mit.edu),
5746
Don Smith (djs6015@@ultb.isc.rit.edu),
5747
Frank van der Linden (vdlinden@@fwi.uva.nl),
5748
Martin Schweikert (schweik@@cpp.ob.open.de),
5749
David Vrona (dave@@sashimi.lcu.com),
5750
E. Tye McQueen (tye%spillman.UUCP@@uunet.uu.net),
5751
Matthew Green (mrg@@eterna.com.au),
5752
Christopher Williams (cgw@@pobox.com),
5753
Matt Mosley (mattm@@access.digex.net),
5754
Gregory Neil Shapiro (gshapiro@@wpi.WPI.EDU),
5755
Jason Merrill (jason@@jarthur.Claremont.EDU),
5756
Johannes Zellner (johannes@@zellner.org),
5757
Pablo Averbuj (pablo@@averbuj.com).
5764
This manual describes version @value{version} of the @code{screen}
5765
program. Its roots are a merge of a custom version 2.3PR7 by Wayne
5766
Davison and several enhancements to Oliver Laumann's version 2.0.
5767
Note that all versions numbered 2.x are copyright by Oliver Laumann.
5769
See also @xref{Availability}.
5771
@node Bugs, Installation, Credits, Top
5775
Just like any other significant piece of software, @code{screen} has a
5776
few bugs and missing features. Please send in a bug report if you have
5777
found a bug not mentioned here.
5780
* Known Bugs:: Problems we know about.
5781
* Reporting Bugs:: How to contact the maintainers.
5782
* Availability:: Where to find the latest screen version.
5785
@node Known Bugs, Reporting Bugs, , Bugs
5790
@samp{dm} (delete mode) and @samp{xs} are not handled correctly (they
5791
are ignored). @samp{xn} is treated as a magic-margin indicator.
5794
@code{screen} has no clue about double-high or double-wide characters.
5795
But this is the only area where @code{vttest} is allowed to fail.
5798
It is not possible to change the environment variable @code{$TERMCAP}
5799
when reattaching under a different terminal type.
5802
The support of terminfo based systems is very limited. Adding extra
5803
capabilities to @code{$TERMCAP} may not have any effects.
5806
@code{screen} does not make use of hardware tabs.
5809
@code{screen} must be installed setuid root on most systems
5810
in order to be able to
5811
correctly change the owner of the tty device file for each window.
5812
Special permission may also be required to write the file
5813
@file{/var/run/utmp}.
5816
Entries in @file{/var/run/utmp} are not removed when @code{screen} is killed
5817
with SIGKILL. This will cause some programs (like "w" or "rwho") to
5818
advertise that a user is logged on who really isn't.
5821
@code{screen} may give a strange warning when your tty has no utmp
5825
When the modem line was hung up, @code{screen} may not automatically detach
5826
(or quit) unless the device driver sends a HANGUP signal. To detach such a
5827
@code{screen} session use the -D or -d command line option.
5830
If a password is set, the command line options -d and -D still detach a
5831
session without asking.
5834
Both @code{breaktype} and @code{defbreaktype} change the break generating
5835
method used by all terminal devices. The first should change a window
5836
specific setting, where the latter should change only the default for new
5840
When attaching to a multiuser session, the user's @file{.screenrc} file is not
5841
sourced. Each users personal settings have to be included in the
5842
@file{.screenrc} file from which the session is booted, or have to be
5846
A weird imagination is most useful to gain full advantage of all the
5850
@node Reporting Bugs, Availability, Known Bugs, Bugs
5851
@section Reporting Bugs
5854
If you find a bug in @code{Screen}, please send electronic mail to
5855
@w{@samp{screen@@uni-erlangen.de}}, and also to
5856
@w{@samp{bug-gnu-utils@@prep.ai.mit.edu}}. Include the version number
5857
of @code{Screen} which you are using. Also include in your message the
5858
hardware and operating system, the compiler used to compile, a
5859
description of the bug behavior, and the conditions that triggered the
5860
bug. Please recompile @code{screen} with the @samp{-DDEBUG} options
5861
enabled, reproduce the bug, and have a look at the debug output written to
5862
the directory @file{/tmp/debug}. If necessary quote suspect passages from the
5863
debug output and show the contents of your @file{config.h} if it matters.
5865
@node Availability, , Reporting Bugs, Bugs
5866
@section Availability
5867
@cindex availability
5869
@code{Screen} is available under the @code{GNU} copyleft.
5871
The latest official release of @code{screen} available via anonymous
5872
ftp from @samp{prep.ai.mit.edu}, @samp{nic.funet.fi} or any other
5873
@code{GNU} distribution site. The home site of
5874
@code{screen} is @samp{ftp.uni-erlangen.de
5875
(131.188.3.71)}, in the directory @file{pub/utilities/screen}.
5876
The subdirectory @samp{private} contains the latest beta testing release.
5877
If you want to help, send a note to screen@@uni-erlangen.de.
5879
@node Installation, Concept Index, Bugs, Top
5880
@chapter Installation
5881
@cindex installation
5883
Since @code{screen} uses pseudo-ttys, the select system call, and
5884
UNIX-domain sockets/named pipes, it will not run under a system that
5885
does not include these features of 4.2 and 4.3 BSD UNIX.
5888
* Socket Directory:: Where screen stores its handle.
5889
* Compiling Screen::
5892
@node Socket Directory,
5893
@section Socket Directory
5894
@cindex socket directory
5896
The socket directory defaults either to @file{$HOME/.screen} or simply to
5897
@file{/tmp/screens} or preferably to @file{/var/run/screen} chosen at
5898
compile-time. If @code{screen} is installed
5899
setuid root, then the administrator should compile screen with an
5900
adequate (not NFS mounted) @code{SOCKDIR}. If @code{screen} is not
5901
running setuid-root, the user can specify any mode 700 directory in the
5902
environment variable @code{$SCREENDIR}.
5904
@node Compiling Screen, , Socket Directory, Installation
5905
@section Compiling Screen
5906
@cindex compiling screen
5908
To compile and install screen:
5910
The @code{screen} package comes with a @code{GNU Autoconf} configuration
5911
script. Before you compile the package run
5913
@center @code{sh ./configure}
5915
This will create a @file{config.h} and @file{Makefile} for your machine.
5916
If @code{configure} fails for some reason, then look at the examples and
5917
comments found in the @file{Makefile.in} and @file{config.h.in} templates.
5918
Rename @file{config.status} to @file{config.status.@var{machine}} when
5919
you want to keep configuration data for multiple architectures. Running
5920
@code{sh ./config.status.@var{machine}} recreates your configuration
5921
significantly faster than rerunning @code{configure}.
5923
Read through the "User Configuration" section of @file{config.h}, and verify
5924
that it suits your needs.
5925
A comment near the top of this section explains why it's best to
5926
install screen setuid to root.
5927
Check for the place for the global @file{screenrc}-file and for the socket
5930
Check the compiler used in @file{Makefile}, the prefix path where to install
5931
@code{screen}. Then run
5935
If @code{make} fails to produce one of the files @file{term.h}, @file{comm.h}
5936
or @file{tty.c}, then use @code{@var{filename.x}.dist} instead.
5937
For additional information about installation of @code{screen} refer to the
5938
file @file{INSTALLATION}, coming with this package.
5940
@node Concept Index, Command Index, Installation, Top
5941
@unnumbered Concept Index
5945
@node Command Index, Keystroke Index, Concept Index, Top
5946
@unnumbered Command Index
5948
This is a list of all the commands supported by @code{screen}.
5952
@node Keystroke Index, , Command Index, Top
5953
@unnumbered Keystroke Index
5955
This is a list of the default key bindings.
5957
The leading escape character (@pxref{Command Character}) has been omitted
5958
from the key sequences, since it is the same for all bindings.