Prompt personalizado do Tmux e ZSH: bug com nome da janela

41

Eu personalizei meu prompt do ZSH com oh-my-zsh para torná-lo mais legível e adicionar informações sobre git se eu estiver em um repositório.

Exemplo: bob@inf [~/docs] % e bob@inf [~/src/nicest] master % (em um repositório git)

Funciona bem, mas eu tenho alguns bugs com tmux e o nome da janela. Ele ainda exibe valor sem sentido e não posso desabilitá-lo com automatic-rename off (ele simplesmente não funciona, a mudança do nome da janela após cada comando), para o primeiro exemplo tmux use ~/docs para o nome da janela.

Não tenho certeza de como posso corrigi-lo, gostaria de manter meu prompt do zsh como está, se posso fazer alterações, mas gostaria de entender onde está o problema?

Outra solução pode ser redefinir o comando settile (de esta resposta ), mas não sei como fazer isso da maneira certa.

    
por Adrien Coquio 04.07.2011 / 11:55

4 respostas

74

Eu dei uma olhada no oh-my-zsh e encontrei um provável suspeito .

Quando o valor da variável de ambiente TERM começa com screen (que deve sob tela e tmux ), ele usa uma tela seqüência de controle do terminal para definir o nome da janela para

  • (antes de exibir um prompt de shell)
    a parte mais à esquerda do caminho "til compactado" do diretório de trabalho atual ( .. seguido pelos últimos 13 caracteres ou o caminho inteiro se ele tiver menos de 15 caracteres) e
  • (antes de iniciar um comando)
    a primeira “palavra” do comando prestes a ser executado (sem contar ssh , sudo e alguns outros).

Parece que está funcionando dessa maneira para você (você disse que sua janela com o nome mudou para ~/docs quando estava nesse diretório). Se você quiser desabilitar essa renomeação automática, você pode desativá-la completamente definindo o parâmetro shell DISABLE_AUTO_TITLE como true em seu .zshrc :

DISABLE_AUTO_TITLE=true

Se você acabou de definir isso em um shell interativo, você terminará com uma string vazia para o nome da janela atual, mas oh-my-zsh irá parar de atualizar a janela antes de cada prompt e comando naquela instância do shell (ele precisa estar em seu .zshrc para afetar todas as novas instâncias do shell).

    
por 08.08.2011 / 07:15
26

Eu sei que a resposta acima lhe dá uma solução, mas outra é simplesmente adicionar essa opção em seu arquivo ~ / .tmux.conf

set-option -g allow-rename off
    
por 06.07.2013 / 00:09
5

Eu encontrei o mesmo problema, que é o nome da janela do tmux que foi alterado mesmo configurando em .tmux.conf:

set-window-option -g automatic-rename off

Obrigado pela resposta de Chris. Meu nome de janela do tmux não foi renomeado automaticamente depois que eu mudei:

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

para:

set -g default-terminal "xterm-256color"
    
por 14.08.2014 / 03:09
0

Se você quiser desabilitar a renomeação automática somente para determinada janela, você poderá usar:

 set -t [WINDOW_NUMBER] automatic-rename off

Desabilite a renomeação automática na janela específica em outra sessão:

 set -t [SESSION]:[WINDOW_NUMBER] automatic-rename off
    
por 13.04.2017 / 04:26