Skip to content

Instantly share code, notes, and snippets.

@staticor
Forked from mosquito/.screenrc
Created December 5, 2019 12:33

Revisions

  1. @mosquito mosquito created this gist Mar 23, 2016.
    366 changes: 366 additions & 0 deletions .screenrc
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,366 @@
    # Copyright 1999-2011 Gentoo Foundation
    # Distributed under the terms of the GNU General Public License v2
    #
    # /etc/screenrc
    #
    # This is the system wide screenrc.
    #
    # You can use this file to change the default behavior of screen system wide
    # or copy it to ~/.screenrc and use it as a starting point for your own
    # settings.
    #
    # Commands in this file are used to set options, bind screen functions to
    # keys, redefine terminal capabilities, and to automatically establish one or
    # more windows at the beginning of your screen session.
    #
    # This is not a comprehensive list of options, look at the screen manual for
    # details on everything that you can put in this file.
    #
    #

    # ==============================================================================
    # SCREEN SETTINGS
    # ==============================================================================

    # ESCAPE - the COMMAND CHARACTER
    # ===============================================================
    # escape ^aa # default
    # escape ^^^^ # suggested binding (Control-^) for Emacs users


    # PASSWORD
    # ===============================================================
    # This commands sets the *internal* password for the screen session.
    # WARNING!! If this is set then a "lock" command will only let you in to the
    # session after you enter the user's account password and then *also*
    # the internal password for that session. This gives additional safety but,
    # if you forget the internal password then you cannot resume your session.
    # Use :password to generate a password
    # password ODSJQf.4IJN7E # "1234"


    # VARIABLES
    # ===============================================================
    # No annoying audible bell, using "visual bell"
    # vbell on # default: off
    # vbell_msg " -- Bell,Bell!! -- " # default: "Wuff,Wuff!!"

    # Automatically detach on hangup.
    autodetach on # default: on

    # Don't display the copyright page
    startup_message off # default: on

    # Uses nethack-style messages
    # nethack on # default: off

    # Affects the copying of text regions
    crlf off # default: off

    # Enable/disable multiuser mode. Standard screen operation is singleuser.
    # In multiuser mode the commands acladd, aclchg, aclgrp and acldel can be used
    # to enable (and disable) other user accessing this screen session.
    # Requires suid-root.
    multiuser off

    # Change default scrollback value for new windows
    defscrollback 10000 # default: 100

    # Define the time that all windows monitored for silence should
    # wait before displaying a message. Default 30 seconds.
    silencewait 15 # default: 30

    # bufferfile: The file to use for commands
    # "readbuf" ('<') and "writebuf" ('>'):
    bufferfile $HOME/.screen_exchange
    #
    # hardcopydir: The directory which contains all hardcopies.
    # hardcopydir ~/.hardcopy
    # hardcopydir ~/.screen
    #
    # shell: Default process started in screen's windows.
    # Makes it possible to use a different shell inside screen
    # than is set as the default login shell.
    # If begins with a '-' character, the shell will be started as a login shell.
    # shell zsh
    # shell bash
    # shell ksh
    shell -$SHELL

    # shellaka '> |tcsh'
    # shelltitle '$ |bash'

    # emulate .logout message
    pow_detach_msg "Screen session of \$LOGNAME \$:cr:\$:nl:ended."

    # caption always " %w --- %c:%s"
    # caption always "%3n %t%? @%u%?%? [%h]%?%=%c"

    # advertise hardstatus support to $TERMCAP
    termcapinfo * '' 'hs:ts=\E_:fs=\E\\:ds=\E_\E\\'
    termcapinfo xterm* ti@:te@

    # set every new windows hardstatus line to somenthing descriptive
    # defhstatus "screen: ^En (^Et)"

    # don't kill window after the process died
    # zombie "^["

    # ignore displays that block on output
    defnonblock on

    # 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
    termcapinfo xterm* ti@:te@

    # Do not use xterm's alternative window buffer, it breaks scrollback (see bug #61195)
    termcapinfo xterm|xterms|xs ti@:te=\E[2J

    # 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
    # ==============================================================
    # The "bind" command assign keys to (internal) commands
    # SCREEN checks all the keys you type; you type the key
    # which is known as the "command character" then SCREEN
    # eats this key, too, and checks whether this key is
    # "bound" to a command. If so then SCREEN will execute it.
    #
    # The command "bind" allows you to chose which keys
    # will be assigned to the commands.
    #
    # Some commands are bound to several keys -
    # usually to both some letter and its corresponding
    # control key combination, eg the command
    # "(create) screen" is bound to both 'c' and '^C'.
    #
    # The following list shows the default bindings:
    #
    # break ^B b
    # clear C
    # colon :
    # copy ^[ [
    # detach ^D d
    # digraph ^V
    # displays *
    # dumptermcap .
    # fit F
    # flow ^F f
    # focus ^I
    # hardcopy h
    # help ?
    # history { }
    # info i
    # kill K k
    # lastmsg ^M m
    # license ,
    # log H
    # login L
    # meta x
    # monitor M
    # next ^@ ^N sp n
    # number N
    # only Q
    # other ^X
    # pow_break B
    # pow_detach D
    # prev ^H ^P p ^?
    # quit \
    # readbuf <
    # redisplay ^L l
    # remove X
    # removebuf =
    # reset Z
    # screen ^C c
    # select " '
    # silence _
    # split S
    # suspend ^Z z
    # time ^T t
    # title A
    # vbell ^G
    # version v
    # width W
    # windows ^W w
    # wrap ^R r
    # writebuf >
    # xoff ^S s
    # xon ^Q q
    # ^] paste .
    # - select -
    # 0 select 0
    # 1 select 1
    # 2 select 2
    # 3 select 3
    # 4 select 4
    # 5 select 5
    # 6 select 6
    # 7 select 7
    # 8 select 8
    # 9 select 9
    # I login on
    # O login off
    # ] paste .
    #

    # And here are the default bind commands if you need them:
    #
    # bind A title
    # bind C clear
    # bind D pow_detach
    # bind F fit
    # bind H log
    # bind I login on
    # bind K kill
    # bind L login
    # bind M monitor
    # bind N number
    # bind O login off
    # bind Q only
    # bind S split
    # bind W width
    # bind X remove
    # bind Z reset

    # Let's remove some dangerous key bindings ...
    bind k
    bind ^k
    # bind . dumptermcap # default
    bind .
    # bind ^\ quit # default
    bind ^\
    # bind \\ quit # default
    bind \\
    # bind ^h ??? # default
    bind ^h
    # bind h hardcopy # default
    bind h

    bindkey "" next
    bindkey "" prev
    bindkey "" screen

    # ... and 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 [.]


    # hardstatus alwaysignore
    # hardstatus alwayslastline "%Lw"

    # Resize the current region. The space will be removed from or added to
    # the region below or if there's not enough space from the region above.
    bind = resize =
    bind + resize +3
    bind - resize -3
    # bind _ resize max
    #
    # attrcolor u "-u b"
    # attrcolor b "R"

    # STARTUP SCREENS
    # ===============================================================
    # Defines the time screen delays a new message when one message
    # is currently displayed. The default is 1 second.
    # msgminwait 2

    # Time a message is displayed if screen is not disturbed by
    # other activity. The dafault is 5 seconds:
    # msgwait 2

    # Briefly show the version number of this starting
    # screen session - but only for *one* second:
    # msgwait 1
    # version

    # Welcome the user:
    # echo "welcome :-)"
    # echo "I love you today."

    # Uncomment one/some following lines to automatically let
    # SCREEN start some programs in the given window numbers:
    # screen -t MAIL 0 mutt
    # screen -t EDIT 1 vim
    # screen -t GOOGLE 2 links http://www.google.com
    # screen -t NEWS 3 slrn
    # screen -t WWW 4 links http://www.math.fu-berlin.de/~guckes/
    # screen 5
    # screen 6

    # Set the environment variable var to value string. If only var is specified,
    # you'll be prompted to enter a value. If no parameters are specified,
    # you'll be prompted for both variable and value. The environment is
    # inherited by all subsequently forked shells.
    # setenv PROMPT_COMMAND 'echo -n -e "\033k\033\134"'

    # Don't you want to start programs which need a DISPLAY ?
    # setenv DISPLAY ''

    hardstatus alwayslastline
    hardstatus string '%{WB}%H %{W}| %{Y}%l %{W}| %?%{w}%-w%?%{+b g}[%{W}%{r}%n%{W} %t%?{%u}%?%{-b g}]%{W}%?%+w%?%=%{G}| %{Y}%d-%m-%Y %c:%s '