Quels sont les paramètres utiles de .screenrc?

54

Fondamentalement, comme certains des miens que j'ai postés ci-dessous. Je recherche des fonctionnalités supplémentaires dans l'écran du programme. À tout le moins, jetez un coup d'œil à la dernière ligne pour découvrir une fantastique "barre de menus" au bas d'une session à l'écran.

## 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
la source

Réponses:

22

Pour ceux qui recherchent une méthode moins cryptée pour la configuration d’un bon écran, je peux recommander chaudement byobu (anciennement appelé profils d’écran). Il vous donne un joli ensemble d'éléments par défaut au bas de l'écran - la ligne inférieure contient diverses informations d'état utiles, et la seconde à partir de la ligne inférieure contient une liste de vos fenêtres d'écran. Tout cela peut être configuré dans un menu simple et convivial en appuyant sur F9.

Les touches de fonction correspondent aux opérations courantes:

  • F2 - créer une nouvelle fenêtre
  • F3 - Aller à la fenêtre précédente
  • F4 - Aller à la fenêtre suivante
  • F5 - Recharger le profil
  • F6 - Détache de la session
  • F7 - Entrer en mode de défilement
  • F8 - Voir toutes les associations
  • F9 - Configurer les profils d'écran
  • F12 - Verrouille ce terminal

Voir cet article pour un tutoriel et des captures d'écran .

Byobu est dans les dépôts d'ubuntu à partir de karmique (9.10). En jaunty cela s'appelait screen-profiles. Avant cela, il peut être installé depuis ce ppa ou depuis cette page de téléchargement . Il est également largement emballé pour d’autres distributions récentes.

Cela dépend de python, mais une fois que vous avez configuré byobu à votre guise, vous pouvez le faire générer une archive contenant tout ce dont vous avez besoin pour recréer votre écran sur un autre ordinateur à l'aide de byobu-export .

Hamish Downer
la source
Les profils d'écran sont géniaux . J'allais répondre avec le même.
jtimberman
12

J'utilise également une combinaison ligne / légende assez complexe pour simuler l'effet des onglets déroulants (la ligne de légende est en gris continu et l'onglet en cours dans l'état rigide est de la même couleur).

J'ai également mon shell qui dit à l'écran quel est le nom du processus actuel et dans quel répertoire je suis, afin que mes noms d'onglets restent à jour avec ce que je fais dans chaque onglet. Ceci est essentiel pour me souvenir de ce que je fais où sans avoir à parcourir tous mes onglets ouverts.

 # 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}"

Voici donc mes paramètres zshrc pour indiquer à l’écran ce que je fais dans chaque onglet.

# ~/.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
la source
10

La personnalisation d'écran la plus utile, IMHO, consiste à changer la touche de modification en autre chose que Ca. C’est tout simplement trop important d’une clé pour avoir mangé (aller au début de la ligne à toutes les invites de lecture, et dans emacs). J'utilise Cz, car je dois suspendre les applications beaucoup moins souvent que je n'ai besoin de modifier quelque chose au début de la ligne.

Le mot magique est:

escape ^za
jrockway
la source
1
J'ai mis le mien à ctrl-K parce que c'est la touche ctrl la moins utilisée dans les applications que j'utilise. ^ A est trop utile dans bash / readline pour sacrifier.
cas
1
Pour vérifier ce que vous affrontez, vous pouvez consulter superuser.com/questions/120333/… (ce que j’avais demandé en gardant cela à l’esprit).
Hamish Downer le
2
Pour votre information, si vous voulez laisser Ca comme touche du modérateur, ca va aller au début de la ligne. Il m'a fallu un certain temps pour comprendre cela.
Coomer
9

J'ai souvent plus de 10 fenêtres en cours d'exécution et je voulais un moyen de les sélectionner. J'ai découvert comment configurer Ca Shift + 0 à 9 pour sélectionner les fenêtres 10 à 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

Notez les échappements sur # et ^.

staticsan
la source
6

Vous en avez marre des programmes plein écran comme vim qui restent dans la mémoire tampon de défilement après les avoir fermés? Ne serait-il pas formidable qu'ils s'en aillent complètement comme ils le font quand vous ne courez pas d'écran? Essayez de mettre ceci dans votre fichier ~ / .screenrc ...

altscreen on
Sean
la source
2

J'utilise Ctrl + Alt + Gauche et Ctrl + Alt + Droite pour passer d'une fenêtre à l'autre. J'utilise Alt + Gauche et Alt + Droite pour mon canal IRSSI, et pour le changement d'espace de travail GNOME, j'utilise Ctrl + Alt + Maj + Gauche / Droite. Cela semble compliqué, mais cela fonctionne vraiment très bien.

Les codes de caractères pour le terminal GNOME sont différents des codes de caractères lors de la connexion via PuTTy, je devais donc dupliquer les entrées. Vous pouvez utiliser cat> / dev / null pour trouver les codes de caractères appropriés pour vous.

#     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
terman
la source
1

La commande de backtick est plutôt groovy. Lire à ce sujet dans l'écran de l'homme. Je l'utilise comme ça:

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

Mon script cpuusage pour Linux et Mac est:

#!/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
la source
0

Je ne peux pas non plus vivre sans la barre de menus. Une chose que je n'aime pas mettre sur le menu que beaucoup de gens ont, c'est le temps; empêche le défilement arrière de PuTTY de rester en arrière (puisqu'il est considéré comme une mise à jour d'écran)

Mikeage
la source
1
Vous pouvez utiliser le défilement intégré de l'écran? C-A [par défaut vous mettra en mode copie et vous permettra de naviguer dans votre onglet actuel en utilisant des commandes au clavier comme un éditeur de texte?
Murali Suriar
@murail Je préfère utiliser le truc de roue scrolly dans ma souris lorsque j'utilise du mastic; juste l'habitude. @ Mikeage - J'ai constaté que si vous supprimez les secondes de l'horloge, le tampon de défilement à l'écran fonctionne plutôt bien. Bien sûr, j'ai surtout une horloge sur mon écran pour éviter les délais d'inactivité stupides que nous avons sur nos maudits pare-feu. grrr.
chris
0

F11 et F12 sont configurés pour passer d’une fenêtre à l’autre, ce qui permet de se déplacer plus rapidement d’une fenêtre à l’autre, en particulier pour les fenêtres> 10.

# Bind F11 and F12 (NOT F1 and F2) to previous and next screen window
bindkey -k F1 prev
bindkey -k F2 next
theotherreceive
la source
0

Si vous utilisez urxvt, ce qui suit vous permettra CTRL+LEFTet CTRL+RIGHTvous utilisera de passer à la fenêtre d’onglet précédente et suivante:

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

Reconnexion à une session d'écran à distance qui doit toujours être en cours d'exécution ou créée immédiatement:

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

Désactiver le contrôle de flux par défaut vous permet d’utiliser CTRL+Rcorrectement dans torrent:

defflow off

Si vous exécutez rtorrent en tant que démon avec son propre compte utilisateur, ceci .screenrc peut être utile:

vbell off
startup_message off
escape ^Rr
screen -t rtorrent rtorrent
multiuser on
acladd YOURUSERNAME
defflow off
Trey Hunner
la source
0

Sur la base des réponses à Comment forcer Gnu screen à charger mon .profile bash , j’ajouterais:

shell -$SHELL

à votre ~/.screenrcfaire screencommencer les coquilles de connexion. Ceci est très utile si vous voulez que votre ~/.bash_profileexécution soit effectuée lorsque vous utilisez le shell screen.

Rodrigue
la source
0
# disable C-a s, which freezes the screen; can be resolved with C-a q
bind s 
Chase T.
la source