como incluir o nome da sessão na tela no hardstatus?

17

Eu uso sessões de tela diferentes para diferentes projetos. Tela inicial como screen -S project1 . Agora, gostaria de mencionar 'project1' na linha de hardstatus.

O nome da sessão pode ser obtido da variável de ambiente STY: STY=13539.project1 .
Mas como colocar isso na tela? Eu tentei o comando backtick e% 'no hardstatus, mas não consigo acertar.

O que eu fiz:

.screenrc:

hardstatus string '%H:%''
backtick 0 30 30 echo $STY

sem sorte, vazio% '.

backtick 0 30 30 sessionname

ainda sem sorte, nome da sessão: não encontrado

    
por fungusakafungus 18.11.2010 / 18:11

2 respostas

18

Você pode incluir essa string (com informações adicionais, se desejar) no seu $PS1 :

\[\e]0;$STY
hardstatus string '%H:%h'
7

dentro de aspas simples para atrasar a avaliação da variável. Em seguida, adicione isso ao seu ~/.screenrc :

hardstatus string '%H:%''
backtick 0 30 30 sh -c 'screen -ls | grep --color=no -o "$PPID[^[:space:]]*"'

Infelizmente, screen não define $STY no ambiente dos comandos que gera para o recurso backtick .

Outra opção, em vez da acima:

    screen 
    screen $SHELL -c 'screen -X caption always "$STY"' 

A vantagem deste é que ele segue as alterações feitas usando o comando sessionname . A primeira opção não faz.

Editar:

De aqui :

Since $STY is not set yet when screen sources .screenrc, you can use this trick in your .screenrc:

\[\e]0;$STY
hardstatus string '%H:%h'
7

I.e. send a screen command to the first window.

    
por 19.11.2010 / 00:01
3

Para mim, isso funciona facilmente com a inserção de %S no hardstatus.

MWE (.screenrc):

hardstatus on
hardstatus alwayslastline
hardstatus string "%S"

No entanto, isso exibe o nome da sessão sem o ID (como ${STY#*.} ); no seu exemplo: project1 .

(Mesma resposta a outras perguntas aqui e aqui para completar).

    
por 10.08.2015 / 15:26

Tags