~ubuntu-branches/debian/stretch/screen/stretch

« back to all changes in this revision

Viewing changes to .pc/46fix-keybinding-typo-in-manpage.patch/doc/screen.texinfo

  • Committer: Package Import Robot
  • Author(s): Axel Beckert
  • Date: 2014-07-26 14:05:20 UTC
  • mfrom: (7.1.4 experimental)
  • Revision ID: package-import@ubuntu.com-20140726140520-68d50x42gevcjy5e
Tags: 4.2.1-2
* Upload to unstable again
* Enable parallel building

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
\input texinfo @c -*-texinfo-*-
2
 
@c %**start of header
3
 
@c vi:set wm=5
4
 
@setfilename screen.info
5
 
@settitle Screen User's Manual
6
 
@dircategory General Commands
7
 
@finalout
8
 
@setchapternewpage odd
9
 
@c %**end of header
10
 
@set version 4.1.0
11
 
 
12
 
@direntry
13
 
* Screen: (screen).             Full-screen window manager.
14
 
@end direntry
15
 
 
16
 
@c For examples, use a literal escape in info.
17
 
@ifinfo
18
 
@set esc ^[
19
 
@end ifinfo
20
 
@iftex
21
 
@set esc <ESC>
22
 
@end iftex
23
 
 
24
 
@ifinfo
25
 
This file documents the @code{Screen} virtual terminal manager.
26
 
 
27
 
Copyright (c) 1993-2003 Free Software Foundation, Inc.
28
 
 
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.
32
 
 
33
 
@ignore
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).
38
 
 
39
 
@end ignore
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.
44
 
 
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
48
 
by the Foundation.
49
 
@end ifinfo
50
 
 
51
 
@titlepage
52
 
@title Screen
53
 
@subtitle The virtual terminal manager
54
 
@subtitle for Version @value{version}
55
 
@subtitle Aug 2003
56
 
 
57
 
@page
58
 
@vskip 0pt plus 1filll
59
 
Copyright @copyright{} 1993-2003 Free Software Foundation, Inc.
60
 
 
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.
64
 
 
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.
69
 
 
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
73
 
by the Foundation.
74
 
@end titlepage
75
 
 
76
 
@shortcontents
77
 
@contents
78
 
 
79
 
@node Top, Overview, (dir), (dir)
80
 
 
81
 
@ifinfo
82
 
@top Screen
83
 
This file documents the @code{Screen} virtual terminal manager, version
84
 
@value{version}.
85
 
@end ifinfo
86
 
 
87
 
@menu
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.
117
 
@end menu
118
 
 
119
 
@node Overview, Getting Started, Top, Top
120
 
@chapter Overview
121
 
@cindex overview
122
 
 
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.
131
 
 
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.
142
 
 
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,
146
 
@code{screen} exits.
147
 
 
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.
156
 
 
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.
161
 
 
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:
170
 
 
171
 
@example
172
 
screen emacs prog.c
173
 
@end example
174
 
 
175
 
@noindent
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.
184
 
 
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}.
192
 
 
193
 
@node Getting Started, Invoking Screen, Overview, Top
194
 
@chapter Getting Started
195
 
@cindex introduction
196
 
 
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.)
201
 
 
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
208
 
@file{.screenrc}.
209
 
 
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
217
 
@code{screen}.
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
223
 
capability.
224
 
 
225
 
@xref{Special Capabilities}, for more information about telling
226
 
@code{screen} what kind of terminal you have.
227
 
 
228
 
@node Invoking Screen, Customization, Getting Started, Top
229
 
@chapter Invoking @code{Screen}
230
 
@cindex invoking
231
 
@cindex options
232
 
@cindex command line options
233
 
 
234
 
Screen has the following command-line options:
235
 
 
236
 
@table @samp
237
 
@item -a
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.
241
 
 
242
 
@item -A
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}).
247
 
 
248
 
@item -c @var{file}
249
 
Use @var{file} as the user's configuration file instead of the default
250
 
of @file{$HOME/.screenrc}.
251
 
 
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:
260
 
 
261
 
@table @code
262
 
@item -d -r
263
 
Reattach a session and if necessary detach it first.
264
 
@item -d -R   
265
 
Reattach a session and if necessary detach  or  even create it first.
266
 
@item -d -RR  
267
 
Reattach a session and if necessary detach or create it.
268
 
Use the first session if more than one session is available.
269
 
@item -D -r   
270
 
Reattach a session. If necessary detach  and  logout remotely first.
271
 
@item -D -R   
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.
276
 
@item -D -RR  
277
 
Attach here and now. Whatever that  means, just do it.
278
 
@end table
279
 
 
280
 
@emph{Note}: It is a good idea to check the status of your sessions
281
 
with @code{screen -list} before using this option.
282
 
 
283
 
@item -e @var{xy}
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}).
294
 
 
295
 
@item -f
296
 
@itemx -fn
297
 
@itemx -fa
298
 
Set flow-control to on, off, or automatic switching mode, respectively.
299
 
This option is equivalent to the @code{defflow} command (@pxref{Flow
300
 
Control}).
301
 
 
302
 
@item -h @var{num}
303
 
Set the history scrollback buffer to be @var{num} lines high.
304
 
Equivalent to the @code{defscrollback} command (@pxref{Copy}).
305
 
 
306
 
@item -i
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.
311
 
 
312
 
@item -l
313
 
@itemx -ln
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}).
316
 
 
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.
332
 
 
333
 
@item -L
334
 
Tell @code{screen} to turn on automatic output logging for the
335
 
windows.
336
 
 
337
 
@item -m
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:
343
 
@table @code
344
 
@item -d -m
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
347
 
scripts.
348
 
@item -D -m
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.
351
 
@end table
352
 
 
353
 
@item -O
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.
358
 
 
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.
367
 
 
368
 
@item -q
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.
377
 
 
378
 
@item -Q
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
383
 
a non-zero status.
384
 
 
385
 
The commands that can be queried now are:
386
 
 @code{echo}
387
 
 @code{info}
388
 
 @code{lastmsg}
389
 
 @code{number}
390
 
 @code{select}
391
 
 @code{time}
392
 
 @code{title}
393
 
 @code{windows}
394
 
 
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 
399
 
the session name
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.
405
 
 
406
 
@item -R
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
412
 
that case).
413
 
For combinations with the 
414
 
@samp{-D}/@samp{-d} option see there.
415
 
 
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}).
421
 
 
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}).
428
 
 
429
 
@item -t @var{name}
430
 
Set the title (name) for the default shell or specified program.
431
 
This option is equivalent to the @code{shelltitle} command
432
 
(@pxref{Shell}).
433
 
 
434
 
@item -T @var{term}
435
 
Set the $TERM enviroment varible using the spcified @emph{term} as 
436
 
opposed to the defualt setting of @code{screen}.
437
 
 
438
 
@item -U
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}.
442
 
 
443
 
@item -v
444
 
Print the version number.
445
 
 
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.
452
 
 
453
 
@item -x
454
 
Attach to a session which is already attached elsewhere (multi-display
455
 
mode). 
456
 
@code{Screen} refuses to attach from within itself. 
457
 
But when cascading multiple screens, loops are not detected; take care.
458
 
 
459
 
 
460
 
@item -X
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.
466
 
 
467
 
@end table
468
 
 
469
 
@node Customization, Commands, Invoking Screen, Top
470
 
@chapter Customizing @code{Screen}
471
 
@cindex customization
472
 
 
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.
476
 
 
477
 
@menu
478
 
* Startup Files::               The @file{.screenrc} file.
479
 
* Source::                      Read commands from a file.
480
 
* Colon::                       Entering customization commands interactively.
481
 
@end menu
482
 
 
483
 
@node Startup Files, Source,  , Customization
484
 
@section The @file{.screenrc} file
485
 
@cindex .screenrc
486
 
@cindex screenrc
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 
490
 
following ways:
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.
509
 
 
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.
513
 
 
514
 
@node Source, Colon, Startup Files, Customization
515
 
@section Source
516
 
@deffn Command source file
517
 
(none)@*
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.
524
 
 
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.
528
 
@end deffn
529
 
 
530
 
@node Colon,  , Source, Customization
531
 
@section Colon
532
 
Customization can also be done online, with this command:
533
 
 
534
 
@kindex :
535
 
@deffn Command colon
536
 
(@kbd{C-a :})@* 
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}).
544
 
@end deffn
545
 
 
546
 
@node Commands, New Window, Customization, Top
547
 
@chapter Commands
548
 
 
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.
556
 
 
557
 
In this manual, a command definition looks like this:
558
 
 
559
 
@table @asis
560
 
@item -- Command: command [-n] ARG1 [ARG2] @dots{}
561
 
(@var{keybindings})@*
562
 
This command does something, but I can't remember what.
563
 
@end table
564
 
 
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.
568
 
 
569
 
@menu
570
 
* Default Key Bindings::        @code{screen} keyboard commands.
571
 
* Command Summary::             List of all commands.
572
 
@end menu
573
 
 
574
 
@node Default Key Bindings, Command Summary,  , Commands
575
 
@section Default Key Bindings
576
 
 
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
582
 
a window.
583
 
 
584
 
The following table shows the default key bindings:
585
 
 
586
 
@table @asis
587
 
@item @kbd{C-a '}
588
 
(select)@*
589
 
Prompt for a window identifier and switch.
590
 
@xref{Selecting}.
591
 
 
592
 
@item @kbd{C-a "}
593
 
(windowlist -b)@*
594
 
Present a list of all windows for selection.
595
 
@xref{Selecting}.
596
 
 
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.
600
 
@xref{Selecting}.
601
 
 
602
 
@item @kbd{C-a @key{Tab}}
603
 
(focus)@*
604
 
Switch the input focus to the next region.  @xref{Regions}.
605
 
 
606
 
@item @kbd{C-a C-a}
607
 
(other)@*
608
 
Toggle to the window displayed previously.  If this window does no 
609
 
longer exist, @code{other} has the same effect as @code{next}.
610
 
@xref{Selecting}.
611
 
 
612
 
@item @kbd{C-a a}
613
 
(meta)@*
614
 
Send the command character (C-a) to window. See @code{escape} command.
615
 
@xref{Command Character}. 
616
 
 
617
 
@item @kbd{C-a A}
618
 
(title)@*
619
 
Allow the user to enter a title for the current window.
620
 
@xref{Naming Windows}.
621
 
 
622
 
@item @kbd{C-a b}
623
 
@itemx @kbd{C-a C-b}
624
 
(break)@*
625
 
Send a break to the tty.
626
 
@xref{Break}.
627
 
 
628
 
@item @kbd{C-a B}
629
 
(pow_break)@*
630
 
Close and reopen the tty-line.
631
 
@xref{Break}.
632
 
 
633
 
@item @kbd{C-a c}
634
 
@itemx @kbd{C-a C-c}
635
 
(screen)@*
636
 
Create a new window with a shell and switch to that window.
637
 
@xref{Screen Command}.
638
 
 
639
 
@item @kbd{C-a C}
640
 
(clear)@*
641
 
Clear the screen.  @xref{Clear}.
642
 
 
643
 
@item @kbd{C-a d}
644
 
@itemx @kbd{C-a C-d}
645
 
(detach)@*
646
 
Detach @code{screen} from this terminal.  @xref{Detach}.
647
 
 
648
 
@item @kbd{C-a D D}
649
 
(pow_detach)@*
650
 
Detach and logout.  @xref{Power Detach}.
651
 
 
652
 
@item @kbd{C-a f}
653
 
@itemx @kbd{C-a C-f}
654
 
(flow)@*
655
 
Cycle flow among @samp{on}, @samp{off} or @samp{auto}.  @xref{Flow}.
656
 
 
657
 
@item @kbd{C-a F}
658
 
(fit)@*
659
 
Resize the window to the current region size.  @xref{Fit}.
660
 
 
661
 
@item @kbd{C-a C-g}
662
 
(vbell)@*
663
 
Toggle visual bell mode.  @xref{Bell}.
664
 
 
665
 
@item @kbd{C-a h}
666
 
(hardcopy)@*
667
 
Write a hardcopy of the current window to the file ``hardcopy.@var{n}''.
668
 
@xref{Hardcopy}.
669
 
 
670
 
@item @kbd{C-a H}
671
 
(log)@* 
672
 
Toggle logging of the current window to the file ``screenlog.@var{n}''.
673
 
@xref{Log}.
674
 
 
675
 
@item @kbd{C-a i}
676
 
@itemx @kbd{C-a C-i}
677
 
(info)@*
678
 
Show info about the current window.  @xref{Info}.
679
 
 
680
 
@item @kbd{C-a k}
681
 
@itemx @kbd{C-a C-k}
682
 
(kill)@*
683
 
Destroy the current window.  @xref{Kill}.
684
 
 
685
 
@item @kbd{C-a l}
686
 
@itemx @kbd{C-a C-l}
687
 
(redisplay)@*
688
 
Fully refresh the current window.  @xref{Redisplay}.
689
 
 
690
 
@item @kbd{C-a L}
691
 
(login)@*
692
 
Toggle the current window's login state.  @xref{Login}.
693
 
 
694
 
@item @kbd{C-a m}
695
 
@itemx @kbd{C-a C-m}
696
 
(lastmsg)@*
697
 
Repeat the last message displayed in the message line.
698
 
@xref{Last Message}.
699
 
 
700
 
@item @kbd{C-a M}
701
 
(monitor)
702
 
Toggle monitoring of the current window.  @xref{Monitor}.
703
 
 
704
 
@item @kbd{C-a @key{SPC}}
705
 
@itemx @kbd{C-a n}
706
 
@itemx @kbd{C-a C-n}
707
 
(next)@*
708
 
Switch to the next window.  @xref{Selecting}.
709
 
 
710
 
@item @kbd{C-a N}
711
 
(number)@*
712
 
Show the number (and title) of the current window.  @xref{Number}.
713
 
 
714
 
@item @kbd{C-a p}
715
 
@itemx @kbd{C-a C-p}
716
 
@itemx @kbd{C-a C-h}
717
 
@itemx @kbd{C-a @key{BackSpace}}
718
 
(prev)@*
719
 
Switch to the previous window (opposite of @kbd{C-a n}).
720
 
@xref{Selecting}.
721
 
 
722
 
@item @kbd{C-a q}
723
 
@itemx @kbd{C-a C-q}
724
 
(xon)@*
725
 
Send a ^Q (ASCII XON) to the current window.  @xref{XON/XOFF}.
726
 
 
727
 
@item @kbd{C-a Q}
728
 
(only)@*
729
 
Delete all regions but the current one.  @xref{Regions}.
730
 
 
731
 
@item @kbd{C-a r}
732
 
@itemx @kbd{C-a C-r}
733
 
(wrap)@*
734
 
Toggle the current window's line-wrap setting (turn the current window's
735
 
automatic margins on or off).  @xref{Wrap}.
736
 
 
737
 
@item @kbd{C-a s}
738
 
@itemx @kbd{C-a C-s}
739
 
(xoff)@*
740
 
Send a ^S (ASCII XOFF) to the current window.  @xref{XON/XOFF}.
741
 
 
742
 
@item @kbd{C-a S}
743
 
(split)@*
744
 
Split the current region horizontally into two new ones.  @xref{Regions}.
745
 
 
746
 
@item @kbd{C-a t}
747
 
@itemx @kbd{C-a C-t}
748
 
(time)@*
749
 
Show the load average and xref.  @xref{Time}.
750
 
 
751
 
@item @kbd{C-a v}
752
 
(version)@*
753
 
Display the version and compilation date.  @xref{Version}.
754
 
 
755
 
@item @kbd{C-a C-v}
756
 
(digraph)@*
757
 
Enter digraph.  @xref{Digraph}.
758
 
 
759
 
@item @kbd{C-a w}
760
 
@itemx @kbd{C-a C-w}
761
 
(windows)@*
762
 
Show a list of active windows.  @xref{Windows}.
763
 
 
764
 
@item @kbd{C-a W}
765
 
(width)@*
766
 
Toggle between 80 and 132 columns.  @xref{Window Size}.
767
 
 
768
 
@item @kbd{C-a x}
769
 
@itemx @kbd{C-a C-x}
770
 
(lockscreen)@*
771
 
Lock your terminal.  @xref{Lock}.
772
 
 
773
 
@item @kbd{C-a X}
774
 
(remove)@*
775
 
Kill the current region.  @xref{Regions}.
776
 
 
777
 
@item @kbd{C-a z}
778
 
@itemx @kbd{C-a C-z}
779
 
(suspend)@*
780
 
Suspend @code{screen}.  @xref{Suspend}.
781
 
 
782
 
@item @kbd{C-a Z}
783
 
(reset)@*
784
 
Reset the virtual terminal to its ``power-on'' values.  
785
 
@xref{Reset}.
786
 
 
787
 
@item @kbd{C-a .}
788
 
(dumptermcap)@*
789
 
Write out a @file{.termcap} file.  @xref{Dump Termcap}.
790
 
 
791
 
@item @kbd{C-a ?}
792
 
(help)@*
793
 
Show key bindings.  @xref{Help}.
794
 
 
795
 
@item @kbd{C-a C-\}
796
 
(quit)@*
797
 
Kill all windows and terminate @code{screen}.  @xref{Quit}.
798
 
 
799
 
@item @kbd{C-a :}
800
 
(colon)@*
801
 
Enter a command line.  @xref{Colon}.
802
 
 
803
 
@item @kbd{C-a [}
804
 
@itemx @kbd{C-a C-[}
805
 
@itemx @kbd{C-a @key{ESC}}
806
 
(copy)@*
807
 
Enter copy/scrollback mode.  @xref{Copy}.
808
 
 
809
 
@item @kbd{C-a ]}
810
 
@itemx @kbd{C-a C-]}
811
 
(paste .)@*
812
 
Write the contents of the paste buffer to the stdin queue of the
813
 
current window.  @xref{Paste}.
814
 
 
815
 
@item @kbd{C-a @{}
816
 
@itemx @kbd{C-a @}}
817
 
(history)@*
818
 
Copy and paste a previous (command) line.  @xref{History}.
819
 
 
820
 
@item @kbd{C-a >}
821
 
(writebuf)@*
822
 
Write the paste buffer out to the screen-exchange file.
823
 
@xref{Screen Exchange}.
824
 
 
825
 
@item @kbd{C-a <}
826
 
(readbuf)@*
827
 
Read the screen-exchange file into the paste buffer.
828
 
@xref{Screen Exchange}.
829
 
 
830
 
@item @kbd{C-a =}
831
 
(removebuf)@*
832
 
Delete the screen-exchange file.  @xref{Screen Exchange}.
833
 
 
834
 
@item @kbd{C-a _}
835
 
(silence)@*
836
 
Start/stop monitoring the current window for inactivity. @xref{Monitor}.
837
 
 
838
 
@item @kbd{C-a |}
839
 
(split -v)@*
840
 
Split the current region vertically into two new ones.  @xref{Regions}.
841
 
 
842
 
@item @kbd{C-a ,}
843
 
(license)@*
844
 
Show the copyright page.  @xref{License}.
845
 
 
846
 
@item @kbd{C-a *}
847
 
(displays)@*
848
 
Show the listing of attached displays.  @xref{Displays}.
849
 
@end table
850
 
 
851
 
@node Command Summary,  , Default Key Bindings, Commands
852
 
@section Command Summary
853
 
@cindex command summary 
854
 
 
855
 
@table @code
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}.
892
 
@item blanker
893
 
Blank the screen.  @xref{Screen Saver}.
894
 
@item blankerprg
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}.
912
 
@item clear
913
 
Clear the window screen.  @xref{Clear}.
914
 
@item colon
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}.
922
 
@item copy
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}.
980
 
@item detach [-h]
981
 
Disconnect @code{screen} from the terminal.  @xref{Detach}.
982
 
@item digraph [@var{preset} [@var{unicode-value}]]
983
 
Enter a digraph sequence.  @xref{Digraph}.
984
 
@item dinfo
985
 
Display terminal information.  @xref{Info}.
986
 
@item displays
987
 
List currently active user interfaces. @xref{Displays}.
988
 
@item dumptermcap
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}.
1000
 
@item fit
1001
 
Change window size to current display size.  @xref{Window Size}.
1002
 
@item flow [@var{fstate}]
1003
 
Set flow control behavior.  @xref{Flow}.
1004
 
@item focus
1005
 
Move focus to next region.  @xref{Regions}.
1006
 
@item focusminsize
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}.
1024
 
@item history
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}.
1032
 
@item info
1033
 
Display window settings.  @xref{Info}.
1034
 
@item ins_reg [@var{key}]
1035
 
Removed, use @code{paste} instead.  @xref{Registers}.
1036
 
@item kill
1037
 
Destroy the current window.  @xref{Kill}.
1038
 
@item lastmsg
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}.
1044
 
@item layout next
1045
 
Select the next layout.  @xref{Layout}.
1046
 
@item layout prev
1047
 
Select the previous layout.  @xref{Layout}.
1048
 
@item layout select [@var{n}|@var{title}]
1049
 
Jump to a layout.  @xref{Layout}.
1050
 
@item layout show
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}.
1064
 
@item license
1065
 
Display licensing information.  @xref{Startup}.
1066
 
@item lockscreen
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}.
1076
 
@item mapdefault
1077
 
Use only the default mapping table for the next keystroke.  @xref{Bindkey Control}.
1078
 
@item mapnotnext
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}.
1086
 
@item meta
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}.
1100
 
@item next
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}.
1108
 
@item only
1109
 
Kill all other regions.  @xref{Regions}.
1110
 
@item other
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}.
1120
 
@item pow_break
1121
 
Close and Reopen the window's terminal.  @xref{Break}.
1122
 
@item pow_detach
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}.
1126
 
@item prev
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}.
1132
 
@item quit
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}.
1138
 
@item redisplay
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}.
1142
 
@item remove
1143
 
Kill current region.  @xref{Regions}.
1144
 
@item removebuf
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}.
1148
 
@item reset
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}.
1180
 
@item split
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}.
1188
 
@item suspend
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}.
1204
 
@item unbindall
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}.
1216
 
@item version
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}.
1224
 
@item windows
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}.
1232
 
@item xoff
1233
 
Send an XOFF character.  @xref{XON/XOFF}.
1234
 
@item xon
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}.
1240
 
@end table
1241
 
 
1242
 
@node New Window, Selecting, Commands, Top
1243
 
@chapter New Window
1244
 
 
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).
1250
 
 
1251
 
@menu
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
1259
 
@end menu
1260
 
 
1261
 
@node Chdir, Screen Command,  , New Window
1262
 
@section Chdir
1263
 
@deffn Command chdir [directory]
1264
 
(none)@*
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.
1277
 
@end deffn
1278
 
 
1279
 
@node Screen Command, Setenv, Chdir, New Window
1280
 
@section Screen Command
1281
 
@kindex c
1282
 
@kindex C-c
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}.
1299
 
 
1300
 
Screen has built in some functionality of @samp{cu} and @samp{telnet}.
1301
 
@xref{Window Types}.
1302
 
@end deffn
1303
 
 
1304
 
Thus, if your @file{.screenrc} contains the lines
1305
 
 
1306
 
@example
1307
 
# example for .screenrc:
1308
 
screen 1
1309
 
screen -fn -t foobar 2 -L telnet foobar
1310
 
@end example
1311
 
 
1312
 
@noindent
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
1321
 
#0.
1322
 
 
1323
 
@node Setenv, Shell, Screen Command, New Window
1324
 
@section Setenv
1325
 
@deffn Command setenv var string
1326
 
(none)@*
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.
1331
 
@end deffn
1332
 
 
1333
 
@deffn Command unsetenv var
1334
 
(none)@*
1335
 
Unset an environment variable.
1336
 
@end deffn
1337
 
 
1338
 
@node Shell, Term, Setenv, New Window
1339
 
@section Shell
1340
 
@deffn Command shell command
1341
 
@deffnx Command defshell command
1342
 
(none)@*
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.
1348
 
 
1349
 
@code{defshell} is currently a synonym to the @code{shell} command.
1350
 
@end deffn
1351
 
 
1352
 
@deffn Command shelltitle title
1353
 
(none)@*
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.
1356
 
@end deffn
1357
 
 
1358
 
@node Term, Window Types , Shell, New Window
1359
 
@section Term
1360
 
@deffn Command term term
1361
 
(none)@*
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.
1372
 
@end deffn
1373
 
 
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.
1384
 
@itemize @bullet
1385
 
@item
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...).
1389
 
 
1390
 
@item
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
1397
 
as busy.
1398
 
An optional parameter is allowed consisting of a comma separated
1399
 
list of flags in the notation used by @samp{stty(1)}:
1400
 
@table @code
1401
 
@item <baud_rate>
1402
 
Usually 300, 1200, 9600 or 19200. This affects transmission as well as
1403
 
receive speed.
1404
 
@item cs8 or cs7
1405
 
Specify the transmission of eight (or seven) bits per byte.
1406
 
@item ixon or -ixon
1407
 
Enables (or disables) software flow-control (CTRL-S/CTRL-Q) for sending
1408
 
data.
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.
1413
 
@end table
1414
 
 
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.
1419
 
 
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.
1432
 
 
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.
1438
 
 
1439
 
@item
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.
1445
 
 
1446
 
For telnet windows, the command @code{info} shows details about
1447
 
the connection in square brackets (@samp{[} and @samp{]}) at the end of
1448
 
the status line.
1449
 
@table @code
1450
 
@item b
1451
 
BINARY. The connection is in binary mode.
1452
 
@item e
1453
 
ECHO. Local echo is disabled.
1454
 
@item c
1455
 
SGA. The connection is in `character mode' (default: `line mode').
1456
 
@item t
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}).
1460
 
@item w
1461
 
NAWS. The remote site is notified about window size changes.
1462
 
@item f
1463
 
LFLOW. The remote host will send flow control information.
1464
 
(Ignored at the moment.)
1465
 
@end table
1466
 
Additional flags for debugging are @samp{x}, @samp{t} and @samp{n}
1467
 
(XDISPLOC, TSPEED and NEWENV).
1468
 
 
1469
 
For telnet windows, the command @code{break} sends the telnet code
1470
 
@code{IAC BREAK} (decimal 243) to the remote host.
1471
 
 
1472
 
@end itemize
1473
 
 
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}. 
1481
 
 
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}.
1490
 
 
1491
 
@deffn Command group [grouptitle]
1492
 
(none)@*
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.
1497
 
@end deffn
1498
 
 
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.
1504
 
 
1505
 
@node Selecting, Session Management, New Window, Top
1506
 
@chapter Selecting a Window
1507
 
 
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}).
1511
 
 
1512
 
@menu
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.
1517
 
@end menu
1518
 
 
1519
 
@node Next and Previous, Other Window,  , Selecting
1520
 
@section Moving Back and Forth
1521
 
@kindex SPC
1522
 
@kindex n
1523
 
@kindex C-n
1524
 
@deffn Command next
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
1529
 
pressing space.)
1530
 
@end deffn
1531
 
 
1532
 
@kindex p
1533
 
@kindex C-p
1534
 
@kindex C-h
1535
 
@kindex Backspace
1536
 
@deffn Command prev
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}).
1539
 
@end deffn
1540
 
 
1541
 
@node Other Window, Select, Next and Previous, Selecting
1542
 
@section Other Window
1543
 
@kindex C-a
1544
 
@deffn Command other
1545
 
(@kbd{C-a C-a})@*
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}).
1550
 
@end deffn
1551
 
 
1552
 
@node Select, Windowlist, Other Window, Selecting
1553
 
@section Select
1554
 
@kindex 0@dots{}9
1555
 
@kindex '
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
1569
 
@code{-X} option.
1570
 
 
1571
 
@end deffn
1572
 
 
1573
 
@node Windowlist, , Select, Selecting
1574
 
@section Windowlist
1575
 
@kindex "
1576
 
@deffn Command windowlist [-b] [-m] [-g]
1577
 
@deffnx Command windowlist string [@var{string}]
1578
 
@deffnx Command windowlist title [@var{title}]
1579
 
(@kbd{C-a "})@*
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.
1590
 
 
1591
 
The following keys are used to navigate in @code{windowlist}:
1592
 
 
1593
 
@noindent
1594
 
@kbd{k}, @kbd{C-p}, or @kbd{up} Move up one line.
1595
 
 
1596
 
@noindent
1597
 
@kbd{j}, @kbd{C-n}, or @kbd{down} Move down one line.
1598
 
 
1599
 
@noindent
1600
 
@kbd{C-g} or @kbd{escape} Exit windowlist.
1601
 
 
1602
 
@noindent
1603
 
@kbd{C-a} or @kbd{home} Move to the first line.
1604
 
 
1605
 
@noindent
1606
 
@kbd{C-e} or @kbd{end} Move to the last line.
1607
 
 
1608
 
@noindent
1609
 
@kbd{C-u} or @kbd{C-d} Move one half page up or down.
1610
 
 
1611
 
@noindent
1612
 
@kbd{C-b} or @kbd{C-f} Move one full page up or down.
1613
 
 
1614
 
@indent
1615
 
@kbd{0..9} Using the number keys, move to the selected line.
1616
 
 
1617
 
@noindent
1618
 
@kbd{mouseclick} Move to the selected line. Available when
1619
 
@code{mousetrack} is set to @code{on}.
1620
 
 
1621
 
@noindent
1622
 
@kbd{/} Search.
1623
 
 
1624
 
@noindent
1625
 
@kbd{n} Repeat search in the forward direction.
1626
 
 
1627
 
@noindent
1628
 
@kbd{N} Repeat search in the backward direction.
1629
 
 
1630
 
@noindent
1631
 
@kbd{m} Toggle MRU.
1632
 
 
1633
 
@noindent
1634
 
@kbd{g} Toggle group nesting.
1635
 
 
1636
 
@noindent
1637
 
@kbd{a} All window view.
1638
 
 
1639
 
@noindent
1640
 
@kbd{C-h} or @kbd{backspace} Back out the group.
1641
 
 
1642
 
@noindent
1643
 
@kbd{,} Switch numbers with the previous window.
1644
 
 
1645
 
@noindent
1646
 
@kbd{.} Switch numbers with the next window.
1647
 
 
1648
 
@noindent
1649
 
@kbd{K} Kill that window.
1650
 
 
1651
 
@noindent
1652
 
@kbd{space} or @kbd{enter} Select that window.
1653
 
 
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).
1660
 
 
1661
 
@code{Windowlist} needs a region size of at least 10 characters
1662
 
wide and 6 characters high in order to display.
1663
 
@end deffn
1664
 
 
1665
 
@node Session Management, Regions, Selecting, Top
1666
 
@chapter Session Management Commands
1667
 
 
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.
1672
 
 
1673
 
@menu
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.
1681
 
@end menu
1682
 
 
1683
 
@node Detach, Power Detach,  , Session Management
1684
 
@section Detach
1685
 
 
1686
 
@deffn Command autodetach state
1687
 
(none)@*
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
1692
 
on by default.
1693
 
@end deffn
1694
 
 
1695
 
@kindex d
1696
 
@kindex C-d
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
1702
 
Screen}).
1703
 
The @code{-h} option tells screen to immediately close the connection
1704
 
to the terminal (@samp{hangup}).
1705
 
@end deffn
1706
 
 
1707
 
@deffn Command password [crypted_pw]
1708
 
(none)@*
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
1716
 
password checking.
1717
 
@end deffn
1718
 
 
1719
 
@node Power Detach, Lock, Detach, Session Management
1720
 
@section Power Detach
1721
 
 
1722
 
@kindex D
1723
 
@deffn Command pow_detach
1724
 
(@kbd{C-a D D})@*
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.
1729
 
@end deffn
1730
 
 
1731
 
@deffn Command pow_detach_msg [message]
1732
 
(none)@*
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 
1735
 
baud rate, etc.
1736
 
Without a parameter, the current message is shown.
1737
 
@end deffn
1738
 
 
1739
 
@node Lock, Multiuser Session, Power Detach, Session Management
1740
 
@section Lock
1741
 
@kindex x
1742
 
@kindex C-x
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.
1752
 
 
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}.
1757
 
@end deffn
1758
 
 
1759
 
@node Multiuser Session, Session Name, Lock, Session Management
1760
 
@section Multiuser Session
1761
 
@cindex multiuser session 
1762
 
 
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 
1767
 
described here.
1768
 
 
1769
 
@menu
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.
1780
 
@end menu
1781
 
 
1782
 
@node Multiuser, Acladd,  , Multiuser Session
1783
 
@subsection Multiuser
1784
 
@deffn Command multiuser @var{state}
1785
 
(none)@*
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 
1789
 
@code{screen}.  
1790
 
@end deffn
1791
 
 
1792
 
@node Acladd, Aclchg, Multiuser, Multiuser Session
1793
 
@subsection Acladd
1794
 
@deffn Command acladd @var{usernames}
1795
 
@deffnx Command addacl @var{usernames}
1796
 
(none)@*
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.
1804
 
@end deffn
1805
 
 
1806
 
@node Aclchg, Acldel, Acladd, Multiuser Session
1807
 
@subsection Aclchg
1808
 
@deffn Command aclchg @var{usernames permbits list}
1809
 
@deffnx Command chacl @var{usernames permbits list}
1810
 
(none)@*
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.
1830
 
@end deffn
1831
 
 
1832
 
@node Acldel, Aclgrp, Aclchg, Multiuser Session
1833
 
@subsection Acldel
1834
 
@deffn Command acldel @var{username}
1835
 
(none)@*
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.
1839
 
@end deffn
1840
 
 
1841
 
@node Aclgrp, Displays, Acldel, Multiuser Session
1842
 
@subsection Aclgrp
1843
 
@deffn Command aclgrp @var{username} [@var{groupname}]
1844
 
(none)@*
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.
1853
 
@end deffn
1854
 
 
1855
 
@node Displays, Umask, Aclgrp, Multiuser Session
1856
 
@subsection Displays
1857
 
@kindex *
1858
 
@deffn Command displays
1859
 
(@kbd{C-a *})@*
1860
 
Shows a tabular listing  of  all  currently  connected  user
1861
 
front-ends  (displays).   This  is most useful for multiuser
1862
 
sessions.
1863
 
 
1864
 
The following keys can be used in @code{displays} list:
1865
 
 
1866
 
@noindent
1867
 
@kbd{k}, @kbd{C-p}, or @kbd{up} Move up one line.
1868
 
 
1869
 
@noindent
1870
 
@kbd{j}, @kbd{C-n}, or @kbd{down} Move down one line.
1871
 
 
1872
 
@noindent
1873
 
@kbd{C-a} or @kbd{home} Move to the first line.
1874
 
 
1875
 
@noindent
1876
 
@kbd{C-e} or @kbd{end} Move to the last line.
1877
 
 
1878
 
@noindent
1879
 
@kbd{C-u} or @kbd{C-d} Move one half page up or down.
1880
 
 
1881
 
@noindent
1882
 
@kbd{C-b} or @kbd{C-f} Move one full page up or down.
1883
 
 
1884
 
@noindent
1885
 
@kbd{mouseclick} Move to the selected line. Available when
1886
 
@code{mousetrack} is set to @code{on}.
1887
 
 
1888
 
@noindent
1889
 
@kbd{space} Refresh the list.
1890
 
 
1891
 
@noindent
1892
 
@kbd{d} Detach the selected display.
1893
 
 
1894
 
@noindent
1895
 
@kbd{D} Power detach the selected display.
1896
 
 
1897
 
@noindent
1898
 
@kbd{C-g}, @kbd{enter}, or @kbd{escape} Exit the list.
1899
 
 
1900
 
 
1901
 
The following is an example of what @code{displays} could
1902
 
look like:
1903
 
 
1904
 
@example
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)
1909
 
@end example
1910
 
 
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:
1922
 
@display
1923
 
(1st character)
1924
 
    @samp{-} : no read
1925
 
    @samp{r} : read
1926
 
    @samp{R} : read only due to foreign wlock
1927
 
(2nd character)
1928
 
    @samp{-} : no write
1929
 
    @samp{.} : write suppressed by foreign wlock
1930
 
    @samp{w} : write
1931
 
    @samp{W} : own wlock
1932
 
(3rd character)
1933
 
    @samp{-} : no execute
1934
 
    @samp{x} : execute
1935
 
@end display
1936
 
 
1937
 
@code{Displays} needs a region size of at least 10 characters
1938
 
wide and 5 characters high in order to display.
1939
 
@end deffn
1940
 
 
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} ...
1945
 
(none)@*
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}.
1958
 
@end deffn
1959
 
 
1960
 
 
1961
 
@node Wall, Writelock, Umask, Multiuser Session
1962
 
@subsection Wall
1963
 
@deffn Command wall @var{message}
1964
 
(none)@*
1965
 
Write a message to all displays. The message will appear in the terminal's
1966
 
status line.
1967
 
@end deffn
1968
 
 
1969
 
@node Writelock, Su , Wall, Multiuser Session
1970
 
@subsection Writelock
1971
 
@deffn Command writelock @var{on|off|auto}
1972
 
(none)@*
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
1980
 
to other windows.
1981
 
@end deffn
1982
 
 
1983
 
@deffn Command defwritelock @var{on|off|auto}
1984
 
(none)@*
1985
 
Sets the default writelock behavior for new windows. Initially all windows
1986
 
will be created with no writelocks.
1987
 
@end deffn
1988
 
 
1989
 
@node Su,  , Writelock, Multiuser Session
1990
 
@subsection Su
1991
 
@deffn Command su [@var{username} [@var{password} [@var{password2}]]]
1992
 
(none)@*
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
2000
 
multiuser  setups.
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
2004
 
@code{displays}.
2005
 
@end deffn
2006
 
 
2007
 
@node Session Name, Suspend, Multiuser Session, Session Management
2008
 
@section Session Name
2009
 
@deffn Command sessionname [@var{name}]
2010
 
(none)@*
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.
2020
 
@end deffn
2021
 
 
2022
 
@node Suspend, Quit, Session Name, Session Management
2023
 
@section Suspend
2024
 
@kindex z
2025
 
@kindex C-z
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.
2031
 
@end deffn
2032
 
 
2033
 
@node Quit,  , Suspend, Session Management
2034
 
@section Quit
2035
 
@kindex C-\
2036
 
@deffn Command quit
2037
 
(@kbd{C-a C-\})@*
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}).
2043
 
@end deffn
2044
 
 
2045
 
@node Regions, Window Settings, Session Management, Top
2046
 
@chapter Regions
2047
 
@cindex regions
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.
2051
 
 
2052
 
@menu
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
2062
 
@end menu
2063
 
 
2064
 
@node Split, Focus,  , Regions
2065
 
@section Split
2066
 
@kindex S
2067
 
@kindex |
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.
2076
 
 
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}.
2081
 
@end deffn
2082
 
 
2083
 
@node Focus, Only, Split, Regions
2084
 
@section Focus
2085
 
@kindex TAB
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)
2093
 
@example
2094
 
bind j focus down
2095
 
bind k focus up
2096
 
bind t focus top
2097
 
bind b focus bottom
2098
 
@end example
2099
 
@end deffn
2100
 
 
2101
 
@node Only, Remove, Focus, Regions
2102
 
@section Only
2103
 
@kindex Q
2104
 
@deffn Command only
2105
 
(@kbd{C-a Q})@*
2106
 
Kill all regions but the current one.
2107
 
@end deffn
2108
 
 
2109
 
@node Remove, Resize, Only, Regions
2110
 
@section Remove
2111
 
@kindex X
2112
 
@deffn Command remove
2113
 
(@kbd{C-a X})@*
2114
 
Kill the current region. This is a no-op if there is only one region.
2115
 
@end deffn
2116
 
 
2117
 
@node Resize, Caption, Remove, Regions
2118
 
@section Resize
2119
 
@deffn Command resize [(+/-)@var{lines}]
2120
 
(none)@*
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.
2123
 
@example
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
2130
 
@end example
2131
 
@end deffn
2132
 
 
2133
 
@node Caption, Fit, Resize, Regions
2134
 
@section Caption
2135
 
@deffn Command caption @code{always}|@code{splitonly} [string]
2136
 
@deffnx Command caption @code{string} [string]
2137
 
(none)@*
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}.
2144
 
 
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}.
2148
 
 
2149
 
You can mix both forms by providing the string as an additional
2150
 
argument.
2151
 
@end deffn
2152
 
 
2153
 
@node Fit, Focusminsize, Caption, Regions
2154
 
@section Fit
2155
 
@kindex F
2156
 
@deffn Command fit
2157
 
(@kbd{C-a F})@*
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.
2161
 
@end deffn
2162
 
 
2163
 
@node Focusminsize, Layout, Fit, Regions
2164
 
@section Focusminsize
2165
 
@deffn Command focusminsize [ (width|@code{max}|@code{_})  (height|@code{max}|@code{_}) ]
2166
 
(none)@*
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.
2177
 
@end deffn
2178
 
 
2179
 
@node Layout, , Focusminsize, Regions
2180
 
@section Layout
2181
 
@cindex layout
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.
2187
 
 
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.
2193
 
 
2194
 
Note that there are several subcommands to @code{layout}.
2195
 
 
2196
 
@deffn Command layout @code{new} [title]
2197
 
(none)@*
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}.
2206
 
@end deffn
2207
 
 
2208
 
@deffn Command layout @code{remove} [n|title]
2209
 
(none)@*
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.
2213
 
 
2214
 
Removing a layout does not affect your set windows or regions.
2215
 
@end deffn
2216
 
 
2217
 
@deffn Command layout @code{next}
2218
 
(none)@*
2219
 
Switch to the next layout available
2220
 
@end deffn
2221
 
 
2222
 
@deffn Command layout @code{prev}
2223
 
(none)@*
2224
 
Switch to the previous layout available
2225
 
@end deffn
2226
 
 
2227
 
@deffn Command layout @code{select} [n|title]
2228
 
(none)@*
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.
2233
 
@end deffn
2234
 
 
2235
 
@deffn Command layout @code{show}
2236
 
(none)@*
2237
 
List on the message line the number(s) and title(s) of the available
2238
 
layout(s). The current layout is flagged.
2239
 
@end deffn
2240
 
 
2241
 
@deffn Command layout @code{title} [title]
2242
 
(none)@*
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.
2246
 
@end deffn
2247
 
 
2248
 
@deffn Command layout @code{number} [n]
2249
 
(none)@*
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.
2253
 
@end deffn
2254
 
 
2255
 
@deffn Command layout @code{attach} [title|@code{:last}]
2256
 
(none)@*
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.
2263
 
@end deffn
2264
 
 
2265
 
@deffn Command layout @code{save} [n|title]
2266
 
(none)@*
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.
2277
 
 
2278
 
Saving your regions can be done automatically by using the
2279
 
@code{layout autosave} command.
2280
 
@end deffn
2281
 
 
2282
 
@deffn Command layout @code{autosave} [@code{on}|@code{off}]
2283
 
(none)@*
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.
2293
 
@end deffn
2294
 
 
2295
 
@deffn Command layout @code{dump} [filename]
2296
 
(none)@*
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:
2305
 
@example
2306
 
layout dump /home/user/.screenrc
2307
 
@end example
2308
 
will save or append the layout to the user's @file{.screenrc} file.
2309
 
@end deffn
2310
 
 
2311
 
@node Window Settings, Virtual Terminal, Regions, Top
2312
 
@chapter Window Settings
2313
 
 
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.
2317
 
 
2318
 
@menu
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
2327
 
@end menu
2328
 
 
2329
 
@node Naming Windows, Console,  , Window Settings
2330
 
@section Naming Windows (Titles)
2331
 
@cindex title
2332
 
 
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.
2339
 
 
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.
2350
 
 
2351
 
@menu
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}.
2356
 
@end menu
2357
 
 
2358
 
@node Title Command, Dynamic Titles,  , Naming Windows
2359
 
@subsection Title Command
2360
 
@kindex A
2361
 
@deffn Command title [windowtitle]
2362
 
(@kbd{C-a A})@*
2363
 
Set the name of the current window to @var{windowtitle}. If no name is 
2364
 
specified, screen prompts for one.
2365
 
@end deffn
2366
 
 
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.
2378
 
 
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.
2392
 
 
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
2400
 
prompt like this:
2401
 
 
2402
 
@example
2403
 
set prompt='@value{esc}[0000m@value{esc}k@value{esc}\% '
2404
 
@end example
2405
 
 
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.
2409
 
 
2410
 
Tcsh handles escape codes in the prompt more intelligently, so you can
2411
 
specify your prompt like this:
2412
 
 
2413
 
@example
2414
 
set prompt="%@{\ek\e\\%@}\% "
2415
 
@end example
2416
 
 
2417
 
Bash users will probably want to echo the escape sequence in the
2418
 
PROMPT_COMMAND:
2419
 
 
2420
 
@example
2421
 
PROMPT_COMMAND='printf "\033k\033\134"'
2422
 
@end example
2423
 
 
2424
 
(I used @samp{\134} to output a @samp{\} because of a bug in v1.04).
2425
 
 
2426
 
@node Title Screenrc,  , Title Prompts, Naming Windows
2427
 
@subsection Setting up shell titles in your @file{.screenrc}
2428
 
Here are some .screenrc examples:
2429
 
 
2430
 
@example
2431
 
screen -t top 2 nice top
2432
 
@end example
2433
 
 
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}.
2436
 
 
2437
 
@example
2438
 
shelltitle '> |csh'
2439
 
screen 1
2440
 
@end example
2441
 
 
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:
2445
 
 
2446
 
@example
2447
 
/usr/joe/src/dir> trn
2448
 
@end example
2449
 
 
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.
2453
 
 
2454
 
@example
2455
 
bind R screen -t '% |root:' su
2456
 
@end example
2457
 
 
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:
2462
 
 
2463
 
@example
2464
 
% !em
2465
 
emacs file.c
2466
 
@end example
2467
 
 
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.
2472
 
 
2473
 
@example
2474
 
bind o title
2475
 
bind E title ""
2476
 
bind u title (unknown)
2477
 
@end example
2478
 
 
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).
2483
 
 
2484
 
@node Console, Kill, Naming Windows, Window Settings
2485
 
@section Console
2486
 
@deffn Command console [@var{state}]
2487
 
(none)@*
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
2492
 
@code{TIOCCONS}.
2493
 
@end deffn
2494
 
 
2495
 
@node Kill, Login, Console, Window Settings
2496
 
@section Kill
2497
 
 
2498
 
@kindex k
2499
 
@kindex C-k
2500
 
@deffn Command kill
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.
2509
 
@* 
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}).
2515
 
@end deffn
2516
 
 
2517
 
@node Login, Mode, Kill, Window Settings
2518
 
@section Login
2519
 
 
2520
 
@deffn Command deflogin state
2521
 
(none)@*
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.
2526
 
@end deffn
2527
 
 
2528
 
@kindex L
2529
 
@deffn Command login [state]
2530
 
(@kbd{C-a L})@*
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}).
2537
 
@end deffn
2538
 
 
2539
 
@node Mode, Monitor, Login, Window Settings
2540
 
@section Mode
2541
 
@deffn Command defmode mode
2542
 
(none)@*
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}).
2547
 
@end deffn
2548
 
 
2549
 
@node Monitor, Windows, Mode, Window Settings
2550
 
@section Monitoring
2551
 
 
2552
 
@deffn Command activity message
2553
 
(none)@*
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
2561
 
 
2562
 
@example
2563
 
'Activity in window %n'
2564
 
@end example
2565
 
 
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}).
2568
 
@end deffn
2569
 
 
2570
 
@deffn Command defmonitor state
2571
 
(none)@*
2572
 
Same as the @code{monitor} command except that the default setting for
2573
 
new windows is changed.  Initial setting is `off'.
2574
 
@end deffn
2575
 
 
2576
 
@kindex M
2577
 
@deffn Command monitor [state]
2578
 
(@kbd{C-a M})@*
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.
2585
 
@end deffn
2586
 
 
2587
 
@kindex _
2588
 
@deffn Command silence [@var{state}|@var{sec}]
2589
 
(@kbd{C-a _})@*
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.
2596
 
@end deffn
2597
 
 
2598
 
@deffn Command defsilence state
2599
 
(none)@*
2600
 
Same as the @code{silence} command except that the default setting for
2601
 
new windows is changed.  Initial setting is `off'.
2602
 
@end deffn
2603
 
 
2604
 
@deffn Command silencewait @var{seconds}
2605
 
(none)@*
2606
 
Define the time that all windows monitored for silence should wait
2607
 
before displaying a message. Default is 30 seconds.
2608
 
@end deffn
2609
 
 
2610
 
@node Windows, Hardstatus, Monitor, Window Settings
2611
 
@section Windows
2612
 
@kindex w
2613
 
@kindex C-w
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). 
2619
 
 
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}. 
2630
 
 
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.
2633
 
@end deffn
2634
 
 
2635
 
@node Hardstatus, Mousetrack, Windows, Window Settings
2636
 
@section Hardstatus
2637
 
 
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
2644
 
also accepted.
2645
 
 
2646
 
@deffn Command defhstatus [status]
2647
 
(none)@*
2648
 
The hardstatus line that all new windows will get is set to
2649
 
@var{status}.
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.
2659
 
@end deffn
2660
 
 
2661
 
@deffn Command hstatus status
2662
 
(none)@*
2663
 
Changes the current window's hardstatus line to @var{status}.
2664
 
@end deffn
2665
 
 
2666
 
@node Mousetrack, , Hardstatus, Miscellaneous
2667
 
@section Mousetrack
2668
 
 
2669
 
@deffn Command mousetrack [ @code{on|off} ]
2670
 
(none)@*
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.
2677
 
@end deffn
2678
 
 
2679
 
@deffn Command defmousetrack @code{on|off} 
2680
 
(none)@*
2681
 
This command determines the default state of the @code{mousetrack}
2682
 
command, currently defaulting of @var{off}.
2683
 
@end deffn
2684
 
 
2685
 
@node Virtual Terminal, Copy and Paste, Window Settings, Top
2686
 
@chapter Virtual Terminal
2687
 
 
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.
2692
 
 
2693
 
@menu
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.
2705
 
@end menu
2706
 
 
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.
2713
 
 
2714
 
@example
2715
 
ESC E                           Next Line
2716
 
ESC D                           Index
2717
 
ESC M                           Reverse Index
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
2725
 
ESC g                           Visual Bell
2726
 
ESC Pn p                        Cursor Visibility (97801)
2727
 
    Pn = 6                      Invisible
2728
 
         7                      Visible
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
2741
 
                                title hack)
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
2763
 
           2                    Entire Screen
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
2767
 
           2                    Entire Line
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
2780
 
           1                    Bold
2781
 
           2            (A)     Faint
2782
 
           3            (A)     @i{Standout} Mode (ANSI: Italicized)
2783
 
           4                    Underlined
2784
 
           5                    Blinking
2785
 
           7                    Negative Image
2786
 
           22           (A)     Normal Intensity
2787
 
           23           (A)     @i{Standout} Mode off (ANSI: Italicized off)
2788
 
           24           (A)     Not Underlined
2789
 
           25           (A)     Not Blinking
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
2801
 
           ...                  ...
2802
 
           49           (A)     Background Default
2803
 
ESC [ Pn g                      Tab Clear
2804
 
      Pn = None or 0            Clear Tab at Current Position
2805
 
           3                    Clear All Tabs
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
2840
 
 
2841
 
@end example
2842
 
 
2843
 
 
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.
2860
 
 
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
2863
 
mode.
2864
 
@example
2865
 
 
2866
 
Key name        Termcap name    Command
2867
 
-----------------------------------------------------
2868
 
Cursor up            ku         stuff \033[A
2869
 
                                stuff \033OA      (A)
2870
 
Cursor down          kd         stuff \033[B
2871
 
                                stuff \033OB      (A)
2872
 
Cursor right         kr         stuff \033[C
2873
 
                                stuff \033OC      (A)
2874
 
Cursor left          kl         stuff \033[D
2875
 
                                stuff \033OD      (A)
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~
2895
 
Keypad 0             f0         stuff 0
2896
 
                                stuff \033Op      (A)
2897
 
Keypad 1             f1         stuff 1
2898
 
                                stuff \033Oq      (A)
2899
 
Keypad 2             f2         stuff 2
2900
 
                                stuff \033Or      (A)
2901
 
Keypad 3             f3         stuff 3
2902
 
                                stuff \033Os      (A)
2903
 
Keypad 4             f4         stuff 4
2904
 
                                stuff \033Ot      (A)
2905
 
Keypad 5             f5         stuff 5
2906
 
                                stuff \033Ou      (A)
2907
 
Keypad 6             f6         stuff 6
2908
 
                                stuff \033Ov      (A)
2909
 
Keypad 7             f7         stuff 7
2910
 
                                stuff \033Ow      (A)
2911
 
Keypad 8             f8         stuff 8
2912
 
                                stuff \033Ox      (A)
2913
 
Keypad 9             f9         stuff 9
2914
 
                                stuff \033Oy      (A)
2915
 
Keypad +             f+         stuff +
2916
 
                                stuff \033Ok      (A)
2917
 
Keypad -             f-         stuff -
2918
 
                                stuff \033Om      (A)
2919
 
Keypad *             f*         stuff *
2920
 
                                stuff \033Oj      (A)
2921
 
Keypad /             f/         stuff /
2922
 
                                stuff \033Oo      (A)
2923
 
Keypad =             fq         stuff =
2924
 
                                stuff \033OX      (A)
2925
 
Keypad .             f.         stuff .
2926
 
                                stuff \033On      (A)
2927
 
Keypad ,             f,         stuff ,
2928
 
                                stuff \033Ol      (A)
2929
 
Keypad enter         fe         stuff \015
2930
 
                                stuff \033OM      (A)
2931
 
@end example
2932
 
 
2933
 
@node Digraph, Bell, Input Translation, Virtual Terminal
2934
 
@section Digraph
2935
 
 
2936
 
@kindex C-v
2937
 
@deffn Command digraph [preset [unicode-value]] 
2938
 
(@kbd{C-a C-v})@*
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}.
2952
 
 
2953
 
The following table is the builtin sequences.
2954
 
 
2955
 
@documentencoding ISO-8859-1
2956
 
@example
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
3130
 
@end example 
3131
 
 
3132
 
@end deffn
3133
 
 
3134
 
@node Bell, Clear, Digraph, Virtual Terminal
3135
 
@section Bell
3136
 
 
3137
 
@deffn Command bell_msg [message]
3138
 
(none)@*
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
3146
 
 
3147
 
@example
3148
 
'Bell in window %n'
3149
 
@end example
3150
 
 
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.
3154
 
@end deffn
3155
 
 
3156
 
@kindex C-g
3157
 
@deffn Command vbell [state]
3158
 
(@kbd{C-a C-g})@*
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}.
3167
 
 
3168
 
Per  default, @code{vbell} is @samp{off}, thus the audible bell is used.
3169
 
@end deffn
3170
 
 
3171
 
@deffn Command vbell_msg [message]
3172
 
(none)@*
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.
3178
 
@end deffn
3179
 
 
3180
 
@deffn Command vbellwait sec
3181
 
(none)@*
3182
 
Define a delay in seconds after each display of @code{screen} 's visual
3183
 
bell message. The default is 1 second.
3184
 
@end deffn
3185
 
 
3186
 
@node Clear, Info, Bell, Virtual Terminal
3187
 
@section Clear
3188
 
@kindex C
3189
 
@deffn Command clear
3190
 
(@kbd{C-a C})@*
3191
 
Clears the screen and saves its contents to the scrollback buffer.
3192
 
@end deffn
3193
 
 
3194
 
@node Info, Redisplay, Clear, Virtual Terminal
3195
 
@section Info
3196
 
@kindex i
3197
 
@kindex C-i
3198
 
@deffn Command info
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}):
3206
 
@example
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.
3213
 
@end example
3214
 
 
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.
3220
 
 
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}).
3228
 
 
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.
3231
 
 
3232
 
For system information use @code{time}.
3233
 
@end deffn
3234
 
 
3235
 
@deffn Command dinfo
3236
 
(none)@*
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.
3239
 
@end deffn
3240
 
 
3241
 
@node Redisplay, Wrap, Info, Virtual Terminal
3242
 
@section Redisplay
3243
 
 
3244
 
@deffn Command allpartial state
3245
 
(none)@*
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. 
3252
 
@end deffn
3253
 
 
3254
 
@deffn Command altscreen state
3255
 
(none)@*
3256
 
If set to on, "alternate screen" support is enabled in virtual terminals,
3257
 
just like in xterm.  Initial setting is @samp{off}.
3258
 
@end deffn
3259
 
 
3260
 
@deffn Command partial state
3261
 
(none)@*
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. 
3267
 
@end deffn
3268
 
 
3269
 
@kindex l
3270
 
@kindex C-l
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.
3275
 
@end deffn
3276
 
 
3277
 
@node Wrap, Reset, Redisplay, Virtual Terminal
3278
 
@section Wrap
3279
 
 
3280
 
@kindex r
3281
 
@kindex C-r
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.
3290
 
@end deffn
3291
 
 
3292
 
@deffn Command defwrap state
3293
 
(none) @*
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".
3297
 
@end deffn
3298
 
 
3299
 
@node Reset, Window Size, Wrap, Virtual Terminal
3300
 
@section Reset
3301
 
@kindex Z
3302
 
@deffn Command reset
3303
 
(@kbd{C-a Z})@*
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
3306
 
an application.
3307
 
@end deffn
3308
 
 
3309
 
@node Window Size, Character Processing, Reset, Virtual Terminal
3310
 
@section Window Size
3311
 
@kindex W
3312
 
@deffn Command width [@code{-w}|@code{-d}] [cols [lines]]
3313
 
(@kbd{C-a W})@*
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.
3322
 
@end deffn
3323
 
 
3324
 
@deffn Command height [@code{-w}|@code{-d}] [lines [cols]]
3325
 
(none)@*
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.
3328
 
@end deffn
3329
 
 
3330
 
@node Character Processing, ,Window Size, Virtual Terminal
3331
 
@section Character Processing
3332
 
 
3333
 
@deffn Command c1 [state]
3334
 
(none)@*
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.
3342
 
 
3343
 
@end deffn
3344
 
@deffn Command gr [state]
3345
 
(none)@*
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.
3351
 
@end deffn
3352
 
 
3353
 
@deffn Command bce [state]
3354
 
(none)@*
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.
3359
 
@end deffn
3360
 
 
3361
 
@deffn Command encoding enc [denc]
3362
 
(none)@*
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
3368
 
the encoding.
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}.
3371
 
 
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}.
3379
 
 
3380
 
See also @samp{defencoding}, which changes the default setting of a new
3381
 
window.
3382
 
@end deffn
3383
 
 
3384
 
@deffn Command charset set
3385
 
(none)@*
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.
3395
 
 
3396
 
The current setting can be viewed with the @ref{Info} command.
3397
 
@end deffn
3398
 
 
3399
 
@deffn Command utf8 [state [dstate]]
3400
 
(none)@*
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.
3403
 
Omitting the
3404
 
parameter toggles the setting. If a second parameter is given, the
3405
 
display's
3406
 
encoding is also changed (this should rather be done with screen's
3407
 
@samp{-U} option).
3408
 
See also @samp{defutf8}, which changes the default setting of a new
3409
 
window.
3410
 
@end deffn
3411
 
 
3412
 
@deffn Command defc1 state
3413
 
(none)@*
3414
 
Same as the @samp{c1} command except that the default setting for
3415
 
new windows is changed. Initial setting is @samp{on}.
3416
 
@end deffn
3417
 
 
3418
 
@deffn Command defgr state
3419
 
(none)@*
3420
 
Same as the @samp{gr} command except that the default setting for
3421
 
new windows is changed. Initial setting is @samp{off}.
3422
 
@end deffn
3423
 
 
3424
 
@deffn Command defbce state
3425
 
(none)@*
3426
 
Same as the @samp{bce} command except that the default setting for
3427
 
new windows is changed. Initial setting is @samp{off}.
3428
 
@end deffn
3429
 
 
3430
 
@deffn Command defencoding enc
3431
 
(none)@*
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
3434
 
terminal.
3435
 
@end deffn
3436
 
 
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
3440
 
argument.
3441
 
@end deffn
3442
 
 
3443
 
@deffn Command defutf8 state
3444
 
(none)@*
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}.
3448
 
@end deffn
3449
 
 
3450
 
@node Copy and Paste, Subprocess Execution, Virtual Terminal, Top
3451
 
@chapter Copy and Paste
3452
 
@cindex copy and paste
3453
 
 
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
3456
 
systems.
3457
 
 
3458
 
@menu
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
3464
 
@end menu
3465
 
 
3466
 
@node Copy, Paste,  , Copy and Paste
3467
 
@section Copying
3468
 
@cindex marking
3469
 
@cindex scrollback
3470
 
@kindex [
3471
 
@kindex C-[
3472
 
@kindex ESC
3473
 
@deffn Command copy
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
3478
 
outlined below.
3479
 
@end deffn
3480
 
 
3481
 
@menu
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
3490
 
@end menu
3491
 
 
3492
 
@node Line Termination, Scrollback,  , Copy
3493
 
@subsection CR/LF
3494
 
@deffn Command crlf [state]
3495
 
(none)@*
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.
3501
 
@end deffn
3502
 
 
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
3507
 
(none)@*
3508
 
Same as the @code{scrollback} command except that the default setting
3509
 
for new windows is changed.  Defaults to 100.
3510
 
@end deffn
3511
 
 
3512
 
@deffn Command scrollback num
3513
 
(none)@*
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.
3517
 
@end deffn
3518
 
 
3519
 
@deffn Command compacthist [state]
3520
 
(none)@*
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.
3524
 
@end deffn
3525
 
 
3526
 
@node Copy Mode Keys, Movement, Scrollback, Copy
3527
 
@subsection Markkeys
3528
 
@deffn Command markkeys string
3529
 
(none)@*
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}
3534
 
users.
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.
3541
 
@end deffn
3542
 
 
3543
 
@node Movement, Marking, Copy Mode Keys, Copy
3544
 
@subsection Movement Keys
3545
 
 
3546
 
@noindent
3547
 
@kbd{h}, @kbd{C-h}, or @kbd{left arrow} move the cursor left.
3548
 
 
3549
 
@noindent
3550
 
@kbd{j}, @kbd{C-n}, or @kbd{down arrow} move the cursor down.
3551
 
 
3552
 
@noindent
3553
 
@kbd{k}, @kbd{C-p}, or @kbd{up arrow} move the cursor up.
3554
 
 
3555
 
@noindent
3556
 
@kbd{l} ('el'), or @kbd{right arrow} move the cursor right.
3557
 
 
3558
 
@noindent
3559
 
@kbd{0} (zero) or @kbd{C-a} move to the leftmost column.
3560
 
 
3561
 
@noindent
3562
 
@kbd{+} and @kbd{-} move the cursor to the leftmost column of the next
3563
 
or previous line.
3564
 
 
3565
 
@noindent
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. 
3568
 
 
3569
 
@noindent
3570
 
@kbd{|} moves to the specified absolute column.
3571
 
 
3572
 
@noindent
3573
 
@kbd{g} or @kbd{home} moves to the beginning of the buffer.
3574
 
 
3575
 
@noindent
3576
 
@kbd{G} or @kbd{end} moves to the specified absolute line (default: end of buffer).
3577
 
 
3578
 
@noindent
3579
 
@kbd{%} jumps to the specified percentage of the buffer.
3580
 
 
3581
 
@noindent
3582
 
@kbd{^} or @kbd{$} move to the first
3583
 
or last non-whitespace character on the line.
3584
 
 
3585
 
@noindent
3586
 
@kbd{w}, @kbd{b}, and @kbd{e} move the cursor word by word.
3587
 
 
3588
 
@noindent
3589
 
@kbd{B}, @kbd{E} move the cursor WORD by WORD (as in vi).
3590
 
 
3591
 
@noindent
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 
3594
 
'y' to the right.)
3595
 
 
3596
 
@noindent
3597
 
@kbd{;} and @kbd{,} Repeat the last f/F/t/T command in the same/opposite direction.
3598
 
 
3599
 
@noindent 
3600
 
@kbd{C-e} and @kbd{C-y} scroll the display up/down by one line
3601
 
while preserving the cursor position.
3602
 
 
3603
 
@noindent
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
3606
 
screenful).
3607
 
 
3608
 
@noindent
3609
 
@kbd{C-b} and @kbd{C-f} move the cursor up/down a full screen.
3610
 
 
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.
3614
 
 
3615
 
@node Marking, Repeat count, Movement, Copy
3616
 
@subsection Marking
3617
 
 
3618
 
The copy range is specified by setting two marks. The text between these
3619
 
marks will be highlighted. Press:
3620
 
 
3621
 
@noindent
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}.
3625
 
 
3626
 
@noindent
3627
 
@kbd{Y} and @kbd{y} can be used to mark one whole line or to mark from 
3628
 
start of line.
3629
 
 
3630
 
@noindent
3631
 
@kbd{W} marks exactly one word. 
3632
 
 
3633
 
@node Repeat count, Searching, Marking, Copy
3634
 
@subsection Repeat Count
3635
 
 
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:
3638
 
@example
3639
 
@kbd{C-a C-[ H 10 j 5 Y}
3640
 
@end example
3641
 
@noindent
3642
 
will copy lines 11 to 15 into the paste buffer.
3643
 
 
3644
 
@node Searching, Specials, Repeat count, Copy
3645
 
@subsection Searching
3646
 
 
3647
 
@noindent
3648
 
@kbd{/} @code{vi}-like search forward.
3649
 
 
3650
 
@noindent
3651
 
@kbd{?} @code{vi}-like search backward.
3652
 
 
3653
 
@noindent
3654
 
@kbd{C-a s} @code{emacs} style incremental search forward.
3655
 
 
3656
 
@noindent
3657
 
@kbd{C-r} @code{emacs} style reverse i-search.
3658
 
 
3659
 
@deffn Command ignorecase [on|off]
3660
 
(none)@*
3661
 
Tell screen to ignore the case of characters in searches. Default is
3662
 
@code{off}. Without any options, the state of @code{ignorecase}
3663
 
is toggled.
3664
 
@end deffn
3665
 
 
3666
 
@noindent
3667
 
@kbd{n} Repeat search in forward direction.
3668
 
 
3669
 
@noindent
3670
 
@kbd{N} Repeat search in backward direction.
3671
 
 
3672
 
@node Specials,  , Searching, Copy
3673
 
@subsection Specials
3674
 
 
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:
3678
 
 
3679
 
@noindent
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: 
3683
 
@example
3684
 
@kbd{C-a [ M 20 l SPACE c 10 l 5 j C SPACE}.
3685
 
@end example
3686
 
 
3687
 
@noindent
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:
3692
 
@example
3693
 
@kbd{C-a [ M 20 l SPACE 10 l 5 j SPACE}
3694
 
@end example
3695
 
 
3696
 
@noindent
3697
 
and notice the difference in the amount of text copied.
3698
 
 
3699
 
@noindent
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
3704
 
on}.
3705
 
 
3706
 
@noindent
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.
3709
 
 
3710
 
@noindent
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.
3713
 
 
3714
 
@noindent
3715
 
@kbd{A} turns on append mode and sets a (second) mark.
3716
 
 
3717
 
@noindent
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: 
3723
 
@example
3724
 
@kbd{C-a [ g SPACE G $ >}.
3725
 
@end example
3726
 
 
3727
 
@noindent
3728
 
@kbd{C-g} gives information about the current line and column.
3729
 
 
3730
 
@noindent
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.
3733
 
 
3734
 
@noindent
3735
 
@kbd{C-l} ('el') will redraw the screen.
3736
 
 
3737
 
@noindent
3738
 
@kbd{@@} does nothing.  Absolutely nothing.  Does not even exit copy
3739
 
mode.
3740
 
 
3741
 
@noindent
3742
 
All keys not described here exit copy mode.
3743
 
 
3744
 
@node Paste, Registers, Copy, Copy and Paste
3745
 
@section Paste
3746
 
 
3747
 
@kindex ]
3748
 
@kindex C-]
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.
3768
 
@end deffn
3769
 
 
3770
 
@deffn Command stuff [string]
3771
 
(none)@*
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}.
3777
 
@end deffn
3778
 
 
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.
3783
 
@end deffn
3784
 
 
3785
 
@deffn Command slowpaste msec
3786
 
@deffnx Command defslowpaste msec
3787
 
(none)@*
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 
3790
 
character.
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 
3794
 
amounts of text. 
3795
 
@code{defslowpaste} specifies the default for new windows.
3796
 
@end deffn
3797
 
 
3798
 
@deffn Command readreg [-e encoding] [register [filename]]
3799
 
(none)@*
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):
3808
 
 
3809
 
@example
3810
 
C-a : readreg p /etc/passwd
3811
 
C-a : paste p
3812
 
@end example
3813
 
@end deffn
3814
 
 
3815
 
@node Registers, Screen Exchange, Paste, Copy and Paste
3816
 
@section Registers
3817
 
 
3818
 
@deffn Command copy_reg [key]
3819
 
(none)@*
3820
 
Removed. Use @code{readreg} instead.
3821
 
@end deffn
3822
 
 
3823
 
@deffn Command ins_reg [key]
3824
 
(none)@*
3825
 
Removed. Use @code{paste} instead.
3826
 
@end deffn
3827
 
 
3828
 
@deffn Command process [key]
3829
 
(none)@*
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.
3834
 
@end deffn
3835
 
 
3836
 
@deffn Command register [-e encoding] key string
3837
 
(none)@*
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.
3840
 
@end deffn
3841
 
 
3842
 
@node Screen Exchange, History, Registers, Copy and Paste
3843
 
@section Screen Exchange
3844
 
 
3845
 
@deffn Command bufferfile [@var{exchange-file}]
3846
 
(none)@*
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):
3852
 
 
3853
 
@example
3854
 
C-a : bufferfile /etc/passwd
3855
 
C-a < C-a ]
3856
 
C-a : bufferfile
3857
 
@end example
3858
 
@end deffn
3859
 
 
3860
 
@kindex <
3861
 
@deffn Command readbuf [-e @var{encoding}] [@var{filename}]
3862
 
(@kbd{C-a <})@*
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.
3866
 
@end deffn
3867
 
 
3868
 
@kindex =
3869
 
@deffn Command removebuf
3870
 
(@kbd{C-a =})@*
3871
 
Unlinks the screen-exchange file.
3872
 
@end deffn
3873
 
 
3874
 
@kindex >
3875
 
@deffn Command writebuf [-e @var{encoding}] [@var{filename}]
3876
 
(@kbd{C-a >})@*
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
3882
 
match the encoding.
3883
 
See also
3884
 
@kbd{C-a @key{ESC}} (@pxref{Copy}).
3885
 
@end deffn
3886
 
 
3887
 
@node History,  , Screen Exchange, Copy and Paste
3888
 
@section History
3889
 
 
3890
 
@kindex @{
3891
 
@kindex @}
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
3902
 
scrollback buffer).
3903
 
@end deffn
3904
 
 
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.
3908
 
Use with care!
3909
 
 
3910
 
@menu
3911
 
* Exec::                        The @code{exec} command syntax.
3912
 
* Using Exec::                  Weird things that filters can do.
3913
 
@end menu
3914
 
 
3915
 
@node Exec, Using Exec,  , Subprocess Execution
3916
 
@section Exec
3917
 
@deffn Command exec [[@var{fdpat}] @var{newcommand} [@var{args} ... ]]
3918
 
(none)@*
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.
3928
 
@*
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}.
3933
 
@*
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 
3936
 
window.
3937
 
@*
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.
3940
 
@*
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
3946
 
side.
3947
 
@end deffn
3948
 
 
3949
 
@node Using Exec,  , Exec, Subprocess Execution
3950
 
@section Using Exec
3951
 
@noindent 
3952
 
Abbreviations:
3953
 
 
3954
 
@itemize @bullet
3955
 
@item
3956
 
Whitespace between the word @samp{exec} and @var{fdpat} and the command name
3957
 
can be omitted. 
3958
 
 
3959
 
@item
3960
 
Trailing dots and a @var{fdpat} consisting only of dots can be omitted. 
3961
 
 
3962
 
@item 
3963
 
A simple @samp{|} is synonymous for the @samp{!..|} pattern.
3964
 
 
3965
 
@item
3966
 
The word @samp{exec} can be omitted when the @samp{|} abbreviation is used.
3967
 
 
3968
 
@item
3969
 
The word @samp{exec} can always be replaced by leading @samp{!}.
3970
 
@end itemize
3971
 
 
3972
 
@noindent 
3973
 
Examples:
3974
 
 
3975
 
@table @code
3976
 
@item !/bin/sh
3977
 
@itemx exec /bin/sh
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
3982
 
@file{/bin/sh}.
3983
 
 
3984
 
@item !!stty 19200
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.
3991
 
 
3992
 
@item |less
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.
4001
 
 
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.
4007
 
@end table
4008
 
 
4009
 
@node Key Binding, Flow Control, Subprocess Execution, Top
4010
 
@chapter Key Binding
4011
 
@cindex key binding
4012
 
@cindex binding
4013
 
 
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
4016
 
preferences.
4017
 
 
4018
 
@menu
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.
4026
 
@end menu
4027
 
 
4028
 
@node Bind, Bind Examples,  , Key Binding
4029
 
@section The @code{bind} command
4030
 
@deffn Command bind [-c class] key [command [args]]
4031
 
(none)@*
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}).
4040
 
 
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.
4045
 
 
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.
4050
 
@end deffn
4051
 
 
4052
 
@deffn Command unbindall
4053
 
(none)@*
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'.
4058
 
@end deffn
4059
 
 
4060
 
@node Bind Examples, Command Character, Bind, Key Binding
4061
 
@section Examples of the @code{bind} command
4062
 
@noindent
4063
 
Some examples:
4064
 
 
4065
 
@example
4066
 
bind ' ' windows
4067
 
bind ^f screen telnet foobar
4068
 
bind \033 screen -ln -t root -h 1000 9 su
4069
 
@end example
4070
 
 
4071
 
@noindent
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
4078
 
of 1000 lines.
4079
 
 
4080
 
@example
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
4085
 
@end example
4086
 
makes @kbd{C-b 0} select window 10, @kbd{C-b 1} window 11, etc.
4087
 
 
4088
 
@example
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
4093
 
@end example
4094
 
makes @kbd{C-a - 0} select window 10, @kbd{C-a - 1} window 11, etc.
4095
 
 
4096
 
@node Command Character, Help, Bind Examples, Key Binding
4097
 
@cindex escape character
4098
 
@cindex command character
4099
 
@section Command Character
4100
 
 
4101
 
@deffn Command escape xy
4102
 
(none)@*
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
4111
 
one of the authors.
4112
 
@end deffn
4113
 
 
4114
 
@deffn Command defescape xy
4115
 
(none)@*
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.
4122
 
@end deffn
4123
 
 
4124
 
@kindex a
4125
 
@deffn Command meta
4126
 
(@kbd{C-a a})@*
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.
4131
 
@end deffn
4132
 
 
4133
 
@deffn Command command [-c @var{class}]
4134
 
(none)@*
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}.
4139
 
@end deffn
4140
 
 
4141
 
@node Help, Bindkey, Command Character, Key Binding
4142
 
@section Help
4143
 
@kindex ?
4144
 
@deffn Command help
4145
 
(@kbd{C-a ?})@*
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}.
4154
 
@end deffn
4155
 
 
4156
 
@node Bindkey, Bindkey Examples, Help, Key Binding
4157
 
@section Bindkey
4158
 
@deffn Command bindkey [@var{opts}] [@var{string} [@var{cmd} @var{args}]]
4159
 
(none)@*
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.
4167
 
 
4168
 
If the @samp{-d}
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
4174
 
@samp{-k} option).
4175
 
 
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}
4180
 
option.
4181
 
 
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
4184
 
used.
4185
 
 
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. 
4189
 
@end deffn
4190
 
 
4191
 
@node Bindkey Examples, Bindkey Control,Bindkey, Key Binding
4192
 
@section Bindkey Examples
4193
 
@noindent
4194
 
Here are some examples of keyboard bindings:
4195
 
 
4196
 
@example
4197
 
bindkey -d
4198
 
@end example
4199
 
@noindent
4200
 
Show all of the default key bindings. The application mode entries
4201
 
are marked with [A].
4202
 
 
4203
 
@example
4204
 
bindkey -k k1 select 1
4205
 
@end example
4206
 
@noindent
4207
 
Make the "F1" key switch to window one.
4208
 
 
4209
 
@example
4210
 
bindkey -t foo stuff barfoo
4211
 
@end example
4212
 
@noindent
4213
 
Make @samp{foo} an abbreviation of the word @samp{barfoo}. Timeout is
4214
 
disabled so that users can type slowly.
4215
 
 
4216
 
@example
4217
 
bindkey "\024" mapdefault
4218
 
@end example
4219
 
@noindent
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
4224
 
binding).
4225
 
 
4226
 
@example
4227
 
bindkey -k F1 command
4228
 
@end example
4229
 
@noindent
4230
 
Make the F11 (not F1!) key an alternative screen
4231
 
escape (besides @samp{C-a}).
4232
 
 
4233
 
@node Bindkey Control, , Bindkey Examples, Key Binding
4234
 
@section Bindkey Control
4235
 
@deffn Command mapdefault
4236
 
(none)@*
4237
 
Tell screen that the next input character should only be looked up
4238
 
in the default bindkey table.
4239
 
@end deffn
4240
 
@deffn Command mapnotnext
4241
 
(none)@*
4242
 
Like mapdefault, but don't even look in the default bindkey table.
4243
 
@end deffn
4244
 
@deffn Command maptimeout n
4245
 
(none)@*
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.
4249
 
@end deffn
4250
 
 
4251
 
@node Flow Control, Termcap, Key Binding, Top
4252
 
@chapter Flow Control
4253
 
@cindex flow control
4254
 
 
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}).
4259
 
 
4260
 
@menu
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
4264
 
@end menu
4265
 
 
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.
4281
 
 
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}.
4287
 
 
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.
4294
 
 
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.
4313
 
 
4314
 
@node Flow, XON/XOFF, Flow Control Summary, Flow Control
4315
 
@section Flow
4316
 
@deffn Command defflow fstate [interrupt]
4317
 
(none)@*
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.
4324
 
@end deffn
4325
 
 
4326
 
@kindex f
4327
 
@kindex C-f
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'.
4334
 
@end deffn
4335
 
 
4336
 
@node XON/XOFF,  , Flow, Flow Control
4337
 
@section XON and XOFF
4338
 
@kindex q
4339
 
@kindex C-q
4340
 
@deffn Command xon
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}.
4344
 
@end deffn
4345
 
 
4346
 
@kindex s
4347
 
@kindex C-s
4348
 
@deffn Command xoff
4349
 
(@kbd{C-a s}, @kbd{C-a C-s})@*
4350
 
Send a ^S (ASCII XOFF) to the program in the current window.
4351
 
@end deffn
4352
 
 
4353
 
@node Termcap, Message Line, Flow Control, Top
4354
 
@chapter Termcap
4355
 
 
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}.
4360
 
 
4361
 
@menu
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.
4370
 
@end menu
4371
 
 
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.
4380
 
 
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:
4384
 
 
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.
4391
 
 
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
4402
 
window.
4403
 
 
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).
4413
 
 
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.
4420
 
 
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.
4426
 
 
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.
4443
 
 
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.
4454
 
 
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}).
4464
 
 
4465
 
The "alternate screen" capability is not enabled by default.
4466
 
Set the @code{altscreen} @file{.screenrc} command to enable it.
4467
 
 
4468
 
@node Dump Termcap, Termcap Syntax, Window Termcap, Termcap
4469
 
@section Write out the window's termcap entry
4470
 
@kindex .
4471
 
@deffn Command dumptermcap
4472
 
(@kbd{C-a .})@*
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
4480
 
@code{tic}.
4481
 
@end deffn
4482
 
 
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]
4488
 
(none)@*
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
4492
 
windows.  
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.
4495
 
 
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.
4502
 
 
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.
4507
 
@end deffn
4508
 
 
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}.
4513
 
 
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}).
4522
 
 
4523
 
@node Termcap Examples, Special Capabilities, Termcap Syntax, Termcap
4524
 
@section Termcap Examples
4525
 
Some examples:
4526
 
 
4527
 
@example
4528
 
termcap xterm*  xn:hs@@
4529
 
@end example
4530
 
 
4531
 
@noindent
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.
4538
 
 
4539
 
@example
4540
 
termcap vt*  xn
4541
 
termcap vt102|vt220  Z0=\E[?3h:Z1=\E[?3l
4542
 
@end example
4543
 
 
4544
 
@noindent
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.)
4550
 
 
4551
 
@example
4552
 
termcap vt100  ""  l0=PF1:l1=PF2:l2=PF3:l3=PF4
4553
 
@end example
4554
 
 
4555
 
@noindent
4556
 
This leaves your vt100 termcap alone and adds the function key labels to
4557
 
each window's termcap entry.
4558
 
 
4559
 
@example
4560
 
termcap h19|z19  am@@:im=\E@@:ei=\EO  dc=\E[P
4561
 
@end example
4562
 
 
4563
 
@noindent
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).
4573
 
 
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.
4579
 
 
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.
4591
 
@table @samp
4592
 
@item LP
4593
 
(bool)@*
4594
 
Terminal has VT100 style margins (`magic margins'). Note that
4595
 
this capability is obsolete --- @code{screen} now uses the standard 
4596
 
@samp{xn} instead.
4597
 
 
4598
 
@item Z0
4599
 
(str)@*
4600
 
Change width to 132 columns.
4601
 
 
4602
 
@item Z1
4603
 
(str)@*
4604
 
Change width to 80 columns.
4605
 
 
4606
 
@item WS
4607
 
(str)@*
4608
 
Resize display. This capability has the desired width and height as
4609
 
arguments.  SunView(tm) example: @samp{\E[8;%d;%dt}.
4610
 
 
4611
 
@item NF
4612
 
(bool)@*
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}.
4616
 
 
4617
 
@item G0
4618
 
(bool)@*
4619
 
Terminal can deal with ISO 2022 font selection sequences.
4620
 
 
4621
 
@item S0
4622
 
(str)@*
4623
 
Switch charset @samp{G0} to the specified charset. Default
4624
 
is @samp{\E(%.}.
4625
 
 
4626
 
@item E0
4627
 
(str)@*
4628
 
Switch charset @samp{G0} back to standard charset. Default
4629
 
is @samp{\E(B}.
4630
 
 
4631
 
@item C0
4632
 
(str)@*
4633
 
Use the string as a conversion table for font 0. See
4634
 
the @samp{ac} capability for more details.
4635
 
 
4636
 
@item CS
4637
 
(str)@*
4638
 
Switch cursor-keys to application mode.
4639
 
 
4640
 
@item CE
4641
 
(str)@*
4642
 
Switch cursor-keys to cursor mode.
4643
 
 
4644
 
@item AN
4645
 
(bool)@*
4646
 
Enable autonuke for displays of this terminal type.
4647
 
(@pxref{Autonuke}).
4648
 
 
4649
 
@item OL
4650
 
(num)@*
4651
 
Set the output buffer limit. See the @samp{obuflimit} command
4652
 
(@pxref{Obuflimit}) for more details.
4653
 
 
4654
 
@item KJ
4655
 
(str)@*
4656
 
Set the encoding of the terminal. See the @samp{encoding} command
4657
 
(@pxref{Character Processing}) for valid encodings.
4658
 
 
4659
 
@item AF
4660
 
(str)@*
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).
4664
 
 
4665
 
@item AB
4666
 
(str)@*
4667
 
Same as @samp{AF}, but change background color.
4668
 
 
4669
 
@item AX
4670
 
(bool)@*
4671
 
Does understand ANSI set default fg/bg color (@samp{\E[39m / \E[49m}).
4672
 
 
4673
 
@item XC
4674
 
(str)@*
4675
 
Describe a translation of characters to strings depending on the
4676
 
current font.  (@pxref{Character Translation}).
4677
 
 
4678
 
@item XT
4679
 
(bool)@*
4680
 
Terminal understands special xterm sequences (OSC, mouse tracking).
4681
 
 
4682
 
@item C8
4683
 
(bool)@*
4684
 
Terminal needs bold to display high-intensity colors (e.g. Eterm).
4685
 
 
4686
 
@item TF
4687
 
(bool)@*
4688
 
Add missing capabilities to the termcap/info entry. (Set by default).
4689
 
@end table
4690
 
 
4691
 
@node Autonuke, Obuflimit, Special Capabilities, Termcap
4692
 
@section Autonuke
4693
 
@deffn Command autonuke @var{state}
4694
 
(none)@*
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.
4698
 
@end deffn
4699
 
 
4700
 
@deffn Command defautonuke @var{state}
4701
 
(none)@*
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.
4706
 
@end deffn
4707
 
 
4708
 
@node Obuflimit, Character Translation, Autonuke, Termcap
4709
 
@section Obuflimit
4710
 
@deffn Command obuflimit [@var{limit}]
4711
 
(none)@*
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.
4717
 
@end deffn
4718
 
 
4719
 
@deffn Command defobuflimit @var{limit}
4720
 
(none)@*
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.
4725
 
@end deffn
4726
 
 
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.
4734
 
 
4735
 
Syntax:
4736
 
 
4737
 
@example
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>}
4741
 
@end example
4742
 
 
4743
 
The things in braces may be repeated any number of times.
4744
 
 
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 
4753
 
@var{template-arg}
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{,}.
4759
 
 
4760
 
Here is an example:
4761
 
 
4762
 
@example
4763
 
    termcap hp700 'XC=B\E(K%\E(B,\304[,\326\\\\,\334]'
4764
 
@end example
4765
 
 
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{\}.
4773
 
 
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>}.
4777
 
In this
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.
4781
 
 
4782
 
This example shows one use of the extension:
4783
 
@example
4784
 
    termcap xterm 'XC=K%,%\E(B,[\304,\\\\\326,]\334'
4785
 
@end example
4786
 
 
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
4789
 
sent
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
4793
 
@samp{\334}.
4794
 
 
4795
 
@node Message Line, Logging, Termcap, Top
4796
 
@chapter The Message Line
4797
 
@cindex message line
4798
 
 
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
4806
 
type.
4807
 
 
4808
 
@menu
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.
4813
 
@end menu
4814
 
 
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:
4820
 
 
4821
 
@example
4822
 
echo "@value{esc}^Hello world from window $WINDOW@value{esc}\"
4823
 
@end example
4824
 
 
4825
 
where @samp{@value{esc}} is ASCII ESC and the @samp{^} that follows it
4826
 
is a literal caret or up-arrow.
4827
 
 
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]
4833
 
(none)@*
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}.
4840
 
 
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.
4850
 
 
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
4854
 
displayed.
4855
 
You can customize this to any string you like including
4856
 
string escapes (@pxref{String Escapes}).
4857
 
If you leave
4858
 
out the argument @var{string}, the current string is displayed.
4859
 
 
4860
 
You can mix the second and third form by providing the string as
4861
 
additional argument.
4862
 
@end deffn
4863
 
 
4864
 
@node Last Message, Message Wait, Hardware Status Line, Message Line
4865
 
@section Display Last Message
4866
 
@kindex m
4867
 
@kindex C-m
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.
4873
 
@end deffn
4874
 
 
4875
 
@node Message Wait,  , Last Message, Message Line
4876
 
@section Message Wait
4877
 
@deffn Command msgminwait sec
4878
 
(none)@*
4879
 
Defines the time @code{screen} delays a new message when another is
4880
 
currently displayed.  Defaults to 1 second.
4881
 
@end deffn
4882
 
 
4883
 
@deffn Command msgwait sec
4884
 
(none)@*
4885
 
Defines the time a message is displayed, if @code{screen} is not
4886
 
disturbed by other activity.  Defaults to 5 seconds.
4887
 
@end deffn
4888
 
 
4889
 
@node Logging, Startup, Message Line, Top
4890
 
@chapter Logging
4891
 
 
4892
 
This section describes the commands for keeping a record of your session.
4893
 
 
4894
 
@menu
4895
 
* Hardcopy::                    Dump the current screen to a file
4896
 
* Log::                         Log the output of a window to a file
4897
 
@end menu
4898
 
 
4899
 
@node Hardcopy, Log,  , Logging
4900
 
@section hardcopy
4901
 
@kindex h
4902
 
@deffn Command hardcopy [-h] [@var{file}]
4903
 
(@kbd{C-a h})@*
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.
4911
 
@end deffn
4912
 
 
4913
 
@deffn Command hardcopy_append state
4914
 
(none)@*
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.
4918
 
@end deffn
4919
 
 
4920
 
@deffn Command hardcopydir directory
4921
 
(none)@*
4922
 
Defines a directory where hardcopy files will be placed.
4923
 
If unset, hardcopys are dumped in screen's current working
4924
 
directory.
4925
 
@end deffn
4926
 
 
4927
 
@node Log,  , Hardcopy, Logging
4928
 
@section log
4929
 
 
4930
 
@deffn Command deflog state
4931
 
(none)@*
4932
 
Same as the @code{log} command except that the default setting for new
4933
 
windows is changed.  Initial setting is `off'.
4934
 
@end deffn
4935
 
 
4936
 
@kindex H
4937
 
@deffn Command log [state]
4938
 
(@kbd{C-a H})@*
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}.
4948
 
@end deffn
4949
 
 
4950
 
@deffn Command logfile filename
4951
 
@deffnx Command logfile flush secs
4952
 
(none)@*
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.
4957
 
@end deffn
4958
 
 
4959
 
@deffn Command logtstamp [state]
4960
 
@deffnx Command logtstamp @code{after} secs
4961
 
@deffnx Command logtstamp @code{string} string
4962
 
(none)@*
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
4971
 
default).
4972
 
@end deffn
4973
 
 
4974
 
@node Startup, Miscellaneous, Logging, Top
4975
 
@chapter Startup
4976
 
 
4977
 
This section describes commands which are only useful in the
4978
 
@file{.screenrc} file, for use at startup.
4979
 
 
4980
 
@menu
4981
 
* echo::                        Display a message.
4982
 
* sleep::                       Pause execution of the @file{.screenrc}.
4983
 
* Startup Message::             Control display of the copyright notice.
4984
 
@end menu
4985
 
 
4986
 
@node echo, sleep,  , Startup
4987
 
@section echo
4988
 
@deffn Command echo [@samp{-n}] message
4989
 
(none)@*
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.
4995
 
@end deffn
4996
 
 
4997
 
@node sleep, Startup Message, echo, Startup
4998
 
@section sleep
4999
 
@deffn Command sleep num
5000
 
(none)@*
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}.
5004
 
@end deffn
5005
 
 
5006
 
@node Startup Message,  , sleep, Startup
5007
 
@section Startup Message
5008
 
@deffn Command startup_message state
5009
 
(none)@*
5010
 
Select whether you want to see the copyright notice during startup.
5011
 
Default is @samp{on}, as you probably noticed.
5012
 
@end deffn
5013
 
 
5014
 
@node Miscellaneous, String Escapes, Startup, Top
5015
 
@chapter Miscellaneous commands
5016
 
 
5017
 
The commands described here do not fit well under any of the other
5018
 
categories.
5019
 
 
5020
 
@menu
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.
5043
 
@end menu
5044
 
 
5045
 
@node At, Break,  , Miscellaneous
5046
 
@section At
5047
 
@deffn Command at [identifier][#|*|%] command [args]
5048
 
(none)@*
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 
5065
 
@code{\}. 
5066
 
Permission is checked for the initiator of the @code{at} command, not for the
5067
 
owners of the affected display(s).
5068
 
Caveat: 
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
5073
 
like @code{login}!
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.
5077
 
@end deffn
5078
 
 
5079
 
@node Break, Debug, At, Miscellaneous
5080
 
@section Break
5081
 
@kindex b
5082
 
@kindex C-b
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.
5090
 
@end deffn
5091
 
 
5092
 
@kindex B
5093
 
@deffn Command pow_break
5094
 
(@kbd{C-a B})@*
5095
 
Reopen the window's terminal line and send a break condition.
5096
 
@end deffn
5097
 
 
5098
 
@deffn Command breaktype [tcsendbreak|TIOCSBRK|TCSBRK]
5099
 
(none)@*
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
5103
 
the future.
5104
 
Calling @code{breaktype} with no parameter displays the break setting for the
5105
 
current window.
5106
 
@end deffn
5107
 
 
5108
 
@deffn Command defbreaktype [tcsendbreak|TIOCSBRK|TCSBRK]
5109
 
(none)@*
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.
5119
 
@end deffn
5120
 
 
5121
 
@node Debug, License, Break, Miscellaneous
5122
 
@section Debug
5123
 
@deffn Command debug [on|off]
5124
 
(none)@*
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.
5130
 
@end deffn
5131
 
 
5132
 
@node License, Nethack, Debug, Miscellaneous
5133
 
@section License
5134
 
@kindex ,
5135
 
@deffn Command license
5136
 
(@kbd{C-a ,})@*
5137
 
Display the disclaimer page. This is done whenever @code{screen} is
5138
 
started without options, which should be often enough.
5139
 
@end deffn
5140
 
 
5141
 
@node Nethack, Nonblock, License, Miscellaneous
5142
 
@section Nethack
5143
 
@deffn Command nethack state
5144
 
(none)@*
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.
5149
 
 
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}.
5155
 
@end deffn
5156
 
 
5157
 
@node Nonblock, Number, Nethack, Miscellaneous
5158
 
@section Nonblock
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.
5170
 
@end deffn
5171
 
 
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}.
5175
 
@end deffn
5176
 
 
5177
 
@node Number, Time, Nonblock, Miscellaneous
5178
 
@section Number
5179
 
@kindex N
5180
 
@deffn Command number [[+|-]@var{n}]
5181
 
(@kbd{C-a 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
5186
 
amount specified.
5187
 
@end deffn
5188
 
 
5189
 
@node Time, Verbose, Number, Miscellaneous
5190
 
@section Time
5191
 
@kindex t
5192
 
@kindex C-t
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%?}.
5200
 
@end deffn
5201
 
 
5202
 
@node Verbose, Version, Time, Miscellaneous
5203
 
@section Verbose
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.
5208
 
@end deffn
5209
 
 
5210
 
@node Version, Zombie, Verbose, Miscellaneous
5211
 
@section Version
5212
 
@kindex v
5213
 
@deffn Command version
5214
 
(@kbd{C-a v})@*
5215
 
Display the version and modification date in the message line.
5216
 
@end deffn
5217
 
 
5218
 
@node Zombie, Printcmd, Version, Miscellaneous
5219
 
@section Zombie
5220
 
@deffn Command zombie [@var{keys} [onerror] ]
5221
 
@deffnx Command defzombie [@var{keys}]
5222
 
(none)@*
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.
5232
 
 
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.
5236
 
 
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.
5241
 
@end deffn
5242
 
 
5243
 
@node Printcmd, Rendition, Zombie, Miscellaneous
5244
 
@section Printcmd
5245
 
@deffn Command printcmd [@var{cmd}]
5246
 
(none)@*
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.
5254
 
 
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.
5257
 
@end deffn
5258
 
 
5259
 
@node Rendition, Sorendition, Printcmd, Miscellaneous
5260
 
@section Rendition
5261
 
@deffn Command rendition bell | monitor | silence | so @var{attr} [@var{color}]
5262
 
(none)@*
5263
 
Change the way screen renders the titles of windows that have monitor
5264
 
or bell flags set in caption or hardstatus or windowlist.
5265
 
See the chapter
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}.
5270
 
@end deffn
5271
 
 
5272
 
@node Sorendition, Attrcolor, Rendition, Miscellaneous
5273
 
@section Sorendition
5274
 
@deffn Command sorendition [@var{attr} [@var{color}]]
5275
 
(none)@*
5276
 
This command has been deprecated. Use @code{rendition so} instead. 
5277
 
@end deffn
5278
 
 
5279
 
@node Attrcolor, Setsid, Sorendition, Miscellaneous
5280
 
@section Attrcolor
5281
 
@deffn Command attrcolor @var{attrib} [@var{attribute/color-modifier}]
5282
 
(none)@*
5283
 
This command can be used to highlight attributes by changing the color of
5284
 
the text. If the attribute
5285
 
@var{attrib}
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.
5292
 
 
5293
 
@noindent 
5294
 
Examples:
5295
 
@table @code
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
5302
 
already.
5303
 
@item attrcolor i "+b"
5304
 
Make bright colored text also bold.
5305
 
@end table
5306
 
@end deffn
5307
 
 
5308
 
@node Setsid, Eval, Attrcolor, Miscellaneous
5309
 
@section Setsid
5310
 
@deffn Command setsid state
5311
 
(none)@*
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.
5318
 
@end deffn
5319
 
 
5320
 
@node Eval, Maxwin, Setsid, Miscellaneous
5321
 
@section Eval
5322
 
@deffn Command eval @var{command1} [@var{command2} ...]
5323
 
(none)@*
5324
 
Parses and executes each argument as separate command.
5325
 
@end deffn
5326
 
 
5327
 
@node Maxwin, Backtick, Eval, Miscellaneous
5328
 
@section Maxwin
5329
 
@deffn Command maxwin @var{n}
5330
 
(none)@*
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
5333
 
existing windows.
5334
 
@end deffn
5335
 
 
5336
 
@node Backtick, Screen Saver, Maxwin, Miscellaneous
5337
 
@section Backtick
5338
 
@deffn Command backtick @var{id} @var{lifespan} @var{autorefresh} @var{command} [@var{args}]
5339
 
@deffnx Command backtick @var{id}
5340
 
(none)@*
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 
5350
 
for substitution.
5351
 
 
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.
5358
 
 
5359
 
The second form of the command deletes the backtick command 
5360
 
with the numerical id @var{id}.
5361
 
@end deffn
5362
 
 
5363
 
@node Screen Saver, Zmodem, Backtick, Miscellaneous
5364
 
@section Screen Saver
5365
 
@deffn Command idle [@var{timeout} [@var{cmd} @var{args}]]
5366
 
(none)@*
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.
5374
 
@end deffn
5375
 
 
5376
 
@deffn Command blanker
5377
 
(none)@*
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.
5383
 
 
5384
 
This command is normally used together with the @code{idle}
5385
 
command.
5386
 
@end deffn
5387
 
 
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.
5392
 
 
5393
 
@end deffn
5394
 
 
5395
 
@node Zmodem, , Screen Saver, Miscellaneous
5396
 
@section Zmodem
5397
 
@deffn Command zmodem [off|auto|catch|pass]
5398
 
@deffnx Command zmodem sendcmd [string]
5399
 
@deffnx Command zmodem recvcmd [string]
5400
 
(none)@*
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}.
5410
 
 
5411
 
You can define the templates screen uses in @code{catch} mode
5412
 
via the second and the third form.
5413
 
 
5414
 
Note also that this is an experimental feature.
5415
 
@end deffn
5416
 
 
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.
5424
 
 
5425
 
Here is the full list of supported escapes:
5426
 
 
5427
 
@table @code
5428
 
@item %
5429
 
the escape character itself
5430
 
@item a
5431
 
either @code{am} or @code{pm}
5432
 
@item A
5433
 
either @code{AM} or @code{PM}
5434
 
@item c
5435
 
current time @code{HH:MM} in 24h format
5436
 
@item C
5437
 
current time @code{HH:MM} in 12h format
5438
 
@item d
5439
 
day number
5440
 
@item D
5441
 
weekday name
5442
 
@item E
5443
 
sets %? to true if the escape character has been pressed.
5444
 
@item f
5445
 
flags of the window. @xref{Windows}, for meanings of the various flags.
5446
 
@item F
5447
 
sets %? to true if the window has the focus
5448
 
@item h
5449
 
hardstatus of the window
5450
 
@item H
5451
 
hostname of the system
5452
 
@item l
5453
 
current load of the system
5454
 
@item m
5455
 
month number
5456
 
@item M
5457
 
month name
5458
 
@item n
5459
 
window number
5460
 
@item P
5461
 
sets %? to true if the current region is in copy/paste mode
5462
 
@item s
5463
 
seconds
5464
 
@item S
5465
 
session name
5466
 
@item t
5467
 
window title
5468
 
@item u
5469
 
all other users on this window
5470
 
@item w
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
5473
 
one.
5474
 
@item W
5475
 
all window numbers and names except the current one
5476
 
@item y
5477
 
last two digits of the year number
5478
 
@item Y
5479
 
full year number
5480
 
@item ?
5481
 
the part to the next @code{%?} is displayed only if a @code{%} escape
5482
 
inside the part expands to a non-empty string
5483
 
@item :
5484
 
else part of @code{%?}
5485
 
@item =
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
5493
 
to change this.
5494
 
@item <
5495
 
same as @code{%=} but just do truncation, do not fill with spaces
5496
 
@item >
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{...}.
5504
 
@item @{
5505
 
attribute/color modifier string terminated by the next @code{@}}
5506
 
@item `
5507
 
Substitute with the output of a `backtick' command. The length
5508
 
qualifier is misused to identify one of the commands. @xref{Backtick}.
5509
 
@end table
5510
 
The @code{c} and @code{C} escape may be qualified with a @code{0} to
5511
 
make screen use
5512
 
zero instead of space as fill character.
5513
 
The @code{n} and
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.
5518
 
 
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: 
5524
 
@table @code
5525
 
@item +
5526
 
add the specified set to the current attributes
5527
 
@item -
5528
 
remove the set from the current attributes
5529
 
@item !
5530
 
invert the set in the current attributes
5531
 
@item =
5532
 
change the current attributes to the specified set
5533
 
@end table
5534
 
The attribute set can either be specified as a hexadecimal number or
5535
 
a combination of the following letters: 
5536
 
@table @code
5537
 
@item d
5538
 
dim
5539
 
@item u
5540
 
underline
5541
 
@item b
5542
 
bold
5543
 
@item r
5544
 
reverse
5545
 
@item s
5546
 
standout
5547
 
@item B
5548
 
blinking
5549
 
@end table
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
5552
 
colors are known:
5553
 
@table @code
5554
 
@item k
5555
 
black
5556
 
@item r
5557
 
red
5558
 
@item g
5559
 
green
5560
 
@item y
5561
 
yellow
5562
 
@item b
5563
 
blue
5564
 
@item m
5565
 
magenta
5566
 
@item c
5567
 
cyan
5568
 
@item w
5569
 
white
5570
 
@item d
5571
 
default color
5572
 
@item .
5573
 
leave color unchanged
5574
 
@end table
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
5577
 
unchanged.
5578
 
 
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
5584
 
with a @samp{.}.
5585
 
 
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).
5589
 
 
5590
 
@noindent
5591
 
Examples:
5592
 
@table @samp
5593
 
@item G
5594
 
set color to bright green
5595
 
@item +b r
5596
 
use bold red
5597
 
@item = yd
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}.
5607
 
@end table
5608
 
 
5609
 
 
5610
 
@node Environment, Files, String Escapes, Top
5611
 
@chapter Environment Variables
5612
 
@cindex environment
5613
 
 
5614
 
@table @code
5615
 
@item COLUMNS
5616
 
Number of columns on the terminal (overrides termcap entry).
5617
 
 
5618
 
@item HOME
5619
 
Directory in which to look for .screenrc.
5620
 
 
5621
 
@item LINES
5622
 
Number of lines on the terminal (overrides termcap entry).
5623
 
 
5624
 
@item LOCKPRG
5625
 
Screen lock program.
5626
 
 
5627
 
@item NETHACKOPTIONS
5628
 
Turns on @code{nethack} option.
5629
 
 
5630
 
@item PATH
5631
 
Used for locating programs to run.
5632
 
 
5633
 
@item SCREENCAP
5634
 
For customizing a terminal's @code{TERMCAP} value.
5635
 
 
5636
 
@item SCREENDIR
5637
 
Alternate socket directory.
5638
 
 
5639
 
@item SCREENRC
5640
 
Alternate user screenrc file.
5641
 
 
5642
 
@item SHELL
5643
 
Default shell program for opening windows (default @file{/bin/sh}).
5644
 
 
5645
 
@item STY
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.
5649
 
 
5650
 
@item SYSSCREENRC
5651
 
Alternate system screenrc file.
5652
 
 
5653
 
@item TERM
5654
 
Terminal name.
5655
 
 
5656
 
@item TERMCAP
5657
 
Terminal description.
5658
 
 
5659
 
@item WINDOW
5660
 
Window number of a window (at creation time).
5661
 
@end table
5662
 
 
5663
 
@node Files, Credits, Environment, Top
5664
 
@chapter Files Referenced
5665
 
@cindex files
5666
 
 
5667
 
@table @file
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.
5672
 
 
5673
 
@item @code{$SYSSCREENRC}
5674
 
@itemx /etc/screenrc
5675
 
@code{screen} initialization commands
5676
 
 
5677
 
@item @code{$SCREENRC}
5678
 
@itemx @code{$HOME}/.iscreenrc
5679
 
@itemx @code{$HOME}/.screenrc
5680
 
Read in after /etc/screenrc
5681
 
 
5682
 
@item @code{$SCREENDIR}/S-@var{login}
5683
 
 
5684
 
@item /var/run/screen/S-@var{login}
5685
 
Socket directories (default)
5686
 
 
5687
 
@item /usr/tmp/screens/S-@var{login}
5688
 
Alternate socket directories.
5689
 
 
5690
 
@item @var{socket directory}/.termcap
5691
 
Written by the @code{dumptermcap} command
5692
 
 
5693
 
@item /usr/tmp/screens/screen-exchange or
5694
 
@itemx /tmp/screen-exchange
5695
 
@code{screen} interprocess communication buffer
5696
 
 
5697
 
@item hardcopy.[0-9]
5698
 
Screen images created by the hardcopy command
5699
 
 
5700
 
@item screenlog.[0-9]
5701
 
Output log files created by the log command
5702
 
 
5703
 
@item /usr/lib/terminfo/?/* or
5704
 
@itemx /etc/termcap
5705
 
Terminal capability databases
5706
 
 
5707
 
@item /var/run/utmp
5708
 
Login records
5709
 
 
5710
 
@item @code{$LOCKPRG}
5711
 
Program for locking the terminal.
5712
 
@end table
5713
 
 
5714
 
@node Credits, Bugs, Files, Top
5715
 
@chapter Credits
5716
 
 
5717
 
@noindent
5718
 
Authors @*
5719
 
=======
5720
 
 
5721
 
Originally created by Oliver Laumann, this latest version was
5722
 
produced by Juergen Weigert, Michael Schroeder, Micah Cowan and
5723
 
Sadrul Habib Chowdhury.
5724
 
 
5725
 
@noindent
5726
 
Contributors @*
5727
 
============
5728
 
 
5729
 
@example
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).
5758
 
@end example
5759
 
 
5760
 
@noindent
5761
 
Version @*
5762
 
=======
5763
 
 
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.
5768
 
 
5769
 
See also @xref{Availability}.
5770
 
 
5771
 
@node Bugs, Installation, Credits, Top
5772
 
@chapter Bugs
5773
 
@cindex bugs
5774
 
 
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.
5778
 
 
5779
 
@menu
5780
 
* Known Bugs::                  Problems we know about.
5781
 
* Reporting Bugs::              How to contact the maintainers.
5782
 
* Availability::                Where to find the latest screen version.
5783
 
@end menu
5784
 
 
5785
 
@node Known Bugs, Reporting Bugs,  , Bugs
5786
 
@section Known Bugs
5787
 
 
5788
 
@itemize @bullet
5789
 
@item
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.
5792
 
 
5793
 
@item
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.
5796
 
 
5797
 
@item
5798
 
It is not possible to change the environment variable @code{$TERMCAP}
5799
 
when reattaching under a different terminal type.
5800
 
 
5801
 
@item
5802
 
The support of terminfo based systems is very limited. Adding extra
5803
 
capabilities to @code{$TERMCAP} may not have any effects.
5804
 
 
5805
 
@item
5806
 
@code{screen} does not make use of hardware tabs.
5807
 
 
5808
 
@item
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}.
5814
 
 
5815
 
@item
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.
5819
 
 
5820
 
@item
5821
 
@code{screen} may give a strange warning when your tty has no utmp
5822
 
entry.
5823
 
 
5824
 
@item
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.
5828
 
 
5829
 
@item
5830
 
If a password is set, the command line options -d and -D still detach a 
5831
 
session without asking.
5832
 
 
5833
 
@item
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
5837
 
windows.
5838
 
 
5839
 
@item
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 
5843
 
changed manually.
5844
 
 
5845
 
@item
5846
 
A weird imagination is most useful to gain full advantage of all the
5847
 
features.
5848
 
@end itemize
5849
 
 
5850
 
@node Reporting Bugs, Availability, Known Bugs, Bugs
5851
 
@section Reporting Bugs
5852
 
@cindex bug report
5853
 
 
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.
5864
 
 
5865
 
@node Availability,  , Reporting Bugs, Bugs
5866
 
@section Availability
5867
 
@cindex availability
5868
 
 
5869
 
@code{Screen} is available under the @code{GNU} copyleft.
5870
 
 
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.
5878
 
 
5879
 
@node Installation, Concept Index, Bugs, Top
5880
 
@chapter Installation
5881
 
@cindex installation
5882
 
 
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.
5886
 
 
5887
 
@menu
5888
 
* Socket Directory::            Where screen stores its handle.
5889
 
* Compiling Screen::
5890
 
@end menu
5891
 
 
5892
 
@node Socket Directory,
5893
 
@section Socket Directory
5894
 
@cindex socket directory
5895
 
 
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}.
5903
 
 
5904
 
@node Compiling Screen,  , Socket Directory, Installation
5905
 
@section Compiling Screen
5906
 
@cindex compiling screen
5907
 
 
5908
 
To compile and install screen:
5909
 
 
5910
 
The @code{screen} package comes with a @code{GNU Autoconf} configuration 
5911
 
script. Before you compile the package run 
5912
 
 
5913
 
@center @code{sh ./configure}
5914
 
 
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}. 
5922
 
@*
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
5928
 
directory.
5929
 
@*
5930
 
Check the compiler used in @file{Makefile}, the prefix path where to install
5931
 
@code{screen}. Then run
5932
 
 
5933
 
@center @code{make}
5934
 
 
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.
5939
 
 
5940
 
@node Concept Index, Command Index, Installation, Top
5941
 
@unnumbered Concept Index
5942
 
 
5943
 
@printindex cp
5944
 
 
5945
 
@node Command Index, Keystroke Index, Concept Index, Top
5946
 
@unnumbered Command Index
5947
 
 
5948
 
This is a list of all the commands supported by @code{screen}.
5949
 
 
5950
 
@printindex fn
5951
 
 
5952
 
@node Keystroke Index,  , Command Index, Top
5953
 
@unnumbered Keystroke Index
5954
 
 
5955
 
This is a list of the default key bindings.
5956
 
 
5957
 
The leading escape character (@pxref{Command Character}) has been omitted
5958
 
from the key sequences, since it is the same for all bindings.
5959
 
 
5960
 
@printindex ky
5961
 
 
5962
 
@bye
5963