Écran GNU: changement de nom de nouvelle fenêtre


20

Je peux changer le nom d'une fenêtre avec Ctrl-a Shift-a. Au lieu de modifier plusieurs noms de fenêtres à la main, existe-t-il un moyen de les nommer automatiquement d'après le répertoire actuel?


Quelle coquille utilisez-vous?
marco

J'utilise bash.
liewl

Réponses:


21

Faites en sorte que votre shell change le titre de la fenêtre chaque fois qu'il change de répertoire ou chaque fois qu'il affiche une invite.

Pour votre ~/.bashrc:

if [[ "$TERM" == screen* ]]; then
  screen_set_window_title () {
    local HPWD="$PWD"
    case $HPWD in
      $HOME) HPWD="~";;
      $HOME/*) HPWD="~${HPWD#$HOME}";;
    esac
    printf '\ek%s\e\\' "$HPWD"
  }
  PROMPT_COMMAND="screen_set_window_title; $PROMPT_COMMAND"
fi

Ou pour votre ~/.zshrc(pour les utilisateurs de zsh):

precmd () {
  local tmp='%~'
  local HPWD=${(%)tmp}
  if [[ $TERM == screen* ]]; then
    printf '\ek%s\e\\' $HPWD
  fi
}

Pour plus d'informations, recherchez sous Titres dynamiques dans le manuel de l'écran ou sous «Titres (fenêtres de dénomination)» dans la page de manuel.


J'ai copypassé le bash sur mon .bashrc et cela dégage ces erreurs: bash: PROMPT_COMMAND: ligne 0: erreur de syntaxe près du jeton inattendu ;' bash: PROMPT_COMMAND: line 0: ; screen_set_window_title '
liewl

@David: Désolé, le but était d'accumuler des commandes PROMPT_COMMANDs'il y avait déjà quelque chose, mais j'avais les composants dans le mauvais ordre.
Gilles 'SO- arrête d'être méchant'

2
Super astuce @Gilles. Pour ceux qui aiment garder les titres des fenêtres courts, vous pouvez supprimer le chemin complet et ne conserver que le nom de base. Il suffit de remplacer $HOME/*) HPWD="~${HPWD#$HOME}";;par*) HPWD=`basename "$HPWD"`;;

0

Vous pouvez le placer dans le .bashrc pour changer le nom du terminal (nom de la fenêtre) en le dernier répertoire (ou nom de fichier) dans lequel vous vous trouvez (en train de travailler).

case "$TERM" in xterm*|rxvt*) PROMPT_COMMAND='echo -ne "\033]0;${PWD##*/}\007"' ;; *) ;; esac

plus décrit ici: lien

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.