_____________________________________________ How to Install GNU Screen on Raspberry Pi _____________________________________________ # by WA8KIM / kim@kim125.com / EchoLink: WA8KIM-R / WiRES-X: Rm#21149 / Last updated 08/24/2015. # http://www.wa8kim.com/rpi.html # Best viewed in Notepad with Word Wrap OFF/UNCHECKED and in full screen Download the latest version of this file at: http://www.wa8kim.com/files/(RPi)%20Install%20-%20GNU%20Screen.txt ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~ Download and INstall GNU Screen ~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sudo apt-get install screen ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~ Common Command-Line Commands ~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ man screen Displays screen's manual screen -S "SessionName" filename Start a new window labeled "SessionName" screen -dmS "SessionName" filename Start a new window in daemon mode (run in background) labeled "SessionName" (This is great for running a program at RPi boot and being able to monitor the output via SSH.) screen -ls List all active screens (current user only) screen -x SessionName Connect ("attach") to window "SessionName" sudo screen -ls List all active windows run as root (administrator) sudo screen filename Run filename as root screen -r pid# Instead of using screen "SessionName", you can type screen -r 4153 screen -d -R SessionName Detach the previous window and reconnect screen -DD -r Force a reattach to screen ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~ Common In-Screen Commands ~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ? Help file exit Close (kill) current windows [CTRL]-A Initiates all commands d Detach from current window n Next window p Previous window 1 (or 2,3,etc) Change to window number 1 (or 2,3,etc.) c Create a new window H Creats a running log file of all window content M Look for activity. Screen will flash at the bottom if there is activity _ Look for inactivity. Screen will flash at the bottom when there is NO activity x Lock screen. Will require your current RPi's login password to unlock k Kill the current window w Show status bar on bottom of screen (or add “hardstatus alwayslastline” to your .screenrc. See below) [Esc] Pressing the [Esc] key will allow you to scroll through the screen using the arrow keys. Also allows copy & paste. [ Copy highlighted text ] Paste A Rename window ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~ Tips and Tricks ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # The following tweaks require modifying each user's .screenrc config file. # You must first copy the config file template (/etc/screenrc) to each user's home folder and rename it to .screenrc # The following line does both (copy and rename) # The example below is for the user 'pi'. Change the folder as necessary. cp /etc/screenrc /home/pi/.screenrc # To make the config file run for all users, simply edit the system's default file: sudo nano /etc/screenrc 1. Add the status bar at the bottom of the screen continuously sudo nano /etc/screenrc # Add the following line anywhere in the config file: ---------------------------------------------- hardstatus alwayslastline ---------------------------------------------- 2. Instead of using [CTRL]-A for commands, use the backtick key (key to the left of the ‘1’ key). # Add the following line anywhere in the config file: # Example: Now to create a new screen window, just press 'c # To type the ' in screen, simply press ' twice. sudo nano /etc/screenrc ---------------------------------------------- defescape `` escape `` ---------------------------------------------- (those are 2 backticks for each entry) 3. Note: Several people can connect to the same screen and see live what others are doing. 4. Enable scrolling with your mouse wheel # Add the following line anywhere in the config file: sudo nano /home/pi/.screenrc ---------------------------------------------- termcapinfo xterm|xterms|xs|rxvt ti@:te@ ---------------------------------------------- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~ Example of a Tweaked Config Files ~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ---------------------------------------------------------------------------------------------- # # drkvg's commented .screenrc # ### screen as an answering machine! # # no annoying audible bell, please vbell on vbell_msg "Hey - something's ringing on %t (%n)" activity "Hey - something's moving in %t(%n)" ### detaching/reattaching # # detach on hangup autodetach on # This is how one can set a reattach password: # password ODSJQf.4IJN7E # "1234" ### logging in/off # # don't display the copyright page startup_message off # emulate .logout message pow_detach_msg "Screen session of \$LOGNAME \$:cr:\$:nl:ended." # don't kill window after the process died # zombie "^[" ################ # # xterm tweaks # #xterm understands both im/ic and doesn't have a status line. #Note: Do not specify im and ic in the real termcap/info file as #some programs (e.g. vi) will not work anymore. termcap xterm hs@:cs=\E[%i%d;%dr:im=\E[4h:ei=\E[4l terminfo xterm hs@:cs=\E[%i%p1%d;%p2%dr:im=\E[4h:ei=\E[4l #80/132 column switching must be enabled for ^AW to work #change init sequence to not switch width termcapinfo xterm Z0=\E[?3h:Z1=\E[?3l:is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l # Make the output buffer large for (fast) xterms. #termcapinfo xterm* OL=10000 termcapinfo xterm* OL=100 # tell screen that xterm can switch to dark background and has function # keys. termcapinfo xterm 'VR=\E[?5h:VN=\E[?5l' termcapinfo xterm 'k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~' termcapinfo xterm 'kh=\EOH:kI=\E[2~:kD=\E[3~:kH=\EOF:kP=\E[5~:kN=\E[6~' # special xterm hardstatus: use the window title. termcapinfo xterm 'hs:ts=\E]2;:fs=\007:ds=\E]2;screen\007' #terminfo xterm 'vb=\E[?5h$<200/>\E[?5l' termcapinfo xterm 'vi=\E[?25l:ve=\E[34h\E[?25h:vs=\E[34l' # emulate part of the 'K' charset termcapinfo xterm 'XC=K%,%\E(B,[\304,\\\\\326,]\334,{\344,|\366,}\374,~\337' # xterm-52 tweaks: # - uses background color for delete operations termcapinfo xterm* be ################ # # wyse terminals # #wyse-75-42 must have flow control (xo = "terminal uses xon/xoff") #essential to have it here, as this is a slow terminal. termcapinfo wy75-42 xo:hs@ # New termcap sequences for cursor application mode. termcapinfo wy* CS=\E[?1h:CE=\E[?1l:vi=\E[?25l:ve=\E[?25h:VR=\E[?5h:VN=\E[?5l:cb=\E[1K:CD=\E[1J ################ # # other terminals # # make hp700 termcap/info better termcapinfo hp700 'Z0=\E[?3h:Z1=\E[?3l:hs:ts=\E[62"p\E[0$~\E[2$~\E[1$}:fs=\E[0}\E[61"p:ds=\E[62"p\E[1$~\E[61"p:ic@' # Extend the vt100 desciption by some sequences. termcap vt100* ms:AL=\E[%dL:DL=\E[%dM:UP=\E[%dA:DO=\E[%dB:LE=\E[%dD:RI=\E[%dC terminfo vt100* ms:AL=\E[%p1%dL:DL=\E[%p1%dM:UP=\E[%p1%dA:DO=\E[%p1%dB:LE=\E[%p1%dD:RI=\E[%p1%dC termcapinfo linux C8 # old rxvt versions also need this # termcapinfo rxvt C8 ################ # # keybindings # #remove some stupid / dangerous key bindings bind k bind ^k bind . bind ^\ bind \\ bind ^h bind h #make them better bind 'K' kill bind 'I' login on bind 'O' login off bind '}' history # Yet another hack: # Prepend/append register [/] to the paste if ^a^] is pressed. # This lets me have autoindent mode in vi. register [ "\033:se noai\015a" register ] "\033:se ai\015a" bind ^] paste [.] ### colors # # some notes on COLOR before explaining its use in # the commands caption, hardstatus, and sorendition. # # COLOR: colors codes are combinations of # [attribute modifier] [color description] # the manual talks of "attribute/color modifiers". # see the manual, section "STRING ESCAPES". # # Color table: # 0 Black . leave color unchanged # 1 Red b blue # 2 Green c cyan # 3 Brown / yellow d default color # 4 Blue g green b bold # 5 Purple k blacK B blinking # 6 Cyan m magenta d dim # 7 White r red r reverse # 8 unused/illegal w white s standout # 9 transparent y yellow u underline # ### the caption line - screen status bar! # # %{= bb}%{+b w} colors # %t window name # %= end of line # %Y-%m-%d year-month-date # %c clock # caption always "%{= ck}%H.potager > %t %= %Y-%m-%d | %c" #caption always "%{= bb}%{+b w}[ %t ] %= %Y-%m-%d | %c" #caption always "%3n %t%? @%u%?%? [%h]%?%=%c" ### the hardstatus line - verbose screen menu! # # defhstatus "screen: ^En (^Et)" hardstatus alwayslastline "%-Lw%{+b kc}%50>%n%f* %t%{-}%+Lw%<" #hardstatus alwayslastline "%-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<" #hardstatus alwaysignore #hardstatus alwayslastline "%Lw" #hardstatus alwayslastline "%-Lw%50>%n%f* %{=c} %t%+Lw%<" #hardstatus alwayslastline "%3n %t%? @%u%?%? [%h]%?%=%c" # number of lines in buffer # defscrollback 2000 #attrcolor u "-u b" #attrcolor b "R" ################ # # default windows # screen -t "champignon" 0 # some more examples: # # screen -t local 0 # screen -t mail 1 mutt # screen -t remote 2 ssh some.server.org # default name for new windows # shelltitle "shell" ### misc # # advertise hardstatus support to $TERMCAP termcapinfo * '' 'hs:ts=\E_:fs=\E\\:ds=\E_\E\\' # make the shell in every window a login shell # shell -$SHELL ---------------------------------------------------------------------------------------------- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Links ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ http://www.rackaid.com/blog/linux-screen-tutorial-and-how-to/ https://www.mattcutts.com/blog/a-quick-tutorial-on-screen/ http://stackoverflow.com/questions/6534386/how-can-i-script-gnu-screen-to-start-with-a-program-running-inside-of-it-so-that -------------------- REVISION HISTORY -------------------- 2015-08-24 Updated Download Link 2015-03-10 File Created