Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ screen(1) — BSD/386 1.0

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

termcap(5)

utmp(5)

vi(1)

captoinfo(1)

tic(1)



SCREEN(1)                                               SCREEN(1)


NAME
       screen - screen manager with VT100/ANSI terminal emulation

SYNOPSIS
       screen [ -options ] [ cmd [ args ] ]
       screen -r [ [pid.]tty[.host] ]

DESCRIPTION
       Screen is a full-screen window manager that multiplexes  a
       physical  terminal  between  several  processes (typically
       interactive shells).  Each virtual terminal  provides  the
       functions of the DEC VT100 terminal and, in addition, sev-
       eral control functions from the ANSI X3.64 (ISO 6429)  and
       ISO  2022  standards  (e.g. insert/delete line and support
       for multiple character sets).  There is a scrollback  his-
       tory buffer for each virtual terminal and a copy-and-paste
       mechanism that allows moving text regions between windows.

       The name of this program was changed to iScreen to be able
       to distinguish it from Oliver  Laumann's  original  screen
       program.  Despite  that fact, this manual will continue to
       use the name screen.  This is, because often the binary is
       installed as 'screen'.

       When  screen  is called, it creates a single window with a
       shell in it (or the specified command) and then  gets  out
       of  your  way  so that you can use the program as you nor-
       mally would.  Then, at any time, you can create new (full-
       screen)  windows  with  other  programs in them (including
       more shells), kill existing windows, view a  list  of  the
       current windows, turn output logging on and off, copy-and-
       paste text between windows, view the  scrollback  history,
       switch  between  windows in whatever manner you wish, etc.
       When a program terminates, screen kills  the  window  that
       contained  it.   If this window was in the foreground, the
       display switches to the previous window; if none are left,
       screen exits.

       Everything  you type is sent to the program running in the
       current window.  The only exception to  this  is  the  one
       keystroke that is used to initiate a command to the window
       manager.  By default, each command begins with a control-a
       (abbreviated  C-a  from  now  on),  and is followed by one
       other keystroke.  The command character and  all  the  key
       bindings  can be fully customized to be anything you like,
       though they are always two characters in length.

       The standard way to create a new window is  to  type  "C-a
       c".   This  creates  a  new  window  running  a  shell and
       switches to that window  immediately,  regardless  of  the
       state of the process running in the current window.  Simi-
       larly, you can create a new window with a  custom  command
       in it by first binding the command to a keystroke (in your
       .screenrc file) and then using it just like  the  "C-a  c"



                         31 January 1992                        1




SCREEN(1)                                               SCREEN(1)


       command.   In addition, new windows can be created by run-
       ning a command like:

              screen emacs prog.c

       from a shell prompt within a  previously  created  window.
       This will not run another copy of screen, but will instead
       supply the command name and its arguments  to  the  window
       manager  who  will  use  it to create the new window.  The
       above  example  would  start  the  emacs  editor  (editing
       prog.c) and switch to its window.

       If  "/etc/utmp"  is  writable  by  screen,  an appropriate
       record will be written to this file for each  window,  and
       removed when the window is terminated.  This is useful for
       working with "talk", "script", "shutdown", "rsend", "sccs"
       and  other  similar  programs  that  use  the utmp file to
       determine who you are. As long as screen is active on your
       terminal,  the  terminals  own  record is removed from the
       utmp file. See also "C-a L".

GETTING STARTED
       Before you begin to use screen you'll need  to  make  sure
       you  have  correctly  selected your terminal type, just as
       you would for any other  termcap/terminfo  program.   (You
       can do this by using tset or stty, for example.)

       If  you're impatient and want to get started without doing
       a lot more reading, you should remember this one  command:
       "C-a  ?".  Typing these two characters will display a list
       of the available screen commands and their bindings.  Each
       keystroke  is discussed in the section "COMMAND KEYS". The
       manual section "CUSTOMIZATION" deals with the contents  of
       your .screenrc.

       If  possible,  choose a version of your terminal's termcap
       that has automatic margins turned off.  This  will  ensure
       an  accurate  and optimal update of the screen in all cir-
       cumstances.  The next best thing is an auto-margin  termi-
       nal  that  allows  the  last  position on the screen to be
       updated without scrolling the screen (such  as  a  vt100).
       This also allows the entire screen to be updated.  Lastly,
       if all you've got is a "true" auto-margin terminal  screen
       will  be  content  to use it, but updating a character put
       into the last position on the screen may not  be  possible
       until  the screen scrolls or the character is moved into a
       safe position in some other way.  This delay can be short-
       ened by using a terminal with insert-character capability.

       If your terminal is  of  the  second  type  (firm-margined
       `am'),  you will want to let screen know about this, since
       a normal termcap doesn't distinguish this  type  of  auto-
       matic margins from a "true" `am' terminal.  You do this by
       specifying the `LP' capability in your  termcap  (see  the



                         31 January 1992                        2




SCREEN(1)                                               SCREEN(1)


       "termcap"  .screenrc command), or by using the -L command-
       line option.  Screen needs this information  to  correctly
       update the screen.

       If  you  are using a "true" auto-margin terminal (no `LP')
       at low baud rates, you may want to turn on a more  optimal
       output  mode  by  including  the flag `OP' in your termcap
       entry, or by specifying the -O command-line  option.   The
       trade-off is that screen will no-longer accurately emulate
       the vt100's line-end quirks (e.g. the screen  will  scroll
       after  putting one character in the last screen position).

COMMAND KEYS
       As mentioned, each screen command consists of a "C-a" fol-
       lowed  by  one other character.  For your convenience, all
       commands that are bound to  lower-case  letters  are  also
       bound  to  their  control character counterparts (with the
       exception of "C-a a"; see below), thus, "C-a c" as well as
       "C-a C-c" can be used to create a window.

       The following keystroke commands are available:

       C-a 0  -  C-a 9   (select0 - select9)
              Switch  to  the window with the number 0 through 9.
              When a new window is established, the first  avail-
              able number from the range 0..9 is assigned to this
              window.  Thus, the first window can be activated by
              "C-a  0" (there can be no more than 10 windows pre-
              sent at any one time).

       C-a C-a   (other)
              Switch to the window  displayed  previously.   Note
              that  this function defaults to the command charac-
              ter typed twice, unless overridden;  for  instance,
              if you use the option "-e]x", this function becomes
              "]]", not "]C-a".

       C-a a
              Send the command character (C-a) to  the  processes
              in the current window.

       C-a A   (aka)
              Allow  the  user to enter an a.k.a (also-known-as).
              for the current window.

       C-a c  or  C-a C-c   (shell)
              Create a new window with a shell and switch to that
              window.

       C-a C   (clear)
              Clear   the   screen  (saves  image  to  scrollback
              buffer).





                         31 January 1992                        3




SCREEN(1)                                               SCREEN(1)


       C-a d  or  C-a C-d   (detach)
              Detach screen (disconnect it from the terminal  and
              put it into the background).  A detached screen can
              be resumed by invoking screen with the  -r  option.
              (See also section "COMMAND-LINE OPTIONS".)

       C-a D   (pow_detach)
              Power  detach.  Mainly  the same as above, but also
              sends a HANGUP signal  to  the  parent  process  of
              screen.   CAUTION:  This  will  result in a logout,
              when screen was started from your login shell.

       C-a f  or  C-a C-f   (flow)
              Cycles the current  window's  flow-control  setting
              from  "automatic" to "on" to "off", see the section
              titled FLOW-CONTROL for details.

       C-a C-g   (vbell)
              Toggles screen's visual bell mode. If your terminal
              does  not  support a visual bell, a `vbell-message'
              is displayed in the status line.

       C-a h  or  C-a C-h   (hardcopy)
              Write a hardcopy of the current window to the  file
              "hardcopy.n"  in  the  window's  default directory,
              where n is the number of the current window.

       C-a H   (log)
              Begins/ends logging of the current  window  to  the
              file  "screenlog.n"  in the window's default direc-
              tory, where n is the number of the current  window.
              The  session  log  is appended to the previous con-
              tents of the file if it already exists.   The  cur-
              rent  contents  and  the contents of the scrollback
              history are not included in the session log.

       C-a i  or  C-a C-i   (info)
              Uses the message line to display  some  information
              about  the  current  window: the cursor position in
              the form "(column,row)" starting with "(1,1)",  the
              terminal  width  and  height  plus  the size of the
              scrollback buffer in lines, like  in  "(80,24)+50",
              various  flag  settings (flow-control, insert mode,
              origin mode, wrap  mode,  application-keypad  mode,
              output  logging,  activity  monitoring,  and redraw
              (`+' indicates enabled, `-'  not)),  the  currently
              active  character  set  (G0, G1, G2, or G3), and in
              square brackets the terminal  character  sets  that
              are  currently  designated  as  G0 through G3.  For
              system information use "C-a t".

       C-a k  or  C-a C-k   (kill)
              Kill the current window and switch  to  the  previ-
              ously  displayed  window.  Note: Emacs users should



                         31 January 1992                        4




SCREEN(1)                                               SCREEN(1)


              keep this command in mind, when killing a line.  It
              is  recommended  not  to  use  "C-a"  as the screen
              escape key or that kill is rebound to "C-a K".

       C-a l  or  C-a C-l   (redisplay)
              Redisplay the current window.

       C-a L   (login)
              Adds or removes the entry in /etc/utmp file for the
              current  window.   This  controls  if the window is
              `logged in'. See also above.  Additionally to  that
              toggle,  it  is  convenient having a `log in' and a
              `log out' key. E.g. `bind I set login on' and `bind
              O  set  login  off' will map these keys to be C-a I
              and C-a O.

       C-a m  or  C-a C-m   (lastmsg)
              Repeat the last message displayed  in  the  message
              line.   Useful  if  you're  typing  when  a message
              appears, because (unless your terminal has a status
              line) the message goes away when you press a key.

       C-a M   (monitor)
              Toggles  monitoring  of  the  current window.  When
              monitoring is turned on and the affected window  is
              switched  into the background, you will receive the
              activity notification message in the status line at
              the  first  sign of output and the window will also
              be marked with an `@' in the window-status display.
              Monitoring is initially off for all windows.

       C-a space  or  C-a n  or  C-a C-n   (next)
              Switch  to  the  next window.  This function can be
              used repeatedly to cycle through the list  of  win-
              dows.   (Some  terminals require you to release the
              control key before pressing space.)

       C-a p  or  C-a C-p   (prev)
              Switch to the previous window (the opposite of  C-a
              n).

       C-a q  or  C-a C-q   (xon)
              Send a control-q to the program in the current win-
              dow.

       C-a r  or  C-a C-r   (wrap)
              Toggle the current window's line-wrap setting (turn
              the current window's automatic margins on and off).

       C-a s  or  C-a C-s   (xoff)
              Send a control-s to the program in the current win-
              dow.





                         31 January 1992                        5




SCREEN(1)                                               SCREEN(1)


       C-a t  or  C-a C-t   (time)
              Uses  the  message line to display the time of day,
              the host name, and the load averages over 1, 5, and
              15  minutes  (if this is available on your system).
              For window specific information use "C-a i".

       C-a v  or  C-a C-v   (version)
              Display the version and compilation date.

       C-a w  or  C-a C-w   (windows)
              Uses the message line to display a list of all  the
              windows.   Each window is listed by number with the
              name of process that has been started in the window
              (or  its a.k.a.); the current window is marked with
              a `*'; the previous window is marked  with  a  `-';
              all  the  windows  that  are "logged in" are marked
              with a `$'; a background window that has received a
              bell is marked with a `!'; a background window that
              is being monitored and has had  activity  occur  is
              marked  with an `@'; a window which has output log-
              ging turned on is marked with `(L)'.

       C-a W   (width)
              Toggle the window width between 80 and 132 columns.
              As  this  command  became  a  toggle, "C-a N" is no
              longer supported.  This requires a capable terminal
              and  the  termcap  entries  "Z0" and "Z1".  See the
              "termcap" command in  section  "CUSTOMIZATION"  for
              more information.

       C-a x  or  C-a C-x   (lock)
              Call   a   screenlock  program  (/local/bin/lck  or
              /usr/bin/lock or a builtin, if no other  is  avail-
              able).  Screen  does  not  accept  any command keys
              until this program terminates. Meanwhile  processes
              in  the windows may continue, as the windows are in
              the `detached' state. The screenlock program may be
              changed  through  the environment variable $LOCKPRG
              (which must be set in the shell from  which  screen
              is started) and is executed with the user's uid and
              gid.

       C-a z  or  C-a C-z   (suspend)
              Suspend screen.  The windows are in the  `detached'
              state, while screen is suspended.

       C-a Z   (reset)
              Reset  the  virtual terminal to its "power-on" val-
              ues.

       C-a .   (termcap)
              Write the termcap entry for the virtual terminal of
              the  currently active window to the file ".termcap"
              in  the  user's   "$HOME/.screen"   directory   (or



                         31 January 1992                        6




SCREEN(1)                                               SCREEN(1)


              wherever screen stores its sockets. See the "FILES"
              section below).  This termcap entry is identical to
              the value of the environment variable $TERMCAP that
              is set up by screen for each window.  For  terminfo
              based systems you will need to run a converter like
              captoinfo and then compile the entry with tic.

       C-a ?   (help)
              Displays a help screen  showing  you  all  the  key
              bindings.   The  first  pages list all the internal
              commands followed by  their  bindings.   Subsequent
              pages will display the custom commands, one command
              per key.  Press space when you're done reading each
              page,  or  return to exit early.  All other charac-
              ters are ignored, except for the command character,
              which  will  exit the help display and begin a com-
              mand.

       C-a C-\   (quit)
              Kill all windows and terminate screen.   Note  that
              on  vt100-style  terminals the keys C-4 and C-\ are
              identical.  So be careful not to write C-a C-4 when
              selecting window no. 4.  Use the empty bind command
              (as in "bind '^'") to remove a key binding.

       C-a :   (colon)
              Allows you to enter ".screenrc"  command  lines  as
              well  as  names  of key-bound-functions. Useful for
              on-the-fly modification of key  bindings,  specific
              window  creation and changing settings. Settings of
              the current window can be changed by prepending the
              command  (if  appropriate)  with the keyword "set".
              If you consider this as the `Ex  command  mode'  of
              screen, you may regard "C-a esc" as its `Vi command
              mode'.

       C-a [  or  C-a C-[  or  C-a esc   (copy)
              Enter copy/scrollback mode. This allows you to copy
              text  from  the current window and its history into
              the paste buffer. In  this  mode  a  vi-like  `full
              screen editor' is active:
              Movement keys:
              h,  j,  k, l move the cursor line by line or column
              by column.
              0, ^ and $ move to  the  leftmost  column,  to  the
              first or last non-whitespace character on the line.
              H, M and L move the cursor to the  leftmost  column
              of the top, center or bottom line of the window.
              + and - positions one line up and down.
              G  moves  to  the specified absolute line (default:
              end of buffer).
              | moves to the specified absolute column.
              w, b, e move the cursor word by word.
              C-u and C-d  scroll  the  display  up/down  by  the



                         31 January 1992                        7




SCREEN(1)                                               SCREEN(1)


              specified amount of lines while preserving the cur-
              sor position. (Default: half screenfull).
              C-b and C-f  scroll  the  display  up/down  a  full
              screen.
              g moves to the beginning of the buffer, whereas
              % jumps to the specified percentage.
              Note:  Emacs  style movement keys can be customized
              by   a   .screenrc   command.    (E.g.     markkeys
              "h=^B:l=^F:$=^E")  There  is no simple method for a
              full emacs-style keymap, as  this  involves  multi-
              character codes.
              Marking:
              The  copy  range is specified by setting two marks.
              The text between these marks will  be  highlighted.
              Press space to set the first or second mark respec-
              tively.
              Y and y can be used to mark one whole  line  or  to
              mark from start of line.
              W marks exactly one word.
              Repeat count:
              Any of these commands can be prefixed with a number
              (by pressing digits  0..9)  which  is  taken  as  a
              repeat  count.  Example:  "C-a C-[ H 10 j 5 Y" will
              copy lines 11 to 15 into the pastebuffer.
              Specials:
              There are however some keys  that  act  differently
              here  and in vi.  Vi does not allow to yank rectan-
              gular blocks of text, but screen does. Press
              c or C to set the  left  or  right  margin  respec-
              tively.  If  no repeat count is given, both default
              to the current  cursor  position.  Try  this  on  a
              rather  full  text screen as an example: "C-A [ S-M
              20 l SPACE c 10 l 5 j S-C SPACE".
              J joins lines. It toggles between  3  modes:  lines
              separated by a newline character (012), lines glued
              seamless, lines separated by a  single  whitespace.
              Note  that  you  can  prepend the newline character
              with a carriage return character, by issuing a "set
              crlf on".
              v  is for all the vi users with ":set numbers" - it
              toggles the left margin between column 9 and 1.
              Press a before the final space  key  to  toggle  in
              append  mode.  Thus the contents of the pastebuffer
              will not be overwritten, but appended to.
              A toggles in append mode and sets a (second)  mark.
              > sets the (second) mark and writes the contents of
              the  copybuffer   to   the   screen-exchange   file
              (/tmp/screen-exchange  per  default) once copy-mode
              is finished. This example demonstrates how to  dump
              the  whole scrollback buffer to that file: "C-A [ g
              SPACE G $ >".
              ? gives information about the current line and col-
              umn.




                         31 January 1992                        8




SCREEN(1)                                               SCREEN(1)


       C-a ]  or  C-a C-]   (paste)
              Paste.  Write  the  contents of the paste buffer to
              the stdin queue of the current window.

       C-a {   (history)
              Usually users work with a shell  that  allows  easy
              access to previous commands.  E.g. csh has the com-
              mand "!!" to  repeat  the  last  command  executed.
              Screen  allows  you  to have a primitive way of re-
              calling "the command that started  ...":  You  just
              type the first letter of that command, then hit `C-
              a {' and screen tries to find a previous line  that
              matches  with the `prompt character' to the left of
              the cursor. This line is pasted into this  window's
              input queue.  Thus you have a crude command history
              (made up by the visible window and  its  scrollback
              buffer).

       C-a >   (write_buffer)
              Writes the contents of the paste buffer to a public
              accessible screen-exchange file. This is thought of
              as  a  primitive  means  of  communication  between
              screen users on the same host. See also "C-a  esc".

       C-a <   (read_buffer)
              Reads  the  screen-exchange  file  into  the paste-
              buffer. See also "C-a ]".

       C-a =   (kill_buffer)
              Removes the exchange file used by "C-a <" and  "C-a
              >".

COMMAND-LINE OPTIONS
       Screen has the following command-line options:

       -a   include all capabilities (with some minor exceptions)
            in each window's termcap, even if screen must  redraw
            parts  of  the  display in order to implement a func-
            tion.

       -A   Adapt the sizes of all windows to  the  size  of  the
            display.   By  default, screen may try to restore its
            old window sizes.

       -c file
            override  the   default   configuration   file   from
            "$HOME/.screenrc" to file.

       -d|-D [pid.tty.host]
            does  not start screen, but detach the elsewhere run-
            ning screen session. It has the same effect as typing
            "C-a d" from screen's controlling terminal. -D is the
            equivalent to the power detach key.   If  no  session
            can   be  detached,  this  option  is  ignored.   The



                         31 January 1992                        9




SCREEN(1)                                               SCREEN(1)


            combination "screen -D -r" can be used to `transport'
            the  elsewhere  running  session to this terminal and
            logout there.  Note: It is a good idea  to  have  the
            status  of  your sessions checked by means of "screen
            -list".

       -e xy
            specifies the command character to be x and the char-
            acter  generating  a  literal  command character to y
            (when  typed  after  the  command  character).    The
            default  is  "C-a" and `a', which can be specified as
            "-e^Aa".  See the "escape" .screenrc command for more
            details.

       -f, -fn, and -fa
            turns  flow-control  on, off, or "automatic switching
            mode".  This can also be defined through  the  "flow"
            .screenrc command.

       -h num
            Specifies  the  history  scrollback  buffer to be num
            lines high.

       -i   will cause the interrupt key (usually C-c) to  inter-
            rupt the display immediately when flow-control is on.
            See the "flow" .screenrc command for details.

       -l and -ln
            turns login mode on or off (for /etc/utmp  updating).
            This   can   also  be  defined  through  the  "login"
            .screenrc command.

       -ls and -list
            does  not  start  screen,  but  prints  a   list   of
            pid.tty.host  strings  identifying  your  screen ses-
            sions.  Sessions marked  `detached'  can  be  resumed
            with "screen -r". Those marked `attached' are running
            and have a controlling terminal. Sessions  marked  as
            `dead'  should be thoroughly checked and removed. Ask
            your system administrator if you are not sure. Remove
            sessions with the -wipe option.

       5    -m  disables looking in environment variable $STY for
            an alternate socket name.

       -t name or -k name
            sets the title (a.k.a.)  for  the  default  shell  or
            specified program.  See also the "shellaka" .screenrc
            command.

       -wipe
            does the same as "screen -ls", but removes  destroyed
            sessions instead of marking them as `dead'.




                         31 January 1992                       10




SCREEN(1)                                               SCREEN(1)


       -L   tells screen your auto-margin terminal has a writable
            last-position on the screen.  This can also be set in
            your .screenrc by specifying `LP' in a "termcap" com-
            mand.

       -O   selects a more optimal output mode for your  terminal
            rather  than true vt100 emulation (only affects auto-
            margin terminals without `LP').  This can also be set
            in  your  .screenrc by specifying `OP' in a "termcap"
            command.

       -r [pid.tty.host]
            resumes a detached screen session.  No other  options
            (except  "-d -r" or "-D -r") may be specified, though
            an optional prefix of [pid.]tty.host may be needed to
            distinguish  between  multiple  detached  screen ses-
            sions.

       -R   attempts to resume the first detached screen  session
            it  finds.   If  successful,  all  other command-line
            options are ignored.  If no detached session  exists,
            starts  a  new  session  using the specified options,
            just as if -R were not specified.

       -s   sets the default  shell  to  the  program  specified,
            instead  of  the  value  in  the environment variable
            $SHELL (or "/bin/sh" if not defined).  This can  also
            be defined through the "shell" .screenrc command.

CUSTOMIZATION
       The "socket directory" defaults either to $HOME/.screen or
       preferably  to  /local/screens.  If  screen  is  installed
       setuid-root,  then the administrator should compile screen
       with an adequate (not NFS mounted) SOCKDIR. If  screen  is
       not running setuid-root, the user can specify any mode 777
       directory in the environment variable $SCREENDIR.

       When screen is invoked, it  executes  initialization  com-
       mands   from  the  files  "/usr/contrib/lib/screenrc"  and
       ".screenrc" in the user's home directory.  These  are  the
       "programmer's defaults" that can be overridden in the fol-
       lowing ways: For the global screenrc file screen  searches
       for  the  environment variable $SYSSCREENRC. The user spe-
       cific screenrc  file  is  searchend  in  $ISCREENRC,  then
       $SCREENRC,  then  $HOME/.iscreenrc and finally defaults to
       $HOME/.screenrc. The command line option -c  takes  prece-
       dence  over  the user specific screenrc file.  Commands in
       these files are used to set  options,  bind  functions  to
       keys,  and  to  automatically  establish one or more extra
       windows at the beginning of your screen session.  Commands
       are  listed  one per line, with empty lines being ignored.
       A command's arguments are separated by tabs or spaces, and
       may be surrounded by single or double quotes.  A `#' turns
       the rest of the line into a  comment,  except  in  quotes.



                         31 January 1992                       11




SCREEN(1)                                               SCREEN(1)


       Unintelligible  lines  are warned about and ignored.  Com-
       mands may contain references to environment variables. The
       syntax  is  the  shell-like "$VAR " or "${VAR}". Note that
       this causes incompatibilities with  previous  screen  ver-
       sions,  as now the '$'-sign has to be protected with '' if
       no variable substitution shall be performed.

       Customization can also be done  'on-line'.  To  enter  the
       command mode type `C-a :'. Setting flags (like scrollback,
       login, etc.) on-line may not have the desired  effect,  as
       e.g.  the  command  "C-a  : login on" will affect only the
       settings for the creation of new windows (just like within
       .screenrc).   If you intend to change flags of the current
       window, then prepend the command with the  keyword  "set".
       E.g.  "C-a : set login on" will log this window in.

       The following initialization commands are available:

       activity message

       When  any  activity  occurs in a background window that is
       being monitored, screen displays  a  notification  in  the
       message  line.  The notification message can be re-defined
       by means of the "activity" command.   Each  occurrence  of
       `%'  in message is replaced by the number of the window in
       which activity has occurred, and each occurrence of `~' is
       replaced  by the definition for bell in your termcap (usu-
       ally an audible bell).  The default message is

            'Activity in window %'

       Note that monitoring is off for all  windows  by  default,
       but  can  be  altered by use of the "monitor" command (C-a
       M).

       autodetach on|off

       Sets whether screen will automatically detach upon hangup,
       which  saves  all  your  running  programs  until they are
       resumed with a screen -r  command.   When  turned  off,  a
       hangup  signal will terminate screen and all the processes
       it contains. Autodetach is on by default.

       bell message

       When a bell character is  sent  to  a  background  window,
       screen  displays  a notification in the message line.  The
       notification message can be re-defined  by  means  of  the
       "bell"  command.   Each  occurrence  of  `%' in message is
       replaced by the number of the window to which a  bell  has
       been  sent,  and each occurrence of `~' is replaced by the
       definition for bell in your termcap  (usually  an  audible
       bell).  The default message is




                         31 January 1992                       12




SCREEN(1)                                               SCREEN(1)


            'Bell in window %'

       An  empty message can be supplied to the "bell" command to
       suppress output of a message line (bell "").

       bind key [function [args]]

       Bind a function to a key.  By default, each function  pro-
       vided  by screen is bound to one or more keys as indicated
       by the above table, e.g. the function to create a new win-
       dow  is bound to "C-c" and "c".  The "bind" command can be
       used to redefine the key bindings and to define new  bind-
       ings.   The  key  argument is either a single character, a
       two-character sequence of the form "^x" (meaning "C-x"), a
       backslash  followed  by  an  octal  number (specifying the
       ASCII code of the character), or a backslash followed by a
       second  character, such as "\^" or "\\".  The argument can
       also be quoted, if you like.  If no  further  argument  is
       given,  any previously established binding for this key is
       removed.  The function argument can be one of the  follow-
       ing keywords:

            select0      Switch to window #0
              ...
            select9      Switch to window #9
            aka          Change the current window's a.k.a.
            clear        Clear the screen
            colon        Enter one ".screenrc" command on-the-fly.
            copy         Select a piece of text.
            detach       Detach screen
            flow         Toggle the current window's flow-control setting
            hardcopy     Make hardcopy of current window
            history      Use cut&paste to fetch a recently displayed line.
            help         Display a list of the key bindings in effect
            info         Display the current window's status information
            kill         Kill the current window
            lastmsg      Redisplay the last message line
            lock         Run a screenlock program.
            log          Begin/end logging of the current window's output
            login        Toggle the window's "login" setting (/etc/utmp entry)
            monitor      Toggle activity monitoring of the current window
            next         Switch to the next window
            other        Switch to the window displayed previously
            paste        Paste in a selected piece of text.
            pow_detach   Detach screen and logout.
            prev         Switch to the previous window
            quit         Kill all windows and terminate
            readbuffer   Take text from the exchange file.
            redisplay    Redisplay current window
            reset        Reset the window to its "power-on" settings
            screen       Create a new window with the specified command
            shell        Create a new window with a shell
            suspend      Suspend screen
            termcap      Write screen's termcap entry to $HOME/.screencap



                         31 January 1992                       13




SCREEN(1)                                               SCREEN(1)


            vbell        Toggle the window's "vbell" setting.
            version      Display the version numbers and date last modified
            width        Toggle the terminal width between 80 and 132 columns
            windows      Display a list of all windows
            wrap         Toggle the current window's line-wrap setting
            writebuffer  Store the selected text in the exchange file.
            xoff         Send a control-s to the current program
            xon          Send a control-q to the current program

       Some examples:

            bind ' ' windows
            bind ^f screen telnet foobar
            bind \033 screen -ln -t root -h 1000 9 su

       would  bind  the space key to the function that displays a
       list of windows (so that the function usually  invoked  by
       "C-a  C-w"  would  also be available as "C-a space"), bind
       "C-f" to the function "create a window with a TELNET  con-
       nection to foobar", and bind "escape" to the function that
       creates an non-login window with a.k.a. "root" in slot #9,
       with  a  super-user  shell  and a scrollbackbuffer of 1000
       lines.

       bufferfile exchange-file

       Change the filename used for reading and writing with  the
       copybuffer.   The  default  is "/tmp/screen-exchange". The
       following example will paste the  system's  password  file
       into the screen window:

            C-a : bufferfile /etc/passwd
            C-a < C-a ]

       chdir [directory]

       Change  the  current  directory of screen to the specified
       directory or, if called without an argument, to your  home
       directory  (the  value of the environment variable $HOME).
       All windows that are created by means of the "screen" com-
       mand  from within ".screenrc" or by means of "C-a : screen
       ..." or "C-a c"  use  this  as  their  default  directory.
       Without  a chdir command, this would be the directory from
       which screen was invoked.   Hardcopy  and  log  files  are
       always  written to the window's default directory, not the
       current directory of the process running  in  the  window.
       You  can use this command multiple times in your .screenrc
       to start various windows in different default directories,
       but  the  last chdir value will affect all the windows you
       create interactively.

       crlf on|off

       This affects the copying of text regions with the `C-a  ['



                         31 January 1992                       14




SCREEN(1)                                               SCREEN(1)


       command.  If it is set to `on', lines will be separated by
       the two character sequence `CR' -  `LF'.   Otherwise  only
       `LF' is used.

       echo [-n] message

       The  echo command may be used to annoy screen users with a
       'message of the day'.  Typically  installed  in  a  global
       /usr/contrib/lib/screenrc. See also "sleep".  Echo is also
       useful for online checking of environment variables.

       escape xy

       Set the command character to x and the character  generat-
       ing  a literal command character to y (just like in the -e
       option).  Each argument is either a  single  character,  a
       two-character sequence of the form "^x" (meaning "C-x"), a
       backslash followed by  an  octal  number  (specifying  the
       ASCII code of the character), or a backslash followed by a
       second character, such as "\^" or "\\".   The  default  is
       "^Aa", but "``" is recommended by one of the authors.

       flow on|off|auto [interrupt]

       Sets the default flow-control mode for new windows.  Spec-
       ifying "flow auto interrupt" is the same as  the  command-
       line  options  -fa  and  -i.   See the discussion on FLOW-
       CONTROL later on in this document  for  full  details  and
       note, that this is subject to change in future releases.

       hardcopyappend on|off

       If  set  to  "on",  screen will append to the "hardcopy.n"
       files created by the  command  "C-a  h",  otherwise  these
       files are overwritten each time.

       hardstatus on|off

       Toggles  the use of the terminals hardware status line. If
       "on", screen will use this facility to  display  one  line
       messages.   Otherwise  these  messages  are  overlayed  in
       reverse video mode at the  display  line.  Note  that  the
       hardstatus  feature  should  only  be  used,  if the term-
       cap/terminfo capabilities "hs", "ts", "fs"  and  "ds"  are
       set properly.

       login on|off

       Sets the login flag which determines if new windows should
       have /etc/utmp entries added for them.  The login state is
       also  changeable  on-the-fly by using the bindable version
       of the "login" command (C-a L) of by means of "C-a  :  set
       login  on|off".   The  default should be "on" for a screen
       that runs under suid-root.



                         31 January 1992                       15




SCREEN(1)                                               SCREEN(1)


       markkeys string

       This  is  a  method  of  changing  the  keymap  used   for
       copy/history   mode.   The  string  is  made  up  of  old-
       char=newchar pairs which are separated  by  `:'.  Example:
       The  string "B=^B:F=^F" will change the keys `C-b' and `C-
       f' from their (original emacs-style bindings)  to  the  vi
       style  binding  (scroll  up/down  full page), which is the
       default meaning of `B' and `F'.

       mode mode

       The mode of each newly  allocated  pseudo-tty  is  set  to
       mode.  Mode is an octal number.  When no "mode" command is
       given, mode 0622 is used.

       monitor on|off

       Toggles activity monitoring of windows.   When  monitoring
       is  turned  on and an affected window is switched into the
       background, you will  receive  the  activity  notification
       message in the status line at the first sign of output and
       the window will also be marked with an `@' in the  window-
       status  display.  Monitoring is initially off for all win-
       dows.

       msgminwait sec

       Defines the time screen delays all activity after  a  mes-
       sage was dispayled. The default is 1 second.

       msgwait sec

       Defines  the time a message is displayed, if screen is not
       disturbed by other activity. The default is 5 seconds.

       nethack on|off

       Changes the kind of error messages used by  screen.   When
       you  are  familiar  with the game "nethack", you may enjoy
       the nethack-style messages which will often blur the facts
       a  little,  but are much funnier to read. Anyway, standard
       messages often tend to be unclear as well.
       This option is only available if screen was compiled  with
       the  NETHACK  flag  defined.  The  default setting is then
       determined by the presence  of  the  environment  variable
       $NETHACKOPTIONS.

       password [cryptedpw]

       Present  a  crypted  password in your ".screenrc" file and
       screen will ask for it, whenever  a  detached  session  is
       tried  to  be  resumed. This is useful, if you have privi-
       leged programs  running  under  screen  and  you  want  to



                         31 January 1992                       16




SCREEN(1)                                               SCREEN(1)


       protect  your session from reattach attempts by users that
       managed to have your uid. (I.e. any superuser.)

       powdetachmsg message

       The message specified here is  output  whenever  a  `Power
       detach' was performed. It may be used as a replacement for
       a logout message or to reset baud rate, etc.

       screen [-opts] [n] [cmd [args]]

       Establish a new window.  The flow-control options (-f, -fn
       and  -fa),  title  (a.k.a.) option (-t), login options (-l
       and -ln) , terminal type option (-T <term>) and scrollback
       option  (-h  <num>) may be specified for each command.  If
       an optional number n in the range 0..9 is given, the  win-
       dow  number n is assigned to the newly created window (or,
       if this number is already in-use, the next available  num-
       ber).  If a command is specified after "screen", this com-
       mand (with the given arguments) is started in the  window;
       otherwise,  a shell is created.  Thus, if your ".screenrc"
       contains the lines

            # example for .screenrc:
            screen 1
            screen -fn -t foobar 2 telnet foobar

       screen creates a shell window (in window #1) and a  window
       with  a  TELNET  connection to the machine foobar (with no
       flow-control using the a.k.a. "foobar" in window #2).   If
       you do not include any screen commands in your ".screenrc"
       file, then screen defaults to creating a single shell win-
       dow,  number  zero.  When the initialization is completed,
       screen switches to  the  last  window  specified  in  your
       .screenrc file or, if none, it opens default window #0.

       scrollback num

       Set  the  size of the scrollback buffer for new windows to
       num lines.  The default scrollback is 50 lines.  Use  "C-a
       : set scrollback num" to change the scrollback size of the
       current window and use "C-a i" to view  the  current  set-
       ting.

       redraw on|off

       Define  whether  the  display should be refreshed (as done
       with "C-a l") after switching to the  current  window.  As
       usual  when  the "set" keyword is given, this command only
       affects the current window.  But  unlike  other  commands,
       "redraw off" (without "set") affects all windows, the win-
       dow specific settings come into effect again when  "redraw
       on" (without "set") is entered.




                         31 January 1992                       17




SCREEN(1)                                               SCREEN(1)


       shell command

       Set  the  command  to be used to create a new shell.  This
       overrides the value of the environment variable $SHELL, or
       "/bin/sh"  if  undefined.  This is useful if you'd like to
       run a tty-enhancer which is expecting to execute the  pro-
       gram specified in $SHELL.

       shellaka a.k.a.

       Set the a.k.a. for all shells created during startup or by
       the C-A C-c command.  For details about what a.k.a.'s are,
       see the discussion entitled ALSO KNOWN AS.

       sleep  num  This  command  will  pause  the execution of a
       .screenrc file for num seconds.  It may be  used  to  give
       users a chance to read the messages output by "echo".

       slowpaste usec

       Define  the  speed text is inserted by the paste ("C-a ]")
       command. For each 80  characters  (IOSIZE)  pasted  screen
       will make a pause of usec milliseconds to allow the appli-
       cation the processing of input. Use that, if you  have  to
       fear that your underlying system chokes on large pastes.

       startupmessage on|off

       Select whether to display the copyright notice when screen
       starts up.

       term term

       In each window's environment screen  opens,  it  sets  the
       $TERM  variable to "screen" by default, unless no descrip-
       tion for "screen" is installed in  the  local  termcap  or
       terminfo  data  base.   In  that case it pretends that the
       terminal emulator is "vt100". This won't do much harm,  as
       screen  is  VT100/ANSI  compatible.  The use of the "term"
       command is discouraged for non-default purpose.  That  is,
       one  may  want  to  specify  special  $TERM settings (e.g.
       vt100) for the next "screen rlogin othermachine"  command.
       Use  the  command  "screen  -T  vt100 rlogin othermachine"
       rather than setting ("term vt100")  and  resetting  ("term
       screen")  the  default  before and after the "screen" com-
       mand.

       termcap term terminal-tweaks [window-tweaks]
       terminfo term terminal-tweaks [window-tweaks]

       Use this command to modify your terminal's  termcap  entry
       without going through all the hassles involved in creating
       a custom termcap entry.  Plus,  you  can  optionally  cus-
       tomize  the  termcap  generated  for the windows.  If your



                         31 January 1992                       18




SCREEN(1)                                               SCREEN(1)


       system works with terminfo-database rather than with term-
       cap  screen  will  understand the `terminfo' command which
       has the same effects as the `termcap' command. Thus  users
       can  write  one  .screenrc  file  that handles both cases,
       although terminfo syntax is slightly different from  term-
       cap syntax.

       The  first  argument specifies which terminal(s) should be
       affected by this definition.   You  can  specify  multiple
       terminal  names  by separating them with `|'s.  Use `*' to
       match all terminals and `vt*' to match all terminals  that
       begin with "vt".

       Each  tweak  argument contains one or more termcap defines
       (separated by `:'s) to be inserted at  the  start  of  the
       appropriate  termcap  entry,  enhancing  it  or overriding
       existing values.  The first tweak modifies your terminal's
       termcap,  and contains definitions that your terminal uses
       to perform certain functions.  Specify a  null  string  to
       leave  this  unchanged  (e.g.  '').  The second (optional)
       tweak modifies all the window termcaps, and should contain
       definitions that screen understands (see the "VIRTUAL TER-
       MINAL" section).

       Some examples:

              termcap xterm*  LP:hs@

       Informs screen that all terminals that begin with  `xterm'
       have firm auto-margins that allow the last position on the
       screen to be updated (LP), but they don't  really  have  a
       status  line  (no 'hs' -- append `@' to turn entries off).
       Note that we assume `LP' for all terminal names that start
       with "vt", but only if you don't specify a termcap command
       for that terminal.

            termcap vt*  LP
            termcap vt102|vt220  Z0=\E[?3h:Z1=\E[?3l

       Specifies the firm-margined `LP' capability for all termi-
       nals  that  begin with `vt', and the second line will also
       add the escape-sequences to switch into (Z0) and back  out
       of  (Z1) 132-character-per-line mode if this is a vt102 or
       vt220.  (You must specify Z0 and Z1 in your termcap to use
       the width-changing commands.)

              termcap vt100  ""  l0=PF1:l1=PF2:l2=PF3:l3=PF4

       This leaves your vt100 termcap alone and adds the function
       key labels to each window's termcap entry.

              termcap h19|z19  am@:im=\E@:ei=\EO  dc=\E[P

       Takes a h19 or z19  termcap  and  turns  off  auto-margins



                         31 January 1992                       19




SCREEN(1)                                               SCREEN(1)


       (am@) and enables the insert mode (im) and end-insert (ei)
       capabilities (the `@' in the `im' string is after the `=',
       so  it  is  part of the string).  Having the `im' and `ei'
       definitions put into your terminal's  termcap  will  cause
       screen  to  automatically  advertise  the character-insert
       capability in each window's  termcap.   Each  window  will
       also get the delete-character capability (dc) added to its
       termcap, which screen will translate  into  a  line-update
       for  the  terminal  (we're  pretending  it doesn't support
       character deletion).

       If you would like to fully specify each  window's  termcap
       entry,  you  should  instead  set  the $SCREENCAP variable
       prior to running screen.  See the discussion on the  "VIR-
       TUAL TERMINAL" in this manual, and the termcap(5) man page
       for more information on termcap definitions.

       vbell on|off

       Sets the visual bell setting for new windows. If your ter-
       minal  does not support a visual bell a message is printed
       to the status line. The default message is "Wuff, Wuff!!".

       vbellmsg message

       Sets  the  visual  bell message. message is printed to the
       status line if the window receives a bell  character  (^G)
       and vbell is set to "on".

       vbellwait sec

       Define  a delay in seconds after each display of screen 's
       visual bell message. The default is 0 seconds.

       wrap on|off

       Sets the line-wrap setting for new  windows.   When  line-
       wrap  is  on,  the  second consecutive printable character
       output at the last column of a line will wrap to the start
       of  the  following  line.   As an added feature, backspace
       (^H) will also wrap through the left margin to the  previ-
       ous  line.   Line-wrap is on by default and can be toggled
       with the "wrap" command ("C-a r") or by means  of  "C-a  :
       set wrap on|off".

THE MESSAGE LINE
       Screen  displays informational messages and other diagnos-
       tics in a message line at the bottom of  the  screen.   If
       your  terminal  has  a status line defined in its termcap,
       screen will use this for displaying its  messages,  other-
       wise the last line of the screen will be temporarily over-
       written and output will be momentarily  interrupted.   The
       message  line is automatically removed after a few seconds
       delay, but it can also  be  removed  early  (on  terminals



                         31 January 1992                       20




SCREEN(1)                                               SCREEN(1)


       without a status line) by beginning to type.

       The  message  line  facility can be used by an application
       running in the current window by means of the ANSI Privacy
       message  control  sequence.  For instance, from within the
       shell, try something like:

              echo '<esc>^Hello world<esc>\\'

       where '<esc>' is an escape, '^' is a literal up-arrow, and
       '\\' turns into a single backslash.

FLOW-CONTROL
       Each window has a flow-control setting that determines how
       screen deals with the XON and XOFF characters (and perhaps
       the  interrupt  character).   When  flow-control is turned
       off, screen ignores the XON  and  XOFF  characters,  which
       allows  the  user  to  send them to the current program by
       simply typing them  (useful  for  the  emacs  editor,  for
       instance).   The trade-off is that it will take longer for
       output from a "normal" program to pause in response to  an
       XOFF.   With  flow-control turned on, XON and XOFF charac-
       ters are used to immediately pause the output of the  cur-
       rent  window.   You can still send these characters to the
       current program, but you must  use  the  appropriate  two-
       character screen commands (typically "C-a q" (xon) and "C-
       a s" (xoff)).  The xon/xoff commands are also  useful  for
       typing  C-s  and C-q past a terminal that intercepts these
       characters.

       Each window has an initial  flow-control  value  set  with
       either  the -f option or the "flow" .screenrc command. Per
       default the windows are set to  automatic  flow-switching.
       It  can  then  be  toggled between the three states 'fixed
       on', 'fixed off' and

       The automatic flow-switching mode deals with flow  control
       using  the  TIOCPKT  mode (like "rlogin" does). If the tty
       driver does not support TIOCPKT, screen tries to find  out
       the  right mode based on the current setting of the appli-
       cation keypad --  when  it  is  enabled,  flow-control  is
       turned  off  and  visa  versa.   Of  course, you can still
       manipulate flow-control manually when needed.

       If you're running with flow-control enabled and find  that
       pressing  the  interrupt key (usually C-c) does not inter-
       rupt the display until another 6-8 lines have scrolled by,
       try  running  screen  with the "interrupt" option (add the
       "interrupt" flag to the "flow" command in your  .screenrc,
       or  use the -i command-line option).  This causes the out-
       put that screen has accumulated from the interrupted  pro-
       gram  to be flushed.  One disadvantage is that the virtual
       terminal's memory contains the non-flushed version of  the
       output,  which  in rare cases can cause minor inaccuracies



                         31 January 1992                       21




SCREEN(1)                                               SCREEN(1)


       in the output.  For example, if  you  switch  screens  and
       return,  or  update  the screen with "C-a l" you would see
       the version of the output you would  have  gotten  without
       "interrupt"  being  on.   Also, you might need to turn off
       flow-control (or use auto-flow mode to turn it  off  auto-
       matically) when running a program that expects you to type
       the interrupt character as input, as  it  is  possible  to
       interrupt the output of the virtual terminal to your phys-
       ical terminal when flow-control is enabled.  If this  hap-
       pens,  a  simple  refresh  of the screen with "C-a l" will
       restore it.  Give each mode a try, and use whichever  mode
       you find more comfortable.

ALSO KNOWN AS (A.K.A.s)
       You can customize each window's name in the window display
       (viewed with the "windows" command (C-a w)) by setting  it
       with  one  of the a.k.a. commands.  Normally the name dis-
       played is the actual command name of the  program  created
       in the window.  However, it is sometimes useful to distin-
       guish various programs of the same name or to  change  the
       name  on-the-fly  to reflect the current state of the win-
       dow.

       The default name for all shell windows can be set with the
       "shellaka"  command in the .screenrc file, while all other
       windows are created with a "screen" command and  thus  can
       have  their  name  set with the -t option.  Interactively,
       there is the AKA-string escape-sequence (<esc>kname<esc>\)
       and  the  "aka" command (C-a A).  The former can be output
       from an application to control  the  window's  name  under
       software  control,  and  the latter will prompt for a name
       when typed.  You can also bind pre-defined names  to  keys
       with  the  "aka"  command  to  set  things quickly without
       prompting.

       Finally, screen has a  shell-specific  heuristic  that  is
       enabled  by setting the window's name to "search|name" and
       arranging to have a null aka escape-sequence output  as  a
       part of your prompt.  The search portion specifies an end-
       of-prompt search string, while the name portion  specifies
       the  default  shell name for the window.  If the name ends
       in a `:' screen will add what it believes to be  the  cur-
       rent  command running in the window to the end of the win-
       dow's shell name (e.g. "name:cmd").  Otherwise the current
       command  name  supersedes  the shell name while it is run-
       ning.

       Here's how it works:  you must modify your shell prompt to
       output a null aka escape-sequence (<esc>k<esc>\) as a part
       of your prompt.  The last part of your prompt must be  the
       same as the string you specified for the search portion of
       the a.k.a.  Once this is set up, screen will use  the  aka
       escape-sequence to clear the previous command name and get
       ready for the next  command.   Then,  when  a  newline  is



                         31 January 1992                       22




SCREEN(1)                                               SCREEN(1)


       received  from  the shell, a search is made for the end of
       the prompt.  If found, it will grab the first  word  after
       the matched string and use it as the command name.  If the
       command name begins with either '!', '%',  or  '^'  screen
       will  use  the first word on the following line (if found)
       in preference to the  just-found  name.   This  helps  csh
       users  get  better command names when using job control or
       history recall commands.

       Here's some .screenrc examples:

              screen -t top 2 nice top

       Adding this line to your .screenrc  would  start  a  niced
       version of the "top" command in window 2 name "top" rather
       than "nice".

            shellaka '> |csh'
            screen 1

       This file would start a shell using  the  given  shellaka.
       The  a.k.a. specified is an auto-aka that would expect the
       prompt and the typed command to look  something  like  the
       following:

              /usr/joe/src/dir> trn

       (it  looks after the '> ' for the command name).  The win-
       dow status would show the name "trn" while the command was
       running, and revert to "csh" upon completion.

              bind R screen -t '% |root:' su

       Having  this  command in your .screenrc would bind the key
       sequence "C-a R" to the "su" command and give it an  auto-
       aka  name  of  "root:".   For  this  auto-aka to work, the
       screen could look something like this:

            % !em
            emacs file.c

       Here the user typed the csh history  command  "!em"  which
       ran  the  previously  entered "emacs" command.  The window
       status would show "root:emacs" during the execution of the
       command, and revert to simply "root:" at its completion.

            bind o aka
            bind E aka ""
            bind u aka (unknown)

       The  first binding doesn't have any arguments, so it would
       prompt you for an a.k.a. when you type "C-a o".  The  sec-
       ond binding would clear an auto-aka's current setting (C-a
       E).  The third binding  would  set  the  current  window's



                         31 January 1992                       23




SCREEN(1)                                               SCREEN(1)


       a.k.a. to "(unknown)" (C-a u).

       One  thing  to keep in mind when adding a null aka escape-
       sequence to your prompt is that some shells (like the csh)
       count  all  the  non-control  characters  as  part  of the
       prompt's length.  If these invisible characters  aren't  a
       multiple  of  8 then backspacing over a tab will result in
       an incorrect display.  One way to get around  this  is  to
       use a prompt like this:

              set prompt='^[[0000m^[k^[\% '

       The  escape-sequence "<esc>[0000m" not only normalizes the
       character attributes, but all the zeros round  the  length
       of  the  invisible  characters  up  to 8.  Bash users will
       probably  want  to  echo  the  escape  sequence   in   the
       PROMPT_COMMAND:

              PROMPT_COMMAND='echo -n -e "\033k\033\134"'

       (I  used "134" to output a `\' because of a bug in v1.04).

THE VIRTUAL TERMINAL
       Usually screen tries to emulate as much of the  VT100/ANSI
       standard  as  possible. But if your terminal lacks certain
       capabilities the emulation may not be complete.  In  these
       cases screen has to tell the applications that some of the
       features are missing. This is no problem on machines using
       termcap,  because  screen can use the $TERMCAP variable to
       customize the standard screen termcap.
       But if you do a rlogin on another machine or your  machine
       supports  only terminfo this method fails. Because of this
       screen offers a way to deal with these cases. Here is  how
       it works:
       When  screen  tries  to  figure  out  a  terminal name for
       itself, it first looks for an entry named "screen.<term>",
       where  <term>  is the contents of your $TERM variable.  If
       no such entry exists, screen tries "screen"  (or  "screen-
       w",  if the terminal is wide (132 cols or more)).  If even
       this entry cannot be found, "vt100" is used as  a  substi-
       tute.
       The idea is that if you have a terminal which doesn't sup-
       port an important feature (e.g. delete char  or  clear  to
       EOS) you can build a new termcap/terminfo entry for screen
       (named "screen.<dumbterm>") in which this  capability  has
       been  disabled.   If  this  entry  is  installed  on  your
       machines you are able to do a rlogin and  still  keep  the
       correct  termcap/terminfo entry.  The terminal name is put
       in the $TERM variable of all  new  windows.   Screen  also
       sets  the $TERMCAP variable reflecting the capabilities of
       the virtual terminal emulated. Notice  that,  however,  on
       machines  using the terminfo database this variable has no
       effect.  Furthermore, the variable $WINDOW is set  to  the
       window number of each window.



                         31 January 1992                       24




SCREEN(1)                                               SCREEN(1)


       The  actual  set  of capabilities supported by the virtual
       terminal depends on  the  capabilities  supported  by  the
       physical  terminal.  If, for instance, the physical termi-
       nal does not support underscore mode, screen does not  put
       the  `us' and `ue' capabilities into the window's $TERMCAP
       variable, accordingly.  However, a minimum number of capa-
       bilities  must  be supported by a terminal in order to run
       screen; namely scrolling, clear screen, and direct  cursor
       addressing  (in  addition, screen does not run on hardcopy
       terminals or on terminals that over-strike).

       Also, you can customize the $TERMCAP value used by  screen
       by  using  the "termcap" .screenrc command, or by defining
       the variable $SCREENCAP prior to startup.  When the latter
       defined,  its value will be copied verbatim into each win-
       dow's $TERMCAP variable.  This can either be the full ter-
       minal   definition,  or  a  filename  where  the  terminal
       "screen" (and/or "screen-w") is defined.

       Note that screen honors the "terminfo"  .screenrc  command
       if the system uses the terminfo database rather than term-
       cap.

       When the boolean `G0' capability is present in the termcap
       entry  for  the  terminal on which screen has been called,
       the terminal emulation of screen supports multiple charac-
       ter  sets.  This allows an application to make use of, for
       instance, the VT100 graphics  character  set  or  national
       character  sets.  The following control functions from ISO
       2022 are supported: lock shift  G0  (SI),  lock  shift  G1
       (SO),  lock  shift G2, lock shift G3, single shift G2, and
       single shift G3.  When a virtual terminal  is  created  or
       reset, the ASCII character set is designated as G0 through
       G3.  When the `G0' capability is present, screen evaluates
       the  capabilities `S0', `E0', and `C0' if present. `S0' is
       the sequence the terminal uses to  enable  and  start  the
       graphics character set rather than SI.  `E0' is the corre-
       sponding replacement for SO. `C0'  gives  a  character  by
       character  translation  string  that  is used during semi-
       graphics mode. This string is built like the  `acsc'  ter-
       minfo capability.

       When  the  `po'  and  `pf' capabilities are present in the
       terminal's termcap entry, applications running in a screen
       window  can  send output to the printer port of the termi-
       nal.  This allows a user to have  an  application  in  one
       window sending output to a printer connected to the termi-
       nal, while all other windows are still active (the printer
       port  is enabled and disabled again for each chunk of out-
       put).  As a side-effect,  programs  running  in  different
       windows  can  send  output  to the printer simultaneously.
       Data sent to the printer is not displayed in the window.

       Some capabilities are only put into the $TERMCAP  variable



                         31 January 1992                       25




SCREEN(1)                                               SCREEN(1)


       of  the virtual terminal if they can be efficiently imple-
       mented by  the  physical  terminal.   For  instance,  `dl'
       (delete  line)  is  only put into the $TERMCAP variable if
       the  terminal  supports  either  delete  line  itself   or
       scrolling  regions.  Note that this may provoke confusion,
       when the session is reattached on a different terminal, as
       the  value  of  $TERMCAP cannot be modified by parent pro-
       cesses.

       The following is a list of control sequences recognized by
       screen.  "(V)" and "(A)" indicate VT100-specific and ANSI-
       or ISO-specific functions, respectively.


       ESC E                    Next Line

       ESC D                    Index

       ESC M                    Reverse Index

       ESC H                    Horizontal Tab Set

       ESC 7               (V)  Save Cursor and Attributes

       ESC 8               (V)  Restore Cursor and Attributes

       ESC [s              (A)  Save Cursor and Attributes

       ESC [u              (A)  Restore Cursor and Attributes

       ESC c                    Reset to Initial State

       ESC =               (V)  Application Keypad Mode

       ESC >               (V)  Numeric Keypad Mode

       ESC # 8             (V)  Fill Screen with E's

       ESC \               (A)  String Terminator

       ESC ^               (A)  Privacy Message String (Message Line)

       ESC k                    A.k.a. Definition String

       ESC P               (A)  Device Control String
                                Outputs a string directly to the host
                                terminal without interpretation.

       ESC                (A)  Application Program Command (not used)

       ESC ]               (A)  Operating System Command (not used)

       Control-N           (A)  Lock Shift G1 (SO)




                         31 January 1992                       26




SCREEN(1)                                               SCREEN(1)


       Control-O           (A)  Lock Shift G0 (SI)

       ESC n               (A)  Lock Shift G2

       ESC o               (A)  Lock Shift G3

       ESC N               (A)  Single Shift G2

       ESC O               (A)  Single Shift G3

       ESC ( Pcs           (A)  Designate character set as G0

       ESC ) Pcs           (A)  Designate character set as G1

       ESC * Pcs           (A)  Designate character set as G2

       ESC + Pcs           (A)  Designate character set as G3

       ESC [ Pn ; Pn H          Direct Cursor Addressing

       ESC [ Pn ; Pn f          Direct Cursor Addressing

       ESC [ Pn J               Erase in Display

           Pn = None or 0       From Cursor to End of Screen

                1               From Beginning of Screen to Cursor

                2               Entire Screen

       ESC [ Pn K               Erase in Line

           Pn = None or 0       From Cursor to End of Line

                1               From Beginning of Line to Cursor

                2               Entire Line

       ESC [ Pn A               Cursor Up

       ESC [ Pn B               Cursor Down

       ESC [ Pn C               Cursor Right

       ESC [ Pn D               Cursor Left

       ESC [ Ps ;...; Ps m      Select Graphic Rendition

           Ps = None or 0       Default Rendition

                1               Bold

                2          (A)  Faint




                         31 January 1992                       27




SCREEN(1)                                               SCREEN(1)


                3          (A)  Standout Mode (ANSI: Italicized)

                4               Underlined

                5               Blinking

                7               Negative Image

                22         (A)  Normal Intensity

                23         (A)  Standout Mode off (ANSI: Italicized off)

                24         (A)  Not Underlined

                25         (A)  Not Blinking

                27         (A)  Positive Image

       ESC [ Pn g               Tab Clear

           Pn = None or 0       Clear Tab at Current Position

                3               Clear All Tabs

       ESC [ Pn ; Pn r     (V)  Set Scrolling Region

       ESC [ Pn I          (A)  Horizontal Tab

       ESC [ Pn Z          (A)  Backward Tab

       ESC [ Pn L          (A)  Insert Line

       ESC [ Pn M          (A)  Delete Line

       ESC [ Pn @          (A)  Insert Character

       ESC [ Pn P          (A)  Delete Character

       ESC [ Ps ;...; Ps h      Set Mode

       ESC [ Ps ;...; Ps l      Reset Mode

           Ps = 4          (A)  Insert Mode

                ?3         (V)  Change Terminal Width

                ?5         (V)  Visible Bell (On followed by Off)

                ?6         (V)  Origin Mode

                ?7         (V)  Wrap Mode

       ESC [ 5 i           (A)  Start relay to printer (ANSI Media Copy)




                         31 January 1992                       28




SCREEN(1)                                               SCREEN(1)


       ESC [ 4 i           (A)  Stop relay to printer (ANSI Media Copy)

ENVIRONMENT
       COLUMNS
              Number of columns on the terminal (overrides  term-
              cap entry).

       HOME   Directory in which to look for .screenrc.

       ISCREENRC
              Alternate user screenrc file.

       LINES  Number  of lines on the terminal (overrides termcap
              entry).

       LOCKPRG
              Screen lock program.

       NETHACKOPTIONS
              Turns on nethack option.

       PATH   Used for locating programs to run.

       SCREENCAP
              For customizing a terminal's TERMCAP value.

       SCREENDIR
              Alternate socket directory.

       SCREENRC
              Alternate user screenrc file.

       SHELL  Default shell program for opening windows  (default
              "/bin/sh").

       STY    Alternate socket name.

       SYSSCREENRC
              Alternate system screenrc file.

       TERM   Terminal name.

       TERMCAP
              Terminal description.

FILES
       $SYSSCREENRC
       /usr/contrib/lib/screenrc  screen initialization commands
       $ISCREENRC
       $SCREENRC
       $HOME/.iscreenrc
       $HOME/.screenrc       Read in after /usr/contrib/lib/screenrc
       $ISCREENDIR/S-<login>
       $SCREENDIR/S-<login>



                         31 January 1992                       29




SCREEN(1)                                               SCREEN(1)


       /local/screens/S-<login>  Socket directories (default)
       /usr/tmp/screens/S-<login>  Alternate socket directories.
       <socket directory>/.termcap  Written by the "termcap" output function
       /usr/tmp/screens/screen-exchange  or
       /tmp/screen-exchange  screen `interprocess communication buffer'
       hardcopy.[0-9]        Screen images created by the hardcopy function
       screenlog.[0-9]       Output log files created by the log function
       /usr/lib/terminfo/?/*   or
       /etc/termcap          Terminal capability databases
       /etc/utmp             Login records
       $LOCKPRG              Program that locks a terminal.

SEE ALSO
       termcap(5), utmp(5), vi(1), captoinfo(1), tic(1)

AUTHORS
       Originally  created by Oliver Laumann, this latest version
       was produced by Wayne Davison, Juergen Weigert and Michael
       Schroeder.

CONTRIBUTORS
       Allan  Ball,  Bart Schaefer, Doug Siebert, Howard Chu, Jay
       Vassos-Libove, John Kraft,  Larry  Virden,  Marc  Boucher,
       Nathan  Glasser,  Patrick  Wolfe, Rudolf Koenig.  Toerless
       Eckert,

VERSION
       This is version 3.2. It's roots are a merge  of  a  custom
       version  2.3PR7  by Wayne Davison and several enhancements
       to Oliver Laumann's version 2.0. Note  that  all  versions
       numbered 2.x are copyright by Oliver Laumann.


BUGS
       `dm'  (delete  mode),  `xn', and `xs' are not handled cor-
       rectly (they are ignored).

       The GR set of ISO 2022 is not supported.

       There is no keyboard input translation to VT100 sequences.

       It  is  not  possible  to  change the environment variable
       $TERMCAP when reattaching under a different terminal type.

       The  support  of  terminfo  based systems is very limited.
       Adding extra capabilities to $TERMCAP  may  not  have  any
       effects.

       Screen does not make use of hardware tabs.

       Screen  must  be  installed  as set-uid with owner root in
       order to be able to correctly change the owner of the  tty
       device  file for each window.  Special permission may also
       be required to write the file "/etc/utmp".



                         31 January 1992                       30




SCREEN(1)                                               SCREEN(1)


       Entries in "/etc/utmp" are  not  removed  when  screen  is
       killed  with SIGKILL.  This will cause some programs (like
       "w" or "rwho") to advertise that a user is logged  on  who
       really isn't.





















































                         31 January 1992                       31


Typewritten Software • bear@typewritten.org • Edmonds, WA 98026