Instalação recente do Ubuntu 15.04: Não é possível renomear as guias do terminal gnome

39

No Ubuntu 14.10, se eu tivesse várias abas do Terminal abertas, eu poderia clicar com o botão direito do mouse na aba Terminal e renomeá-la. No Ubuntu 15.04 não consigo encontrar esse recurso.

Existe uma maneira fácil de recuperá-lo?

Esta é a versão atual:

$ gnome-terminal --version
GNOME Terminal 3.14.2
    
por Tom 30.04.2015 / 15:55

6 respostas

22

Respondido aqui

cito:

The user title code was removed1 from gnome-terminal 3.14. There's only one way to set the title, using an escape sequence - e.g. with bash:

PROMPT_COMMAND='echo -ne "3]0;YOUR TITLE GOES HERE%bl0ck_qu0te%7"'

1: see gnome bug 724110 and gnome bug 740188.

    
por A.B. 30.04.2015 / 15:59
31

A solução .bashrc proposta por Kirby funcionou para mim:

set-title(){
  ORIG=$PS1
  TITLE="\e]2;[email protected]\a"
  PS1=${ORIG}${TITLE}
}

no meu prompt: $ set-title test-title

    
por ronan_mac 26.11.2015 / 13:19
18

Eu não posso acreditar que eles removeram um recurso tão amigável como este.

Estou mudando para o ROXTerm ( link ), que faz o trabalho muito bem. Está empacotado no Ubuntu:

sudo apt-get install roxterm

Então, deixe o dinossauro continuar seu próprio caminho; -)

    
por Michael Opdenacker 05.05.2015 / 06:49
14

Eu tentei o RoxTerm como sugerido acima, com bons resultados. Mas eu me decidi pelo MATE Terminal, que faz parte do Projeto MATE, uma continuação do Gnome 2, em 15.04:

sudo apt-get install mate-terminal

Esse terminal é baseado no código do terminal Gnome.

Comentário: É difícil entender a mentalidade dos desenvolvedores do Gnome Terminal. Há muita discussão sobre como "como" nomear guias de terminal e como é difícil acertar. Se for esse o caso, por que dificultar o nome do usuário? Não é muito inteligente em tudo.

    
por Doug Van Horn 04.11.2015 / 21:43
6

Agora, investiguei isso por quase um dia e finalmente encontrei uma maneira de definir esse título. É feito através de seqüências de escape que começam com \ e] 0; e termina com um caractere BEL (= \ 007 = \ a). Ao contrário do que afirmei acima, as comunicações do shell de volta ao aplicativo terminal são possíveis, muito limitadas, por meio dessas sequências de escape (há mais algumas).

Sobre isso de cima:

PROMPT_COMMAND='echo -ne "\e]0;YOUR TITLE GOES HERE\a"'

pode funcionar, mas nem sempre. PROMPT_COMMAND é uma variável cujo conteúdo é executado cada vez que você envia um comando, então ele também envia essa seqüência de escape. No entanto, isso pode ser substituído por uma seqüência de escape na variável PS1, que define o prompt da linha de comando. É por isso que o acima não teve efeito aqui.

De uma instalação mais antiga do Ubuntu eu peguei isso, que define o prompt de comando (parte direita, após o ] ) e também envia a seqüência de escape necessária (parte esquerda, até e incluindo o ] ):

PS1="\[\e]0;\[email protected]\h: \w\a\]\[email protected]\h:\w\$ "

Isso provavelmente terá um melhor desempenho, porque não há necessidade de interpretar $PROMPT_COMMAND a cada vez. Também tem muito mais opções, porque o Bash tem mais sequências de escape aqui, por ex. \u para o nome de usuário atual, \W para o nome do diretório atual ou \w para o caminho inteiro do diretório de trabalho atual, opcionalmente reduzido para apenas os últimos pelo número em $PROMPT_DIRTRIM . Veja o capítulo PROMPTING na página man do Bash. Além disso, observe que a sequência de escape também está cercada por \[ e \] aqui.

Para definir um título fixo, isso funciona:

PS1="\[\e]0;YOUR TITLE GOES HERE\a\]\[email protected]\h:\w\$ "

Aproveite!

Durante minha investigação eu também tentei entender o código-fonte do gnome-terminal, que leva ao código-fonte e aí o suporte para a configuração de título e leitura de seqüências de escape é considerado um risco de segurança: Veja aqui (caso 20, caso 21) e aqui (" Relatório de Título da Janela ").

    
por Traumflug 01.05.2015 / 20:43
5

A configuração de $ PROMPT_COMMAND como mostrado acima não tem efeito aqui. Não é surpresa, porque o Bash roda dentro do terminal e os processos pai (aqui: gnome-terminal) não podem ler o ambiente de uma criança em um sistema operacional similar ao unix. Usando algo mais simples, como

PROMPT_COMMAND='echo bla'

Executa echo bla , nada mais acontece.

Editar: é preciso envolver isso em seqüências de escape, veja minha outra resposta. Apesar de ler o ambiente da criança não é possível, alguma comunicação de volta para o pai é, através dessas seqüências.

No bug 740188 do Gnome, eles falam sobre a definição de uma função title () em .bashrc. Um diferente para cada aba aberta? Grave feio à frente, se possível!

Mesmo outras explicações sobre o Stackexchange falam sobre como configurar $ PS1 (e obter upvoted). Desculpe, não, esse não é o título, esse é o prompt de comando.

Resumindo: eles estragaram tudo além de conserto para economizar um pouquinho de espaço no diálogo de preferências. OMG

Agora, a única chance de reverter uma decisão de desenvolvedor é acender um grave shitstorm, senão eles simplesmente fecham o relatório de bug em segundos (tentados muitas e muitas vezes). Como poderíamos criar essa merda?

    
por Traumflug 01.05.2015 / 00:10