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?
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
.
Ce qui fonctionne pour moi:
echo -e "\033];this is the title\007"
Si vous utilisez Mac OSX et iTerm, iTerm2 ::
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"
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:
# $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.
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.
Ajouter export Prompt_COMMAND='echo -ne "\033]0;$PWD\007"'
dans ~/.bash_profile
a fonctionné pour moi.