Como mudar o título da janela do mintty?

31

MinTTY é o novo console padrão do Cygwin.

O que é um comando shell (algo que eu posso colocar em .bashrc, ou melhor ainda em .zshrc) para mudar o título da janela MinTTY?

Eu gostaria que o título da janela fosse o caminho para o diretório atual e que ele fosse atualizado à medida que eu alternasse os diretórios dentro do console.

    
por Leonel 28.11.2011 / 16:38

8 respostas

43

O que está errado

O comando a seguir não estava funcionando para mim:

echo -ne "\e]0;MYTITLE\a"

Acontece que minha instalação padrão do Cygwin inclui a seguinte definição de prompt em .bashrc:

PS1=\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n$

Observe que a primeira parte do prompt ( \e]0;\w\a ) está definindo o título do Windows toda vez que o prompt aparecer.

A solução

Adicione estas linhas ao seu .bashrc que definem 2 funções:

function settitle() {
      export PS1="\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n$ "
      echo -ne "\e]0;$1\a"
}
function settitlepath() {
      export PS1="\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n$ "
}

Depois, você pode definir um título personalizado com este comando:

settitle "MYWonderfullTest here"

ou você pode reverter para o padrão do cygwin (o caminho atual) com este comando:

settitlepath

Espero que isso ajude

    
por 06.03.2015 / 08:56
23

Você pode alterá-lo com a sequência de controle xterm para isso, assim:

echo -ne '\e]0;Title\a'

Consulte o link

    
por 08.09.2012 / 13:50
3

Coloque isso em .zshrc:

# Change title of MinTTY to current dir
function settitle() {
    echo -ne "3]2;"$1"
# Change title of MinTTY to current dir
function settitle() {
    echo -ne "3]2;"$1"%pre%7"
}
function chpwd() {
    settitle $(cygpath -m 'pwd')
}
7" } function chpwd() { settitle $(cygpath -m 'pwd') }

A sequência de caracteres especiais no settitle da função faz MinTTY mudar o título da janela.

Em zsh , se você definir uma função com o nome especial chpwd, ela será invocado após cada chdir .

Funciona no WinXP, com o Cygwin 1.7 e o MinTTY rodando o zsh.

    
por 28.11.2011 / 18:15
2

No bash, a variável PROMPT_COMMAND pode ser configurada para conter um número de comandos, separados por ponto e vírgula. você pode usar isso para fazer a mesma configuração de título como descrito na outra resposta que fala sobre zsh.

    
por 26.04.2012 / 02:20
2
1) echo $PS1 and copy that string to your clipboard or text editor, as in
   echo $PS1
2) edit ~/.bash_profile and add shell code below, replacing $PS1 as necessary but keep the ${TERMINAL_TITLE} variable in the "false" condition.
3) Save the file and set the TERMINAL_TILE environment variable, as in
   export TERMINAL_TITLE="My Custom Title"
4) Source your bash profile, as in
   . ~/.bash_profile
Enjoy

if [ -z "${TERMINAL_TITLE}" ]
then
  PS1='\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$ '
else
  PS1='\[\e]0;${TERMINAL_TITLE}\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$ '
fi
    
por 25.03.2015 / 18:17
1

Eu usei a resposta de Leonel, mas achei que o título só tremia ao fazer isso, o que significa que pelo menos o comando echo funciona como pretendido. Eu corri zsh interativamente com o modo de depuração ativado usando

zsh -xv

A mudança do diretório evidentemente chama outra função chamada title() após precmd() e chpwd() , substituindo-os efetivamente. Então eu liguei isso ao meu .zshrc e funcionou.

function settitle() {
    echo -ne "3]2;"$1"
zsh -xv
7" } function title() { settitle $(cygpath -m 'pwd') }

Se você preferir usar chpwd() ou precmd() , basta desativar a função de título: title(){} .

    
por 20.07.2013 / 20:51
1

Só queria compartilhar minha solução para isso, pois uso o mintty para executar um script.

Meu atalho é criado como:

C:\cygwin64\bin\mintty.exe -i /Cygwin-Terminal.ico /usr/bin/bash.exe -l -c /scripts/connect.sh

O script connect.sh que eu escrevi e que é chamado no atalho acima me avisará do servidor que eu quero conectar a AND executar a função settitle definida no script.

connect.sh

#!/bin/bash

echo "Enter servername when prompted"
echo -n "servername: " 
read servername
function settitle() {
    echo -ne "3]2;"$servername"
C:\cygwin64\bin\mintty.exe -i /Cygwin-Terminal.ico /usr/bin/bash.exe -l -c /scripts/connect.sh
7" } function title() { settitle $(cygpath -m 'pwd') } settitle ssh my_username@$servername
    
por 12.11.2013 / 00:28
0

tente adicionar isso em .bash_profile

export PROMPT_COMMAND='echo -ne "3]0;${USER}@${HOSTNAME}:${PWD/#$HOME/~}%code%7"'

Funciona para mim.

    
por 28.07.2015 / 10:46

Tags