Para o iTerm2, como faço para que o diretório de trabalho apareça no título da janela?

22

Recentemente, mudei para o iTerm2 a partir do aplicativo Terminal padrão e tenho um problema de usabilidade.

No Terminal, o diretório de trabalho em que você aparece é exibido na barra de título, juntamente com o processo e o tamanho do pixel. Por exemplo, quando você clica em Janela para alternar entre diferentes sessões do Terminal, verá: working_directory - process - pixel_size.

No iTerm2, infelizmente, apenas o processo é exibido na barra de título. Portanto, se estou trabalhando em várias janelas do iTerm2 em diretórios diferentes, não consigo diferenciar facilmente qual é qual quando clico em Janela para escolher uma. Sei que posso alternar facilmente entre janelas do iTerm2 depois de selecionar uma, mas gostaria de identificar exatamente qual janela quero imediatamente. (A propósito, eu uso o Witch, e as guias de comando também não ajudam, porque aqui novamente apenas o processo aparece na lista).

Alguma sugestão? Eu olhei através de todas as preferências e não vi nada. Criar perfis não é exatamente o que estou procurando - eu gostaria de ver o diretório de trabalho atual nos títulos das janelas do iTerm2.

whiny_nil
fonte

Respostas:

20

Com a \033]0;TEXT\007sequência de escape.

Exemplo de uso no Bash: echo -ne "\033]0;$PWD\007"

Você pode adicionar ao seu $PROMPT_COMMANDse usar o Bash ou anexá-lo PS1a ele para que seja reavaliado com frequência.

Exemplo: export PROMPT_COMMAND='echo -ne "\033]0;$PWD\007"'

recatado
fonte
1
Isso funciona. Apenas para ser pedante, adicione a linha de exportação listada acima ao seu arquivo ~ / .bashrc.
Spencer #
Isso é incrível. Muito obrigado; isso me ajudou a entender que a resposta é realmente sobre programação bash e não tem nada a ver com o iTerm vs Terminal. Como acompanhamento de qualquer outra pessoa, consulte faqs.org/docs/Linux-mini/Xterm-Title.html#s3 e linfo.org/echo.html . Obrigado novamente!
Whiny_nil
5
e para obter apenas o último segmento do caminho echo -ne "\033]0;${PWD##*/}\007"(com agradecimentos a github.com/barryclark/bashstrap para mostrar o caminho)
Anentropic
1
@ Spencer: Não há razão para exportar a variável do shell PROMPT_COMMAND e, em geral, não se deve exportar uma variável do shell, a menos que você tenha uma necessidade específica de compartilhar a variável com todos os programas executados pelo shell . Por padrão, as variáveis ​​usadas pelo shell não devem ser exportadas; exporte apenas variáveis ​​que devem ser transmitidas para outros processos. ~/.bashrcserão executados por todos os shell interativos; portanto, eles não precisam herdar as variáveis ​​definidas por este script.
Chris Page
Bem, exportar é como você usa o PROMPT_COMMAND ... E geralmente é melhor para coisas complicadas link
recatada
2

Eu gosto desta resposta desta essência para adicioná-la ao título da guia

# put this in your .bash_profile
if [ $ITERM_SESSION_ID ]; then
  export PROMPT_COMMAND='echo -ne "\033];${PWD##*/}\007"; ':"$PROMPT_COMMAND";
fi
AshCooman
fonte
0

Se você estiver usando o zsh (que é o padrão no macOS 10.15), coloque-o no seu ~ / .zshrc:

if [ $ITERM_SESSION_ID ]; then
precmd() {
  echo -ne "\033]0;${PWD##*/}\007"
}
fi

Você também pode escrever \033como \ee \007como \a.

thakis
fonte