¿Cuáles son las configuraciones útiles .screenrc?

54

Básicamente, como algunos de los míos que he publicado a continuación. Estoy buscando funcionalidades agregadas a la 'pantalla' del programa. Por lo menos, eche un vistazo a la última línea para una fantástica 'barra de menú' en la parte inferior de una sesión de pantalla.

## gyaresu's .screenrc 2008-03-25
# http://delicious.com/search?p=screenrc

# Don't display the copyright page
startup_message off

# tab-completion flash in heading bar
vbell off

# keep scrollback n lines
defscrollback 1000

# Doesn't fix scrollback problem on xterm because if you scroll back
# all you see is the other terminals history.
# termcapinfo xterm|xterms|xs|rxvt ti@:te@

# These will let you use 
bind -c selectHighs 0 select 10 #these three commands are 
bind -c selectHighs 1 select 11 #added to the command-class
bind -c selectHighs 2 select 12 #selectHighs
bind -c selectHighs 3 select 13
bind -c selectHighs 4 select 14
bind -c selectHighs 5 select 15


bind - command -c selectHighs   #bind the hyphen to 
                                #command-class selectHighs 


screen -t rtorrent  0   rtorrent    
#screen -t tunes        1   ncmpc --host=192.168.1.4 --port=6600 #was for connecting to MPD music server.
screen -t stuff     1
screen -t irssi     2   irssi
screen -t dancing   4       
screen -t python    5   python
screen -t giantfriend   6   these_are_ssh_to_server_scripts.sh
screen -t computerrescue    7   these_are_ssh_to_server_scripts.sh
screen -t BMon      8   bmon -p eth0
screen -t htop      9   htop
screen -t hellanzb  10  hellanzb
screen -t watching  3   
#screen -t interactive.fiction  8
#screen -t hellahella   8   paster serve --daemon  /home/gyaresu/downloads/hellahella/hella.ini 

shelltitle "$ |bash"

# THIS IS THE PRETTY BIT
#change the hardstatus settings to give an window list at the bottom of the                                                                        
##screen, with the time and date and with the current window highlighted                                                                            
hardstatus             alwayslastline                                                                                                                          
#hardstatus string '%{= mK}%-Lw%{= KW}%50>%n%f* %t%{= mK}%+Lw%< %{= kG}%-=%D %d %M %Y %c:%s%{-}'
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %d/%m %{W}%c %{g}]'

Gareth
fuente

Respuestas:

22

Para aquellos que desean una forma menos críptica de configurar una buena pantalla, puedo recomendar sinceramente byobu (anteriormente llamados perfiles de pantalla). Le da un buen conjunto predeterminado de cosas en la parte inferior de la pantalla: la línea inferior contiene información útil sobre el estado y la segunda desde la línea inferior contiene una lista de las ventanas de su pantalla. Todo esto se puede configurar en un menú fácil y agradable presionando F9.

Las teclas de función se asignan a operaciones comunes:

  • F2 - crea una nueva ventana
  • F3 - Ir a la ventana anterior
  • F4 - Ir a la siguiente ventana
  • F5 - Actualizar perfil
  • F6 - Separarse de la sesión
  • F7: ingresa al modo de desplazamiento hacia atrás
  • F8 - Ver todas las combinaciones de teclas
  • F9 - Configurar perfiles de pantalla
  • F12 - Bloquee este terminal

Vea este artículo para un tutorial y capturas de pantalla .

Byobu está en los repositorios de ubuntu desde kármico (9.10) en adelante. En la alegría se llamaba perfiles de pantalla. Antes de eso se puede instalar desde este ppa o desde esta página de descarga . También está ampliamente empaquetado para otras distribuciones actualizadas.

Depende de Python, pero una vez que haya configurado byobu como lo desee, puede hacer que genere una bola de alquitrán que contenga todo lo que necesita para recrear su pantalla en otra computadora usando byobu-export .

Hamish Downer
fuente
Los perfiles de pantalla son increíbles . Iba a responder con lo mismo.
jtimberman
12

También utilizo una combinación de línea de título / estado duro bastante complicada, para simular el efecto de las pestañas desplegables (la línea de título es gris sólido y la pestaña actual en el estado duro es del mismo color).

También tengo mi pantalla de visualización de shell que es el nombre del proceso actual y en qué directorio estoy, por lo que mis nombres de pestañas se mantienen actualizados con lo que estoy haciendo en cada pestaña. Esto es fundamental para recordar lo que estoy haciendo sin tener que pasar por todas mis pestañas abiertas.

 # don't use the hardstatus line for system messages, use reverse video instead
 # (we'll be using it for the list of tab windows - see hardstatus alwayslastline
 # below)
 hardstatus off

 # use the caption line for the computer name, load, hstatus (as set by zsh), & time
 # the caption line gets repeated for each window being displayed (using :split),
 # so we'll use color cues to differentiate the caption of the current, active
 # window, and the others.
 #    always                  - display the caption continuously.  Since
 #                              hardstatus is 'alwayslastline', it will be on the
 #                              next to last line.
 #    "%?%F"                  - if (leading '%?') this region has focus ('%F') 
 #                              (e.g. it's the only region being displayed, or,
 #                              if in split-screen mode, it's the currently active
 #                              region)
 #      "%{= Kk}"               - set the colorscheme to blac[k] on grey (bright blac[K]),
 #                                with no other effects (standout, underline, etc.)
 #    "%:"                    - otherwise ('%:' between a pair of '%?'s)
 #      "%{=u kR}"              - set the colorscheme to [R]ed on blac[k], and
 #                                underline it, but no other effects (bold, standout, etc.) 
 #    "%?"                    - end if (trailing '%?')
 #    "  %h "                 - print two spaces, tthne the [h]ardstatus of the
 #                              current tab window (as set by zsh - see zshrc) and
 #                              then another space.
 #    "%-024="                - either pad (with spaces) or truncate the previous
 #                              text so that the rest of the caption string starts
 #                              24 characters ('024') from the right ('-') edge of
 #                              the caption line.
 #                              NOTE: omitting the '0' before the '24' would pad
 #                              or truncate the text so it would be 24% from the
 #                              right.
 #    "%{+b}                  - add ('+') [b]old to the current text effects, but
 #                              don't change the current colors.
 #    " %C:%s%a %D %d %M %Y"  - print the [C]urrent time, a colon, the [s]econds,
 #                              whether it's [a]m or pm, the [D]ay name, the [d]ay
 #                              of the month, the [M]onth, and the [Y]ear.
 #                              (this takes up 24 characters, so the previous
 #                              pad/truncate command makes sure the clock doesn't
 #                              get pushed off of the caption line)
 #    "%{= dd}"               - revert to the [d]efault background and [d]efault
 #                              foreground colors, respectively, with no ('= ')
 #                              other effects.
 #  other things that might be useful later are
 #    " %H"                   - print a space, then the [H]ostname.
 #    "(%{.K}%l%{-}):"        - print a '(', then change the text color to grey
 #                              (aka bright blac[K]), and print the current system
 #                              [l]oad.  Then revert to the previous colorscheme
 #                              ('%{-}') and print a close ')' and a colon.
 #                              NOTE: the load is only updated when some other
 #                              portion of the caption string needs to be changed
 #                              (like the seconds in the clock, or if there were a
 #                              backtick command)
 #    "%0`"                   - put the output of a backtick command in the line
 #    "%-024<"                - don't pad, just truncate if the string is past 24
 #                              characters from the right edge
 #    "%-="                   - pad (with spaces) the previous text text so that
 #                              the rest of the caption string is justified
 #                              against the right edge of the screen.
 #                              NOTE: doesn't appear to truncate previous text.
 caption always           "%?%F%{= Kk}%:%{=u kR}%?  %h %-024=%{+b} %C%a %D %d %M %Y%{= db}"
 # use the hardstatus line for the window list
 #    alwayslastline      - always display the hardstatus as the last line of the
 #                          terminal
 #    "%{= kR} %-Lw"      - change to a blac[k] background with bright [R]ed text,
 #                          and print all the tab [w]indow numbers and titles in
 #                          the [L]ong format (ie with flags) upto ('-') the
 #                          current tab window
 #    "%{=b Kk} %n%f %t " - change to grey (bright blac[K]) background with
 #                          [b]old blac[k] text, with no other effects, and print
 #                          the [n]umber of the current tab window, any [f]lags it
 #                          might have, and the [t]itle of the current tab window
 #                          (as set by zsh - see zshrc).
 #                          NOTE: the color match with the caption line makes it
 #                          appear as if a 'tab' is dropping down from the caption
 #                          line, highlighting the number & title of the current
 #                          tab window.  Nifty, ain't it)
 #    "%{-}%+Lw "         - revert to the previous color scheme (red on black)
 #                          and print all the tab [w]indow numbers and titles in
 #                          the [L]ong format (ie with flags) after ('+') the
 #                          current tab window.
 #    "%=%{= dd}"         - pad all the way to the right (since there is no text
 #                          that follows this) and revert to the [d]efault
 #                          background and [d]efault foreground colors, with no
 #                          ('= ') other effects.
 hardstatus alwayslastline "%{= kR} %-Lw%{=b Kk} %n%f %t %{-}%+Lw %=%{= dd}"

Así que aquí está mi configuración de zshrc para decirle a la pantalla lo que estoy haciendo en cada pestaña.

# ~/.zshrc
# if using GNU screen, let the zsh tell screen what the title and hardstatus
# of the tab window should be.
if [[ $TERM == "screen" ]]; then
  _GET_PATH='echo $PWD | sed "s/^\/Users\//~/;s/^~$USER/~/"'

  # use the current user as the prefix of the current tab title (since that's
  # fairly important, and I change it fairly often)
  TAB_TITLE_PREFIX='"`'$_GET_PATH' | sed "s:..*/::"`$PROMPT_CHAR"'
  # when at the shell prompt, show a truncated version of the current path (with
  # standard ~ replacement) as the rest of the title.
  TAB_TITLE_PROMPT='$SHELL:t'
  # when running a command, show the title of the command as the rest of the
  # title (truncate to drop the path to the command)
  TAB_TITLE_EXEC='$cmd[1]:t'

  # use the current path (with standard ~ replacement) in square brackets as the
  # prefix of the tab window hardstatus.
  TAB_HARDSTATUS_PREFIX='"[`'$_GET_PATH'`] "'
  # when at the shell prompt, use the shell name (truncated to remove the path to
  # the shell) as the rest of the title
  TAB_HARDSTATUS_PROMPT='$SHELL:t'
  # when running a command, show the command name and arguments as the rest of
  # the title
  TAB_HARDSTATUS_EXEC='$cmd'

  # tell GNU screen what the tab window title ($1) and the hardstatus($2) should be
  function screen_set()
  {
    # set the tab window title (%t) for screen
    print -nR $'\033k'$1$'\033'\\\

    # set hardstatus of tab window (%h) for screen
    print -nR $'\033]0;'$2$'\a'
  }
  # called by zsh before executing a command
  function preexec()
  {
    local -a cmd; cmd=(${(z)1}) # the command string
    eval "tab_title=$TAB_TITLE_PREFIX$TAB_TITLE_EXEC"
    eval "tab_hardstatus=$TAB_HARDSTATUS_PREFIX$TAB_HARDSTATUS_EXEC"
    screen_set $tab_title $tab_hardstatus
  }
  # called by zsh before showing the prompt
  function precmd()
  {
    eval "tab_title=$TAB_TITLE_PREFIX$TAB_TITLE_PROMPT"
    eval "tab_hardstatus=$TAB_HARDSTATUS_PREFIX$TAB_HARDSTATUS_PROMPT"
    screen_set $tab_title $tab_hardstatus
  }
fi
rampion
fuente
10

La personalización de pantalla más útil, en mi humilde opinión, es cambiar la tecla modificadora a otra que no sea Ca. Esa es una clave demasiado importante para haber comido (vaya al comienzo de la línea en todas las indicaciones de línea de lectura y en emacs). Uso Cz, ya que necesito suspender las aplicaciones con menos frecuencia de lo que necesito editar algo al comienzo de la línea.

La palabra mágica es:

escape ^za
jrockway
fuente
1
configuré el mío en ctrl-K porque es la tecla ctrl menos utilizada en las aplicaciones que uso. ^ A es demasiado útil en bash / readline para sacrificarlo.
cas
1
Para verificar con qué choca, puede consultar superuser.com/questions/120333/… (que pregunté con esto en mente).
Hamish Downer
2
Para su información, si desea dejar Ca como la tecla de moderador, Ca a irá al comienzo de la línea. Me tomó un tiempo resolver esto.
Coomer
9

A menudo tengo más de 10 ventanas ejecutándose y quería una forma de seleccionarlas. Descubrí cómo configurar Ca Shift + 0 a 9 para seleccionar las ventanas 10 a 19.

bind  ! select 11
bind  @ select 12
bind \# select 13
bind  $ select 14
bind  % select 15
bind \^ select 16
bind  & select 17
bind  * select 18
bind  ( select 19
bind  ) select 10

Tenga en cuenta los escapes en # y ^.

staticsan
fuente
6

¿Harto de que los programas de pantalla completa como vim permanezcan en el búfer de desplazamiento después de haberlos cerrado? ¿No sería genial que se fueran completamente como lo hacen cuando no estás ejecutando la pantalla? Intente poner esto en su archivo ~ / .screenrc ...

altscreen on
Sean
fuente
2

Estoy usando Ctrl + Alt + Izquierda y Ctrl + Alt + Derecha para cambiar entre ventanas de pantalla. Para mi canal IRSSI, uso Alt + Izquierda y Alt + Derecha, y para cambiar el espacio de trabajo de GNOME, uso Ctrl + Alt + Shift + Izquierda / Derecha. Parece complicado, pero en realidad funciona muy bien.

Los códigos de caracteres para el terminal GNOME son diferentes de los códigos de caracteres cuando se conecta a través de PuTTy, por lo que tuve que duplicar las entradas. Puede usar cat> / dev / null para encontrar los códigos de caracteres apropiados para usted.

#     KEYBOARD SHORTCUTS    #
# execute 'cat > /dev/null' to see the character codes

# Change Escape Combination to Ctrl+f (Ctrl+a is too useful to lose)
escape ^Ff

# PREVIOUS WINDOW
# Ctrl + Alt + Left from gnome-terminal
bindkey ^[[1;7C prev

# Ctrl+Alt+Left from putty
bindkey ^[^[[D prev

# NEXT WINDOW
# Ctrl + Alt + Right from gnome-terminal
bindkey ^[[1;7D next

# Ctrl+Alt+Right from putty
bindkey ^[^[[C next
tboerman
fuente
1

El comando de retroceso es bastante maravilloso. Lea sobre esto en la pantalla del hombre. Lo uso así:

backtick 1 15 15 $HOME/bin/cpuusage
# now add '%1`%% CPU' to your hardstatus string. Result is like 38.4% CPU.

Mi script de CPU para Linux y Mac es:

#!/bin/bash
if [[ $(uname) == "Darwin" ]]; then
    top -i1 -l2 -n0|awk '/CPU/{i+=1; gsub(/%/,"",$0);p=substr(sprintf("%3.2f",$8+$10),0,4);if(i==2){printf "%g", p}}'
  else
    awk 'NR==1 {p=substr(sprintf("%3.2f", ($2+$3)/($2+$3+$4+$5)*100),0,4); printf "%g", p;}'</proc/stat
fi
Bruno Bronosky
fuente
0

Tampoco puedo vivir sin la barra de menú. Una cosa que no me gusta poner en el menú que mucha gente tiene es el tiempo; evita que el desplazamiento hacia atrás de PuTTY permanezca desplazado hacia atrás (ya que se considera una actualización de pantalla)

Mikeage
fuente
1
¿Podrías usar el scrollback incorporado de la pantalla? C-A [de forma predeterminada, lo pondrá en modo de copia y le permitirá navegar por su pestaña actual utilizando comandos de teclado como un editor de texto.
Murali Suriar
@murail Prefiero usar la rueda de desplazamiento en mi mouse cuando uso masilla; solo habito. @mikeage: descubrí que si eliminas los segundos del reloj, el búfer de desplazamiento en pantalla funciona bastante bien. Por supuesto, principalmente tengo un reloj en mi pantalla para evitar los estúpidos tiempos de inactividad que tenemos en nuestros malditos firewalls. grrr.
Chris
0

Tengo F11 y F12 configurados para recorrer las ventanas, lo que hace que sea más rápido moverse entre ventanas, especialmente para ventanas> 10

# Bind F11 and F12 (NOT F1 and F2) to previous and next screen window
bindkey -k F1 prev
bindkey -k F2 next
el otro recibir
fuente
0

Si está usando urxvt, lo siguiente permitirá CTRL+LEFTy CTRL+RIGHTse usará para moverse a la ventana de pestañas anterior y siguiente:

bindkey "^[Od" prev  # ctrl-left
bindkey "^[Oc" next  # ctrl-right

Reconectando a una sesión de pantalla remota que siempre debe ejecutarse o crearse de inmediato:

bind V screen -t MYTABNAME ssh -t MYUSERNAME "screen -x main || screen -R -S main"

Desactivar el control de flujo de forma predeterminada le permite usar CTRL+Ren rtorrent correctamente:

defflow off

Si ejecuta rtorrent como daemon con su propia cuenta de usuario, este .screenrc puede ser útil:

vbell off
startup_message off
escape ^Rr
screen -t rtorrent rtorrent
multiuser on
acladd YOURUSERNAME
defflow off
Trey Hunner
fuente
0
# disable C-a s, which freezes the screen; can be resolved with C-a q
bind s 
Chase T.
fuente