web-dev-qa-db-fra.com

Titres de la fenêtre et des onglets iTerm2 dans zsh

Je veux étiqueter les onglets de fenêtre des sessions de terminal. J'utilise le zshell dans iterm2 sur OSX. Est-il possible de changer le libellé d'un onglet de fenêtre de manière dynamique dans le terminal?

49
bneil

Vous pouvez entrer les informations suivantes dans zsh pour définir le titre de la fenêtre de iTerm2:

echo -ne "\e]1;this is the title\a"

Si vous voulez automatiser cela, insérer par exemple l'heure actuelle ou le répertoire de travail, modifiez vos fichiers de configuration zsh pour définir le titre de la fonction precmd() sur p. ex. $PWD.

echo -ne "\e]1;$PWD\a"

Vous pouvez en savoir plus sur la fonction precmd dans man zshmisc dans la section SPECIAL FUNCTIONS.

enter image description here

47
Daniel Beck

Ce qui fonctionne pour moi:

echo -e "\033];this is the title\007"

Si vous utilisez Mac OSX et iTerm, iTerm2 ::

  • iTerm → Préférences → Apparence → Titres de fenêtre et d'onglet → Tout désélectionner

Si vous utilisez zsh, vous devrez peut-être modifier vos paramètres. Vos paramètres sont généralement dans le fichier ~/.zshrc. Vous souhaitez ajouter ou modifier vos paramètres pour vous assurer que cette ligne existe:

DISABLE_AUTO_TITLE="true"
44

ITerm offre l’un des avantages de la possibilité de définir séparément le titre de la fenêtre et le titre de l’onglet: example of using tab & window title separately

# $1 = type; 0 - both, 1 - tab, 2 - title
# rest = text
setTerminalText () {
    # echo works in bash & zsh
    local mode=$1 ; shift
    echo -ne "\033]$mode;$@\007"
}
stt_both  () { setTerminalText 0 $@; }
stt_tab   () { setTerminalText 1 $@; }
stt_title () { setTerminalText 2 $@; }

De cette façon, vous pouvez voir immédiatement à quel hôte vous êtes connecté dans quelle fenêtre, et le titre de la fenêtre pour chaque onglet indique l'utilisateur et CWD.

38
Orangenhain

Un precmd fait l'affaire. Cependant, certains thèmes oh-my-zsh déconnent avec le titre de la fenêtre. Définissez PR_TITLEBAR sur une chaîne vide pour y remédier.

set-window-title() {
  # /Users/clessg/projects/dotfiles -> ~/p/dotfiles
  window_title="\e]0;${${PWD/#"$HOME"/~}/projects/p}\a"
  echo -ne "$window_title"
}

PR_TITLEBAR=''
set-window-title
add-zsh-hook precmd set-window-title

Je recommanderais également de jouer avec les paramètres d'onglet de iTerm2 dans Préférences -> Apparence.

4
Chris Gaudreau

Ajouter export Prompt_COMMAND='echo -ne "\033]0;$PWD\007"' dans ~/.bash_profile a fonctionné pour moi.

https://Apple.stackexchange.com/a/90737/49605

2
michalzuber