Como mudar o título do Gnome-Terminal?

165

Eu tenho várias instâncias de terminais em execução no meu ambiente de trabalho, o que eu gostaria é definir um título específico para cada um, para ter uma idéia clara de qual finalidade o terminal específico serve, como Apache, edit_ini, postgres etc.

Claro a partir da linha de comando.

topless
fonte
Além do comentário de Ward: Não se esqueça de "desmarcar PROMPT_COMMAND" antes de enviar a sequência de escape da mudança de título, caso contrário, qualquer alteração feita será perdida assim que o próximo shell for solicitado.
Jon Green
Para uma pergunta semelhante para o KDE, consulte stackoverflow.com/questions/8782159/…
naught101
Eu tive esse problema ao mudar do OS X para o Ubuntu. Para obter títulos personalizados em uma configuração com várias guias, usei gnome-terminal --load-configjunto com este script que escrevi.
halfer
3
adicione o seguinte ao seu arquivo .bashrc em seu diretório home # set title of current terminal setTerminalTitle(){ echo -ne "\033]0;${1}\007" } alias termttl=setTerminalTitleagora você pode usar termttl alias para definir título por exemplotermttl askubuntu
urmalp
1
"Protegido", por isso não posso responder. O gnome-terminalpadrão do Gnome3 é PROMPT_COMMAND=__vte_prompt_command. Isso usa valores de Perfis em prefs. Quando existem vários perfis, os itens de menu Nova Guia e Nova Janela têm um item de submenu para cada Perfil. A maneira manual é abrir uma nova aba terminal, clique direito sobre o título da página, e selecione Definir título ... . (Isso seria muito mais fácil em uma resposta separada, mas ...)
Rich

Respostas:

145
  • A maneira mais amigável é selecioná-lo no menu Terminal -> "Definir título ...".

  • Existem outras maneiras, no entanto, você também pode emitir

    gnome-terminal --title="SOME TITLE HERE"
    

    Isso pode não dar o efeito desejado, pois há uma grande chance de que você .bashrcsubstitua esse comportamento.

  • Trazendo-nos para o último método, que eu descaradamente arranquei do meu .bashrc.

    PROMPT_COMMAND='echo -ne "\033]0;SOME TITLE HERE\007"'
    

Como uma referência extra, esta é a linha específica no meu .bashrc

PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"'

Você também pode precisar comentar esse código em seu ~ / .bashrc

case "$TERM" in
xterm*|rxvt*)
    # JEFFYEE REMOVED because it makes commands to title() not work
    #PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
    ;;
*)
    ;;
esac
Ward Muylaert
fonte
2
Precisa comentar ou remover como você mencionou para ter efeito!
topless
1
@Ard: PROMPT_COMMANDé um programa para executar. PS1e PS1são cadeias de texto que são exibidas. No exemplo acima, o comando que é executado é echo, que simplesmente imprime uma string. Veja man bashou manpages.ubuntu.com/bash para mais detalhes.
Sladen
29
O Terminal GNOME 3.16.2 dizOption "--title" is no longer supported in this version of gnome-terminal.
Ivan Kozik
10
No Gnome 3.18.3, não há entrada "Definir título" nos menus: /
shadi 26/09/16
2
Para qualquer outra pessoa confusa com o gobbledegook nas strings acima, eles são caracteres de escape ANSI - veja por exemplo lihaoyi.com/post/…
WillC
65

A resposta de Ward é ótima se você deseja definir seu título com base em qual host você está etc, toda vez que você abre um terminal. Se você deseja definir rapidamente um título, basta executar o eco por si só:

echo -ne "\033]0;SOME TITLE HERE\007"

ou faça uma função simples (dentro da sua ~/.bashrc), digamostermtitle

termtitle() { printf "\033]0;$*\007"; }

com o qual você pode executar termtitle some title here.

naught101
fonte
3
ou semelhante que pode adicionar como alias de festa adicionando abaixo linhas em ~ / .bash_aliases function set_title() { echo -ne "\033]0;${1}\007" } alias title=set_titlee, em seguida, utilizar: $ title term_title
murarisumit
11
Infelizmente, parece não funcionar para mim no terminal 3.6.2 do GNOME.
austinmarton
1
Também não parece funcionar no xterm 322 ou no konsole 16.12 ... infelizmente não sei se existe um novo método :(
naught101
2
@ 3ocene ele realmente não importa, neste caso, eles são a mesma coisa, mas é um bom hábito de entrar, porque por exemplo, $var_loge ${var}_logsão coisas muito diferentes, ea diferença pode causar erros em scripts.
precisa saber é o seguinte
2
se não funcionar para você, provavelmente é porque PROMPT_COMMAND var ou PS1 var está definido e está substituindo-o. unset PROMPT_COMMANDou defina-o para que ele também mude o título, por exemplo export PROMPT_COMMAND='printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "$(basename $PWD)"'
gaoithe
32

Se você usa o editor Vim, também pode ativar esta opção no seu vimrc:

:set title

que está desativado por padrão. Ele definirá títulos legais do terminal, mostrando o nome do arquivo que você está editando no momento e algumas outras coisas.

ulidtko
fonte
26

Por uma questão de integridade, eu acrescentaria que você também pode definir o gnome-terminaltítulo usando este comando:

wmctrl -r :ACTIVE: -N "MyWindowTitle"

Você precisará instalar o pacote wmctrlInstale o wmctrl primeiro.

Isaías
fonte
1
MyWindowTitle não aparece no título do terminal. Aparece quando eu faço wmctrl -m.
precisa saber é o seguinte
2
Observe que o wmctrl altera o título da janela e não o título da guia, enquanto a solução de caracteres de escape altera o título da guia. Além disso, o título da janela volta ao título da guia original assim que você alterna entre as guias.
Redochka #
23

Argh, tantas respostas ...

Eu tentei wmctrl, o que quase funcionou, exceto que não consegui mudar o título do ícone, pelo menos não permanentemente.

O problema é que o PS1 no Bash no Ubuntu define o título.

O PS1 padrão é

\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ 

... que define o título na primeira sequência de escape: \e]0;\u@\h: \w\a

Assim, existem duas soluções:

Solução 1: simplifique o PS1 e use PROMPT_COMMAND

Mude o PS1 para algo mais simples:

PS1="\u@\h:\w\$ "

Em seguida, use o PROMPT_COMMAND:

PROMPT_COMMAND='echo -ne "\033]0;SOME TITLE HERE\007"'

Solução 2: modificar diretamente o PS1

Simplesmente modifique o PS1 com o novo título:

PS1='\[\e]0;newtitle\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
Hugh Perkins
fonte
oi, eu gosto bastante da sua resposta. Você se importaria de explicar o papel do ]0;seu código? Eu acho que encontrei o significado de echo -e '\007 \033'com o ascii -ocomando ... embora eu não esteja realmente certo do que está fazendo lá também ... obrigado ...
isomorfismos Em
2
@iso \eou \033é o caractere de escape (ESC), que inicia uma sequência de escape. ]inicia um comando do sistema operacional (OSC). Para um xterm, 0;significa "definir o título" e \aou \007é o caractere sino (BEL) que encerra o OSC. Mais informações: en.wikipedia.org/wiki/ANSI_escape_code#Escape_sequences
wjandrea
@wjandrea Eu estava procurando as letras de escape equivalentes ( \ee \a) para \033e, \007mas não as encontrei certamente porque não sabia as palavras-chave certas para digitar no google. O link que você forneceu também é útil. Você pode converter seu comentário em uma resposta?
SebMa 26/04
10

Se você é um usuário do Ubuntu, pode alterar o título de uma guia do gnome-terminal usando o HUD .

Enquanto estiver no terminal gnome, pressione Alt para ativar o HUD, digite as primeiras letras, por exemplo, "tit", pressione enter e digite seu novo título.

Este é um método muito rápido e evita o uso do mouse.

Tom
fonte
1
De fato. Mantém as mãos no teclado. O título existente é exibido, por isso é rápido e fácil também modificar o existente usando esse método.
Brent Faust
tit é apenas para o Ubuntu em inglês.
törzsmókus 22/02
e toda a opção foi removida :(
törzsmókus
a F2tecla também evita o mouse.
Isomorphismes
@ törzsmókus And French - titre ;)
wjandrea
3

Outra maneira de alterar o título de gnome-terminalé usando gconftool-2; isso altera o título inicial do terminal para o perfil selecionado, para que você possa ter perfis diferentes associados a títulos como 'Apache', 'Edição' etc. etc. Você iniciaria gnome-terminalcom o perfil apropriado para obter o título do terminal especificado. Isso contrasta com o gnome-terminal --title "name"que altera o título por terminal, mas não afeta o título inicial especificado no perfil.

Você pode usar o seguinte comando em um script para definir o nome do terminal para um perfil e alterar o nome do terminal em determinados horários do dia para lembrá-lo:

gconftool-2 --set /apps/gnome-terminal/profiles/Default/title --type=string "Apache"

Isso é para o perfil padrão, mas você também pode definir o título para outros perfis, alterando, por exemplo, Defaultpara outro perfil como Profile0:

gconftool-2 --set /apps/gnome-terminal/profiles/Profile0/title --type=string "Editing"

Eu pensei que essa maneira de alterar o título é útil por causa da maneira como ela pode ser usada em scripts ou apenas como uma maneira rápida de definir o título para o perfil. Observe que às vezes você precisa reiniciar o terminal com o perfil especificado para que a gconftool-2configuração seja afetada. As configurações completas disponíveis para gnome-terminalpodem ser listadas com gconftool-2 -R /apps/gnome-terminal.


fonte
3

Outra solução é usar o xdotool para simular pressionamentos de tecla, talvez útil em scripts:

  1. Defina um atalho de teclado no terminal gnome:

    Edit > Keyboard Shortcuts... > Terminal > Set Title
    

    Por exemplo, avaliando o Shift+Ctrl+Y.

  2. Instale xdotoolse você ainda não o possui:

    sudo apt-get install xdotool
    
  3. A seguinte sequência de comandos (que você também pode usar em um script bash) definirá o título do terminal / guia (escape dos espaços com \):

    xdotool key ctrl+shift+y 
    xdotool type My\ new\ fabulous\ title
    xdotool key Return
    
  4. [opcional] Você também pode usar o xdotool para, por exemplo, abrir uma nova guia e definir o título com os comandos acima, usando:

    xdotool key ctrl+shift+t
    

    Considere adicionar um tempo de suspensão antes e depois de abrir uma nova guia, por exemplo sleep 1(para aguardar 1 segundo).

Esta não é a solução mais elegante, mas funcionou para mim! As respostas anteriores não funcionaram no meu caso. Eu uso o gnome-terminal no Ubuntu 14.04 e queria criar um script bash.

MakisH
fonte
1

Para exibir apenas o diretório de trabalho atual no título, tente isso em seu '.bashrc':

PROMPT_COMMAND='echo -ne "\033]0; ${PWD##*/}\007"'

ou

PROMPT_COMMAND='echo -ne "\033]0;$(basename ${PWD})\007"' 
Sriram
fonte
0

Isso funcionou no meu Terminal Gnome 3.18.3 .

Edite seu arquivo .bashrc e adicione esta função

# Update gnome terminal title
function termtitle() {
    # take argument
    TITLE=$1
    shift
    # update title
    PROMPT_COMMAND='echo -ne "\033]0; $TITLE \007"'
}

Não se esqueça do sourceseu arquivo .bashrc

$ source ~/.bashrc

E então você pode simplesmente atualizar, você poderá alterar o título do terminal assim:

$ termtitle "MariaDB CLI"
RousseauAlexandre
fonte
0

Minha resposta é semelhante à resposta mais recente, que não funcionou para mim. As respostas mais antigas não funcionam mais. A resposta do meio da idade é digitação demais, então criei uma função no meu ~/.bashrcarquivo:

function termtitle() { PS1="${PS1/\\u@\\h: \\w/$@}"; }

Após adicionar ou alterar a função ou, se desejar redefinir o título pela segunda vez, use:

. ~/.bashrc
termtitle Special Projects

Caso contrário, diariamente, basta usar termtitlecom um novo título.

WinEunuuchs2Unix
fonte
-1

Caso qualquer pessoa pobre como eu seja forçada a usar o tcsh, tente algo assim no seu .cshrc:

set prompt='%{\033]0;%n@%m\007%}%~%# '

Fonte e mais detalhes: http://tldp.org/HOWTO/Xterm-Title-4.html

spookypeanut
fonte
Alguma indicação de por que minha resposta foi rejeitada teria sido legal :-(
spookypeanut
-1

Se você estiver usando o gnome 3, a conveniente Terminal > Set Titleopção de menu foi removida. Você pode instalar um terminal bifurcado do gnome 2 que ainda tenha a opção de menu "Definir título" e execute-a:

sudo apt-get install mate-terminal

Em vez de executar "Terminal", execute "MATE Terminal". Você provavelmente também deve selecionar o terminal do companheiro em sudo update-alternatives --config x-terminal-emulator.

JDiMatteo
fonte