Site Tools

Terminal Manipulations



screen is flexible about flow control. Traditionally, some terminals do flow control in-band, using ^S when they want to stop the flow data and ^Q when they want it to resume. On the other hand, some programs (such as emacs) use those keys for other purposes. If flow control is turned on in screen, ^S will stop screen from sending anything more to your terminal and ^Q will resume. Turning flow control off allows those characters to pass through to your programs. The default setting is “auto”, which attempts to determine if flow control is needed or not. screen is generally pretty good at figuring this out.

screen can deal with multiple character sets and character encodings. The encoding and defencoding commands can be used to set window encodings or override the detected terminal encoding. If the display's and window's encodings differ, screen will translate between the two. Characters not in the display's charset are represented by question marks. screen does its own encoding and only supports a handful of encodings. As of version 4.0.2, those are: C, eucJP, SJIS, eucKR, eucCN, Big5, KOI8-R, CP1251, UTF-8, ISO8859-2, ISO8859-3, ISO8859-4, ISO8859-5, ISO8859-6, ISO8859-7, ISO8859-8, ISO8859-9, ISO8859-10, ISO8859-15, jis, and GBK. [This somehow ties in with the charset setting, but I don't understand that one. <PMG>]

You can alter various aspects of screen's use of termcap and terminfo, via the termcap, terminfo, and termcapinfo commands. All three have the same syntax. Using termcapinfo is recommended, since that affects both termcap and terminfo settings. Note that all three require the use of termcap names; terminfo-style long names are not supported. The most common use of these commands is to change how screen treats display terminals. If you want to change a termcap setting for, say, xterms, you can use the termcapinfo command to change the termcap definition that screen uses for that terminal type. This affects only screen, and can be used to effect changes when you don't want to or can't change the system terminal definitions. There are also several special terminal capabilities that are screen-specific. See the “Examples” section below for specific examples. The other use is to change the terminal capabilities of screen's virtual terminal. This can be useful to alter how other programs interact with screen, without having to edit screen's source code and recompile. [This is ugly. I need to rewrite it to make it clearer. <PMG>]

Some programs use ANSI escape sequences to print data; this was originally used in the days when serial terminals were common, and a terminal might have a printer directly attached to it. Any sequence starting with <esc>[5i and ending with <esc>\ would cause the data between the two escape sequences to be printed. screen supports this behavior in two ways: if the display terminal has the po and pf termcap entries (indicating that it understands printing escapes), screen will pass any print requests through to the display terminal. Alternately, you can use the printcmd command to define a program to which screen will send any print jobs.


  • C-a C-b - (break) Sends a break signal to the current window.
  • C-a B - (pow_break) Closes and reopens the terminal and sends a break signal.
  • C-a f - (flow) Toggle flow setting between on, off, and auto.
  • C-a q - (xon) Sends an XON (^Q) to the current window.
  • C-a r - (wrap) Toggle the current window's line-wrap setting.
  • C-a S - (xoff) Sends an XOFF (^S) to the current window.
  • C-a Z - (reset) Reset the window's terminal settings to its defaults.
  • C-a . - (dumptermcap) Write out a .termcap file.


  • allpartial - Global command equivalent to setting partial for all current windows.
  • altscreen - Enables “alternate screen” support (ti and te termcap settings) for screen windows.
  • bce - Sets or toggle background-color-erase setting.
  • breaktype - Currently a synonym for defbreaktype
  • c1 - Sets or toggles c1 code processing.
  • charset - Change the current character set slot designation and charset mapping.
  • defbce - Same as bce, but sets the default setting for new windows.
  • defbreaktype - Sets the type of break signal sent via the break or pow_break command.
  • defc1 - Same as c1, but sets the default setting for new windows.
  • defcharset - Same as charset, but sets the default setting for new windows.
  • defflow - Same as flow, but sets the default setting for new windows.
  • defgr - Same as gr, but sets the default setting for new windows.
  • defencoding - Same as encoding, but sets the default setting for new windows.
  • defnonblock - Same as nonblock, but sets the default setting for new displays.
  • defutf8 - Same as utf8, but sets the default setting for new windows.
  • defwrap - Same as wrap, but sets the default setting for new windows.
  • dinfo - Shows what settings screen is using for the current display.
  • dumptermcap - Tells screen to create a .termcap file in its socket directory.
  • encoding - Sets the character encoding for the current window.
  • flow - Sets the current window's flow control mode.
  • gr - Sets or toggles GR charset switching.
  • nonblock - Sets or toggles screen's behavior when a display stops receiving characters.
  • partial - Sets whether screen should draw the entire window when switching windows.
  • printcmd - Shows or sets the command used for handling the ANSI print sequence ESC [ 5 i.
  • reset - Resets the current window's virtual terminal settings to their default settings.
  • term - Changes the value of $TERM that screen passes to its windows' child processes.
  • termcap, terminfo, and termcapinfo - Tweak termcap and/or terminfo entries for either screen's interaction with the display terminal or for the virtual terminal presented to child programs.
  • utf8 - Changes or toggles the encoding on the current window.
  • wrap - Sets or toggles the current window's line wrap setting.
  • xoff - Sends an XOFF (^S) to the current window.
  • xon - Sends an XON (^Q) to the current window.
  • zmodem - Sets screen's handling of zmodem communcations.


Upon being asked to print a block of text, save it to a file in the user's home directory:

printcmd "cat > ${HOME}/screenprint"

Upon being asked to print a block of text, print it via lpr:

printcmd lpr

Set the LP capability (the last screen position can be updated) and remove the hs capability (presence of a hardstatus line) from terminals that start with “xterm”:

termcap xterm* LP:hs@

On VT102s and VT220s, set the escape characters to enter (Z0) and exit (Z1) 132-column mode:

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

Add function key labels to the termcap entries for screen's virtual terminal. For purposes of modifying the windows' termcap entries, the term-type specified doesn't matter:

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

Abuse screen's hardstatus support to put things in xterm titlebars. This tells screen that xterms (and related terminals) have a hardstatus line (hs) and sets the escape sequences for entering (ts) and leaving (fs) the hardstatus to the sequences for entering and leaving the titlebar. To go with that, uses defhstatus to set a default message and hardstatus off to tell screen not to use the hardstatus line for screen messages:

termcapinfo xterm*|rxvt|gnome-terminal|konsole|kterm|Eterm 'hs:ts=\E]0;:fs=\007'
defhstatus "screen ^E (^Et) | $USER@^EH"
hardstatus off

(FAQ) Turns off alternate screen switching in xterms, so that text in screen will go into the xterm's scrollback buffer:

termcapinfo xterm ti@:te@

Uses screen's output translation capability (XC) to rot-13 all output. (Will not work in UTF-8 mode, apparently.):

termcapinfo * XC=B%,an,AN,bo,BO,cp,CP,dq,DQ,er,ER,fs,FS,gt,GT,hu,HU,iv,IV,jw,JW,kx,KX,ly,LY,mz,MZ,na,NA,ob,OB,pc,PC,qd,QD,re,RE,sf,SF,tg,TG,uh,UH,vi,VI,wj,WJ,xk,XK,yl,YL,zm,ZM

User Tools