Hi all.
Today I will try to show You how to install and configure GNU Screen.
First? What is Screen. Manual page explains it very well.
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 a DEC VT100 terminal and, in addition, several control functions from the ISO 6429 (ECMA 48, ANSI X3.64) and ISO 2022 standards (e.g. insert/delete line and support for multiple character sets). There is a scrollback history buffer for each virtual terminal and a copy-and-paste mechanism that allows moving text regions between windows.
By default screen looks something like this:
It looks like a ordinary console window. In my own words I would call Screen “many console windows in one…” it’s not a perfect description but that’s the best one that I could come up with. By default screen does not looks very interesting does it?
And what if I will tell You that by copying and pasting few commands You can make it look like this? This is a screenshot taken from my pCLI-NoX installation.
or like this if You are using KDE4…
Still not interested? And what if I will tell You that if You ssh to Your shell account and run screen
command and then close the connection the screen will stay active and that You can re-open it when You connect next time with screen -dr
command? Better huh? Thought so… And if I will tell You that You can share the screen session with a friend to show Him what are You doing at the moment or to teach him something new? Hehe I see I got Your attention. You are still reading aren’t You?
Ok first things first – we need to install screen then we will configure it. I assume that You have fully upgraded Your PCLinuxOS installation. Run those commands:
su
Give it a root password and then run:
apt-get update && apt-get install screen
Wait till it’s finished and run:
exit
You should be back into the user mode. Now copy and paste the following commands:
cp /etc/screenrc $HOME/.screenrc
mkdir -p $HOME/.bin
touch $HOME/.bin/my_battery.sh
chmod +x $HOME/.bin/my_battery.sh
echo 'acpi -b | cut -f 2 -d |' > $HOME/.bin/my_battery.sh
touch $HOME/.bin/my_temperature.sh
chmod +x $HOME/.bin/my_temperature.sh
echo 'acpi -t | cut -f 2 -d |' > $HOME/.bin/my_temperature.sh
echo 'caption always "%{= Wk}%-w%{= Bw}%n %t%{-}%+w %-="' >> $HOME/.screenrc
echo 'defutf8 on' >> $HOME/.screenrc
echo 'backtick 1 1 0 $HOME/.bin/my_battery.sh' >> $HOME/.screenrc
echo 'backtick 2 1 0 $HOME/.bin/my_temperature.sh' >> $HOME/.screenrc
echo 'hardstatus alwayslastline "%{+b kr}[%H]%{kg} %1`%{kw} %2` %{ky}Load: %l%-=%{kb}%c %d.%m.%Y"' >> $HOME/.screenrc
sed -i 's/#startup_message off/startup_message off/' $HOME/.screenrc
After all this You should see something like this:
Now type in:
screen
and You should see something like this:
Voila! All done. Now close the Konsole window and reopen a fresh one.
Type in:
screen -dr
Screen session is now re-attached to Your Konsole window.
That’s one of the coolest things about screen.
Now I said there are multiple windows in one right? Right. See this whiteish bar with blue rectangle on it and with the 0 bash in it? Make sure that the Konsole window has focus and press and hold CTRL + A and then let them both go and press C.
Now look at that white bar. There are two entries 0 bash and 1 bash. Blue color rectangle moved to the second entry. Why? By pressing the above combo You have opened another “window” in screen and it has the focus now.
As You have probably noticed CTRL + A
+ key
is how the screen operates. It’s very simple and the basic keys are:
c – open / create new window.
n – go to next window
p – go to previous window
k – kill the active window (must be confirmed by pressing y)
Those are the basic things You need to know about screen. Want more? Ok. Have fun. The Key bindings section should be of interest to You.
Special thanks to Hootiegibbon who wrote a large part of the .screenrc
file config. Also thanks to Enlik for showing me (and helping with config of) the GNU Screen app in the first place and for helping me when I got stuck at some point while writing this howto.
Hope someone will find it useful.
Regards.
Andy