GNU Screen

GNU Screen is a wrapper that allows separation between the text program and the shell from which it was launched. This allows the user to, for example, start a text program in a terminal in X, kill X, and continue to interact with the program. Here are a couple of tips and tricks you may be interested in.

Basics

Commands are entered pressing Control A and then the key binding. The escape key can be changed with the escape option in ~/.screenrc. IE:

escape ``

sets the escape key to `

Common Commands

C-a ?

Displays commands and it's defaults (VERY important :p)

C-a "

Window list

C-a 0

opens window 0

C-a A

Rename the current window

C-a c

Create a new window (with shell)

C-a S

Split current region into two regions

C-a C-a

Focus on next region

C-a <ESC>

Enter Copy Mode (use enter to select a range of text)

C-a ]

Paste text

C-a Q

Close all regions but the current one

C-a d

Detach from the current screen session, and leave it running. Use screen -r to resume

Start at window 1

By default, the first screen window is 0. If you'd rather never have a window 0 and start instead with 1, put something like the following in your ~/.screenrc:

bind c screen 1
bind 0 select 10
screen 1
select 1

Nested Screen Sessions

It's possible to get stuck in a nested screen session. A common scenario: you start an ssh session from within a screen session. Within the ssh session, you start screen. By default, the outer screen session that was launched first responds to C-a commands. To send a command to the inner screen session, use C-a a, followed by your command. For example:

C-a a d

Detaches the inner screen session.

C-a a K

Kills the inner screen session.

Fix for residual editor text

When you open a text editor like nano in screen and then close it, the text may stay visible in your terminal. To fix this, put the following in your ~/.screenrc:

altscreen on

Use 256 colors

By default, screen uses an 8-color terminal emulator. Use the following line to enable more colors, which is useful if you are using a more-capable terminal emulator:

term screen-256color

Use 256 Colors with Rxvt-Unicode (urxvt)

If you are using rxvt-unicode-256color from the AUR you may need to add this line in your ~/.screenrc to enable 256 colors while in screen.

terminfo rxvt-unicode 'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm'

Informative statusbar

The default statusbar may be a little lacking. You may find this one more helpful:

The line uses mingetty to automatically login some user to a virtual console on startup. You will need to install the mingetty package (AUR). The inittab line segments are separated by colons. The first part (scr*) is simply an id. The second part is the runlevel: This should only happen on runlevel 4 (which isn't used in any default setup - 3 is by default for a tty login and 5 is for X). 'Respawn' causes init to repeat the command (i.e. autologin) if the user logs out.
We'll need to see that nothing else happens on virtual console 1 when we use runlevel 4, so remove '4' from the the first of the agetty lines:

c1:235:respawn:/sbin/agetty -8 38400 vc/1 linux

Once logged in we want to ensure that screen is started. Add the following to the end of your .bashrc: