Agora, investiguei isso a maior parte do dia e finalmente encontrei uma maneira de definir esse título. Isso é feito através de seqüências de escape que começam com \ e] 0; e termine com um caractere BEL (= \ 007 = \ a). Ao contrário do que afirmei acima, as comunicações do shell de volta ao aplicativo do terminal são possíveis, muito limitadas, por meio de tais seqüências de escape (existem mais algumas).
Sobre isso de cima:
PROMPT_COMMAND='echo -ne "\e]0;YOUR TITLE GOES HERE\a"'
Ele pode trabalhar, mas nem sempre faz. PROMPT_COMMAND
é uma variável cujo conteúdo é executado toda vez que você envia um comando, e também envia essa sequência de escape. No entanto, isso pode ser substituído por uma sequência de escape na variável PS1, que define o prompt da linha de comando. É por isso que o exposto acima não teve efeito aqui.
Em uma instalação mais antiga do Ubuntu, peguei isso, que define o prompt de comando (parte direita, após o ]
) e também envia a sequência de escape necessária (parte esquerda, incluindo o ]
):
PS1="\[\e]0;\u@\h: \w\a\]\u@\h:\w\$ "
Isso provavelmente tem um desempenho melhor, porque não há necessidade de interpretar $PROMPT_COMMAND
cada vez. Ele também tem muito mais opções, porque o Bash tem mais seqüências de escape aqui, por exemplo, \u
para o nome de usuário atual, \W
para o nome do diretório atual ou \w
para todo o caminho do diretório de trabalho atual, opcionalmente aparado apenas para os últimos pelo número $PROMPT_DIRTRIM
. Veja o capítulo PROMPTING
na página de manual do Bash. Observe também que a sequência de escape também deve ser cercada por \[
e \]
aqui.
Para definir um título fixo, isso funciona:
PS1="\[\e]0;YOUR TITLE GOES HERE\a\]\u@\h:\w\$ "
Apreciar!
Durante minha investigação, também tentei entender o código-fonte do terminal gnome, o que leva ao código-fonte vte e, portanto, o suporte à definição de títulos e às seqüências de escape de leitura é considerado um risco à segurança: veja aqui (caso 20, caso 21) e aqui ("Relatório do título da janela").