======screen===== Notes on the //GNU screen// console multiplexer. //screen// is a program that allows multiple terminals/consoles to be maintained on a host indefinitely independent of a terminal client. This allows remote terminal sessions to be persisted across network connections. * [[http://www.gnu.org/software/screen/|Official Website]] * sessions * create session: screen -S * list sessions: screen -ls * detach: Ctrl-a d * attach: screen -r * attach to non-detached session (session sharing): screen -x * attach, detaching first if necessary: screen -dr * quit: Ctrl-a Ctrl-\ * quit: screen -S -X quit * quit: Ctrl-a :quit * windows * create: Ctrl-a c * kill: Ctrl-a k * name window title: Ctrl-a A * open window list to switch to another window: ''Ctrl-a "'' * regions * vertical split: Ctrl-a | * split: Ctrl-a S * remove: Ctrl-a X * remote all but the current region: Ctrl-a Q * move to region: Ctrl-a tab * scrollback/scroll in a region: ''C-a ['' or ''C-a ESC'' to enter //copy mode// then arrow keys. * [[http://www.gnu.org/software/screen/manual/html_node/index.html|Screen Manual]] * [[http://www.samsarin.com/blog/2007/03/11/gnu-screen-working-with-the-scrollback-buffer/|screen's scrollback buffer]] ======Common Commands======= * create session: ''screen -S '' * attach to a session: ''screen -r '' * In some cases it is necessary to detach from a session before re-attaching to it: ''screen -dr '' * open window list to switch to another window: ''Ctrl-a "'' * create window: ''Ctrl-a c'' * name window title: ''Ctrl-a A'' * kill window: ''Ctrl-a k'' ======Nested Sessions====== * Use key sequence ''Ctrl+a a'' to send commands to the nested session. ======.screenrc Configuration====== * [[https://gist.github.com/joaopizani/2718397]] # the following two lines give a two-line status, with the current window highlighted hardstatus alwayslastline hardstatus string '%{= kG}[%{G}%H%? %1`%?%{g}][%= %{= kw}%-w%{+b yk} %n*%t%?(%u)%? %{-}%+w %=%{g}][%{B}%m/%d %{W}%C%A%{g}]' # huge scrollback buffer defscrollback 5000 # no welcome message startup_message off # 256 colors attrcolor b ".I" termcapinfo xterm 'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm' defbce on # mouse tracking allows to switch region focus by clicking mousetrack on # default windows # screen -t Shell1 1 bash # screen -t Shell2 2 bash # screen -t Python 3 python # screen -t Media 4 bash # select 0 # bind c screen 1 # window numbering starts at 1 not 0 # bind 0 select 10 # get rid of silly xoff stuff bind s split # layouts layout autosave on layout new one select 1 layout new two select 1 split resize -v +8 focus down select 4 focus up layout new three select 1 split resize -v +7 focus down select 3 split -v resize -h +10 focus right select 4 focus up layout attach one layout select one # navigating regions with Ctrl-arrows bindkey "^[[1;5D" focus left bindkey "^[[1;5C" focus right bindkey "^[[1;5A" focus up bindkey "^[[1;5B" focus down # switch windows with F3 (prev) and F4 (next) bindkey "^[OR" prev bindkey "^[OS" next # switch layouts with Ctrl+F3 (prev layout) and Ctrl+F4 (next) bindkey "^[O1;5R" layout prev bindkey "^[O1;5S" layout next # F2 puts Screen into resize mode. Resize regions using hjkl keys. bindkey "^[OQ" eval "command -c rsz" # enter resize mode # use hjkl keys to resize regions bind -c rsz h eval "resize -h -5" "command -c rsz" bind -c rsz j eval "resize -v -5" "command -c rsz" bind -c rsz k eval "resize -v +5" "command -c rsz" bind -c rsz l eval "resize -h +5" "command -c rsz" # quickly switch between regions using tab and arrows bind -c rsz \t eval "focus" "command -c rsz" # Tab bind -c rsz -k kl eval "focus left" "command -c rsz" # Left bind -c rsz -k kr eval "focus right" "command -c rsz" # Right bind -c rsz -k ku eval "focus up" "command -c rsz" # Up bind -c rsz -k kd eval "focus down" "command -c rsz" # Down