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

11

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

brandizzi
fonte

Respostas:

14

A tela fornece algumas variáveis ​​de ambiente (da screen(1) página de manual):

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

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

Você pode usar algo como:

PS1='\u@\h(${STY}:${WINDOW}):\w$ '
Arcege
fonte
1
Perfeito! Era isso que eu estava procurando. BTW, existe uma maneira de obter o título da janela, em vez do número da janela?
Brandizzi
Não que eu saiba, não há API para a tela e, quando você emite comandos, não há saída - ela vai para a janela atual da tela. Por exemplo screen -xr 2466 -X windows.
Arcege 19/09/11
Embora provavelmente caia no caso de renumeração, existe uma maneira de acessar o nome da janela se ela estiver definida Ctrl-a A?
Thalis K.Jul
1
Se GNU screenfoi compilado com a -Qopção (query), então você pode executar alguns comandos, como titlee windowse ter a visualização de dados para stdout, no entanto, sem uma nova linha final.
Arcege 6/07/15
3

Eu sempre uso nomes de sessão de tela precisos. Então eu posso adicionar o var STY env da tela, com o ID numérico retirado (obrigado dimo414), ao PS1. Eu não decorei com aparelho encaracolado ou qualquer coisa, porque nem sempre estou em uma sessão. Exemplo simples:

PS1='\u@\h ${STY#[0-9]*.} \w$ '
humor
fonte
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 (como retornado screen -Q title)

notas:

  • pela primeira vez, screen -Qaguarda o pressionamento de tecla de retorno
  • eu defino o título da janela com o CA CA e, em seguida, forneça meu .profile para atualizar o prompt
gotjosh
fonte
5
O uso ${STY#[0-9]*.}evita a necessidade de canalizar sed.
precisa saber é o seguinte