44 votes

Tmux et ZSH prompt personnalisé : bug avec le nom de la fenêtre

J'ai personnalisé mon invite ZSH avec oh-my-zsh pour le rendre plus lisible et ajouter des informations sur git si je suis dans un dépôt.

Exemple :
bob@inf [~/docs] %
bob@inf [~/src/nicest] master % (dans un dépôt git)

Ça fonctionne bien mais j'ai quelques bugs avec tmux et le nom de la fenêtre. Il affiche toujours une valeur sans sens et je ne peux pas le désactiver avec automatic-rename off (ça ne fonctionne pas, le nom de la fenêtre change après chaque commande), pour le premier exemple tmux utilise ~/docs comme nom de fenêtre.

Je ne suis pas sûr de comment je peux le résoudre, j'aimerais garder mon invite zsh telle qu'elle est, si je peux apporter des modifications mais j'aimerais comprendre où est le problème ?

Une autre solution pourrait être de redéfinir la commande settile (de cette réponse) mais je ne suis pas sûr de comment le faire correctement.

79voto

Chris Johnsen Points 36743

J'ai jeté un œil à oh-my-zsh et j'ai trouvé un suspect probable.

Lorsque la valeur de la variable d'environnement TERM commence par screen (ce qui devrait être le cas sous screen et tmux), il utilise une séquence de contrôle de terminal screen pour définir le nom de la fenêtre à

  • (juste avant d'afficher un invite de commande)
    la portion la plus à gauche du chemin "tilde compressé" du répertoire de travail actuel (.. suivi des 13 derniers caractères ou de l'intégralité du chemin s'il fait moins de 15 caractères) et
  • (juste avant de lancer une commande)
    le premier "mot" de la commande sur le point d'être exécutée (sans compter ssh, sudo, et quelques autres).

Il semble que cela fonctionne de cette manière pour vous (vous avez dit que le nom de votre fenêtre a changé en ~/docs lorsque vous étiez dans ce répertoire). Si vous voulez désactiver ce renommage automatique, vous pouvez le désactiver complètement en définissant le paramètre shell DISABLE_AUTO_TITLE sur true dans votre .zshrc :

DISABLE_AUTO_TITLE=true

Si vous définissez simplement cela dans un shell interactif, vous aurez une chaîne vide pour le nom de la fenêtre actuelle, mais oh-my-zsh arrêtera de mettre à jour la fenêtre avant chaque invite de commande et chaque commande dans cette instance de shell (il doit être dans votre .zshrc pour affecter toutes les nouvelles instances de shell).

31voto

cyqsimon Points 113

Je sais que la réponse ci-dessus vous donne une solution, mais une autre consiste simplement à ajouter cette option à votre ~/.tmux.conf

set-option -g allow-rename off

6voto

Seth Points 261

J'ai rencontré le même problème, qui est que le nom de la fenêtre de tmux a été modifié même en le définissant dans .tmux.conf:

set-window-option -g automatic-rename off

Merci pour la réponse de Chris. Le nom de ma fenêtre tmux n'a pas été renommé automatiquement après avoir changé :

set -g default-terminal "screen-256color"

à :

set -g default-terminal "xterm-256color"

0voto

Viktor Nonov Points 353

Si vous souhaitez désactiver le renommage automatique uniquement pour certaines fenêtres, vous pouvez utiliser :

 set -t [NUMÉRO_DE_LA_FENÊTRE] automatic-rename off

Désactiver le renommage automatique dans une fenêtre spécifique dans une autre session :

 set -t [SESSION]:[NUMÉRO_DE_LA_FENÊTRE] automatic-rename off

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X