título da janela PS1 sob PuTTY com tela GNU

4

Atualmente, estou definindo meu título do PS1 com a concatenação de três variáveis em meu .bashrc de tal maneira:

export TERMSERVER='who am i | awk '{print $NF}' | tr -d ')''(''
if [ -n "$TERMSERVER" ] ; then
  PS1_TITLE='\h ($MACHTYPE) - $SHELL[$SHLVL] <-- $TERMSERVER'
else
  PS1_TITLE='\h ($MACHTYPE) - $SHELL[$SHLVL]'
fi
export PS1="$PS1_TITLE\n$PS1_LINE\n$PS1_PROMPT"

Eu também abro vários PuTTY e lanço uma tela GNU diferente em cada PuTTY, cada um com um nome de sessão, por exemplo:

screen -T screen -U -S session-1 (in PuTTY #1)
screen -T screen -U -S session-2 (in PuTTY #1)

Eu adoraria ver session-1 ou session-2 aparecer no meu título da janela do PuTTY, mas não consigo encontrar uma configuração correta de .screenrc < em> hardstring trabalhando. Eu também não consigo encontrar um método para mapear corretamente o conteúdo de "/ var / run / screen / S-user" para a minha sessão atual. Eu tentei usar o $ {PPID}, mas ele falhará se estiver em um subshell.

Trecho do meu atual .screenrc:

# Every x seconds, requery window title                     
backtick 1 600 600 id -un                                   

# The window's title                                        
hardstatus ignore        
# *** this is the current window title I use since I can't get what I want.
hardstatus string "%1'@%H"                               

caption always                                              
caption string "%{= KW}%-w%{= wk}%50>%n %t%{-}%+w%< %=%H %l"

Existe algum método para obter o que eu quero?

    
por BlakBat 11.09.2012 / 12:47

1 resposta

2

Se você quiser que screen imprima seu nome de sessão no título da janela do PuTTY, adicione essa função ao seu .bashrc :

screen ()
{
    sessionname=$(echo $@ | fgrep -- '-S ' | sed 's/.*-S \([^ ]\+\).*//');
    echo -ne "3]0;${sessionname:-Putty}
screen ()
{
    sessionname=$(echo $@ | fgrep -- '-S ' | sed 's/.*-S \([^ ]\+\).*//');
    echo -ne "3]0;${sessionname:-Putty}%pre%7";
    command screen $@;
    echo -ne "3]0;Putty%pre%7"
}
7"; command screen $@; echo -ne "3]0;Putty%pre%7" }

Corra a tela como de costume.

A função verifica uma opção chamada -S, extrai o nome da sessão, define-a com sequências de escape de terminal (ou define Putty se o nome da sessão estiver vazio) e executa o screen binário. Quando o binário screen sai, o título da janela do PuTTY é reconfigurado para o Putty.

Visto que está acreditando :-):

Esta é uma sessão Putty pronta para executar a tela.

Dentrodeumasessãodetela.ObserveotítulodajaneladoPuTTY.

Sessão de tela finalizada. O título é redefinido.

    
por 05.11.2012 / 17:20