Mostrando o nome da sessão da tela GNU e o título da janela no prompt do shell

10

Existe uma maneira de apresentar o nome da sessão e o título da janela do GNU Screen no prompt do shell (digamos, o prompt do Bash definido por PS1 )?

    
por brandizzi 19.09.2011 / 02:18

3 respostas

13

A tela fornece algumas variáveis de ambiente (de screen (1) manpage):

STY              Alternate socket name.
WINDOW           Window number of a window (at creation time).

O "tempo de criação" significa que se você renumerar uma janela (usando o comando number da tela), o shell não será informado sobre a alteração e $ WINDOW ainda será o mesmo que o primeiro número da janela. p>

Você poderia usar algo como:

PS1='\u@\h(${STY}:${WINDOW}):\w$ '
    
por 19.09.2011 / 03:00
2

Eu sempre uso nomes de sessão de tela precisos. Então eu posso adicionar a tela STY env var, com o ID numérico separado (obrigado dimo414), para PS1. Eu não decorei com chaves nem nada, porque nem sempre estou em uma sessão. Exemplo simples:

PS1='\u@\h ${STY#[0-9]*.} \w$ '
    
por 16.02.2018 / 19:48
1

Eu uso isso:

('echo ${STY} | sed -e 's/[0-9]*\.//g'':${WINDOW}:'screen -Q title')

remove o número do processo de ${STY}
inclui o número da janela (como mencionado "no momento da criação")
inclui o título da janela (conforme retornado de screen -Q title )

notas:

  • na primeira vez que for executado, screen -Q aguardará um retorno de tecla
  • eu defino o título da janela com C-a C-A e depois forneço meu .profile para atualizar o prompt
por 01.07.2016 / 13:43