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

43

J'ai personnalisé mon invite ZSH avec oh-my-zsh pour la rendre plus lisible et ajouter des informations sur git si je suis dans un référentiel.

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

Cela fonctionne bien mais j'ai quelques bugs avec tmuxet le nom de la fenêtre. Il affiche toujours une valeur non sens et je ne peux pas le désactiver avec automatic-rename off(cela ne fonctionne tout simplement pas, le nom de la fenêtre change après chaque commande), pour le premier exemple d'utilisation de tmux ~/docspour le nom de la fenêtre.

Je ne suis pas sûr de savoir comment résoudre ce problème. J'aimerais conserver ma invite de zsh telle qu'elle est, si je peux apporter des modifications, mais j'aimerais comprendre où se situe le problème?

Une autre solution peut être de redéfinir la commande settile(à partir de cette réponse ), mais je ne sais pas comment le faire de la bonne façon.

Adrien Coquio
la source

Réponses:

76

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

Lorsque la valeur de la variable d’environnement TERM commence par screen(ce qu’elle doit être à la fois sous screen et tmux ), il utilise une séquence de contrôle de terminal écran pour définir le nom de la fenêtre sur

  • (juste avant d'afficher une invite du shell)
    la partie la plus à gauche du chemin "tilde compressé" du répertoire de travail actuel ( ..suivi des 13 derniers caractères ou du chemin complet s'il y a moins de 15 caractères) et
  • (juste avant le démarrage d' une commande)
    le premier « mot » de commandement au sujet à être à la gestion (sans compter ssh, sudoet quelques autres).

Il semble que cela fonctionne de cette façon pour vous (vous avez dit que votre fenêtre nommée avait été remplacée par ~/docslorsque vous vous trouviez dans ce répertoire). Si vous souhaitez désactiver ce changement de nom automatique, vous pouvez le désactiver complètement en définissant le paramètre shell DISABLE_AUTO_TITLE truesur .zshrc:

DISABLE_AUTO_TITLE=true

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

Chris Johnsen
la source
4
C'est une réponse parfaite. Précis, informatif, concis et précis. De plus, il fournit une solution en plus de répondre à la question initiale ("comprendre où est le problème"). Il est regrettable que celui qui a pris le temps de le demander ne se soit pas soucié d'indiquer cette réponse comme une réponse.
Dmondark
Merci merci merci merci merci merci merci
Jezen Thomas
où est un .zshrcfichier pour tous les utilisateurs?
andilabs
29

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

set-option -g allow-rename off
Albertogg
la source
C'est une meilleure solution car elle n'affecte que tmux.
Paul Oliver
Même avec ce paramètre, join-pane suivi de break-pane réinitialise le nom de la fenêtre :(
djsadinoff
6

J'ai rencontré le même problème, c'est-à-dire que le nom de la fenêtre de tmux a été modifié même en configurant le fichier .tmux.conf:

set-window-option -g automatic-rename off

Merci 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"
rwxrwxrwx
la source
0

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

 set -t [WINDOW_NUMBER] automatic-rename off

Désactivez le renommage automatique dans une fenêtre spécifique d'une autre session:

 set -t [SESSION]:[WINDOW_NUMBER] automatic-rename off
Viktor Nonov
la source