
Este é um pequeno acompanhamento paraessa questão. Estou trabalhando emtcshdentro do GNUtelaem umtermo x.
Eu tenho o seguinte no meu .cshrc:
alias res_t 'xtset -t %h:%d "(%u:%g)" %e' # reset titlebar
res_t # reset title right now
alias precmd res_t
E isso funciona bem!
No entanto, quando executo screen, vejo que o título não é atualizado com o diretório atual. Como posso atualizar a tela do título do xterm?
Responder1
Você pode definir o título da janela do xterm adicionando isto ao seu .tcshrc
ou .cshrc
(substitua seu alias atual precmd
):
alias precmd 'echo -n "\033]0;${PWD}\a"'
Certifique-se de que este seja o único alias precmd em seus arquivos .cshrc
e .tcshrc
ao usá-lo. Este método exibe o diretório atual como o título da janela para mim tanto no xterm quanto no gnome-terminal, independentemente de uma sessão de tela GNU estar aberta.
Minha resposta foi baseada emesse.
Responder2
Isso deve funcionar em qualquer shell, mas é um hack sujo do .screenrc. Ele assume a linha do seu hardstatus para funcionar, o que pode ser inaceitável para alguns usuários. Mas funciona emterminal gnomeno Ubuntu mais recente, mesmo sem otermcapinfolinha abaixo. Algumas situações podem exigir ajustes mais profundos (não testei no PuTTY, por exemplo).
# enable xterm title setting; may not be necessary on some platforms
termcapinfo xterm*|rxvt* 'hs:ts=\E]2;:fs=\007:ds=\E]2;screen\007'
# dirty hack: put xterm title escapes in the hardstatus
# this example will yield "user@host || screen Win#:(windowtitle)
defhstatus "$USER@^EH || screen ^E:(^Et)"
# now turn it off so it doesn't print in the hardstatus line
hardstatus off
# and finally, use caption as a replacement hardstatus
caption always '%{= kG}[%{G}%H%{G}][%= %{= kw}%?%-Lw%?%{R}(%{W}%n*%f%t%?(%u)%?%{R})%{w}%?%+Lw%?%?%= %{G}][%{B}%C%a %M.%d%{G}]'
Encontrado emesse link.
Responder3
Eu entendo que você está usando o tcsh, então isso provavelmente não funcionará ... Caso alguém esteja procurando uma maneira de fazer isso.
Se seus sistemas (local/remoto) estiverem executando o bash, você poderá usar a variável de ambiente "PROMPT_COMMAND" para definir o título da janela. PROMPT_COMMAND é avaliado antes que um prompt seja exibido.
(no seu .bashrc):
export PROMPT_COMMAND='history -a && echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/$HOME/~}\007"'
Explicação:
'history -a'
Isso configura o shell para anexar ao arquivo de histórico sempre que um comando for concluído, em vez de quando todo o shell for concluído. (Isso não está relacionado a este exemplo).
'echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/$HOME/~}\007"'
Isso ecoa o código de escape "\033]0;" que define o título da janela com variáveis "user" @ "host" (removendo a correspondência mais longa da direita para o primeiro ".") e depois o diretório de trabalho (substituindo '~' por '$HOME').
O truque acima funcionará com qualquer aplicativo de terminal que suporte a alteração dinâmica do título da janela (o que iTerm, Terminal.app, urxvt, aterm, eTerm. xterm etc. fazem). Você também pode consultar a variável shell "TITLEBAR" na documentação do bash, é semelhante.
Responder4
Esta página(que foi vinculado acima) é a solução, no entantovocê precisa ter certeza de que a string do terminal da entrada está alinhada com a string de identificação do seu terminal(ou seja, como a variável TERM está definida), caso contrário não terá nenhum efeito.
Aqui está um resumo do que fiz, que funcionou para mim depois de anos sem investir tempo suficiente para descobrir isso:
Descubra qual é a string de ID do seu terminal executando:
echo $TERM
Provavelmente dirá algo como 'xterm' ou 'linux' ou 'rxvt'.
Agora adicione a seguinte linha ao seu arquivo .screenrc (ou crie um se não existir) localizado em seu homedir (~/.screenrc):
termcapinfo xterm 'hs:ts=\E]2;:fs=\007:ds=\E]2;screen\007'
A chave é ter certeza de que 'xterm' é a string de ID do seu TERM que você obteve acima. Você pode criar várias linhas para cada tipo de termo diferente que usar.
Por exemplo, eu tenho isso como meu arquivo .screenrc porque uso xterms e o tipo de termo 'linux' quando faço SShing em uma caixa:
termcapinfo linux 'hs:ts=\E]2;:fs=\007:ds=\E]2;screen\007'
termcapinfo xterm 'hs:ts=\E]2;:fs=\007:ds=\E]2;screen\007'
Espero que isso ajude e seja totalmente independente do shell. Lembre-se de que se você executar screen como root, precisará modificar ~root/.screenrc além de seu próprio arquivo ~/.screenrc como este.