Como configurar a 'tela' para modificar o título da janela e o título da janela xterm?

4

Gostaria de ter meu prompt $PS1 atual ( \u@\h:\w$(__git_ps1 "(%s)")\$ mais algumas cores) para ser usado também como título da janela screen (na linha dura) e como título da janela xterm. Como isso pode ser alcançado?

    
por Tobias Kienzler 09.10.2012 / 15:41

2 respostas

2

Uma solução incompleta seria modificar seu prompt $PS1 uma vez dentro de uma tela GNU. Comece modificando o arquivo RC do seu shell (ou seja, ~/.bashrc ). Procure uma declaração case que avalie $TERM :

case "$TERM" in
xterm*|rxvt*)
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
    ;;
*)
    ;;
esac

Adicione o seguinte anterior à captura de todos (ou seja, *) ):

screen)
    PS1='\e]0;\u@\h:\w\a\ek\u@\h:\w\e\\u@\h:\w$(__git_ps1 "(%s)")\$ '
    ;;

Isto irá modificar o seu hardstatus: \e]0;...\a

Isso modificará o título da sua janela: \ek...\e\

O hardstatus não será exibido, a menos que você o tenha configurado para isso. Por exemplo, você pode adicionar o seguinte ao seu .screenrc :

hardstatus alwayslastline

As opções complexas hardstatus string continuarão funcionando. Você pode substituir o seu hardstatus armazenado agora dinâmico pela janela atual usando %h :

hardstatus string '%{= kw}[ %h ] %=%{w}[ %{r}%l%{w} ]%{w}[%{y} %Y-%m-%d %C %A %{w}]%{w}'

Isso definirá a linha de hardstatus para o hardstatus armazenado entre dois colchetes no lado esquerdo da tela e a utilização da CPU para a direita, junto com a data e a hora.

Exemplo:

 [ username@host:~ ]                    [ 0.00 0.01 0.00 ][ 2012-11-27  4:13 PM ]

CAVEATS

  1. Isso provavelmente quebrará o deslocamento do seu cursor na recuperação do histórico do seu shell. (Atinge a seta para cima algumas vezes, depois tente editar essa linha. Você verá o que quero dizer.) Isso ocorre porque a maioria dos shells usa o comprimento para $PS1 , e isso incluirá os caracteres não imprimíveis adicionados ao $PS1 .

  2. Isso provavelmente quebrará a barra de título do xterm, "congelando-a" até o último conjunto de status antes de executar a tela GNU. O interessante é que aplicativos como o vim que atualizam a barra de título continuarão funcionando.

  3. Definir manualmente o título da tela (ou seja, C-A A ) continuará funcionando até que o prompt de comando seja atualizado.

por 27.11.2012 / 23:27
0

com o bash, para alterar dinamicamente o título da tela para $ YourVariable (variável de legenda screenrc% t) export PROMPT_COMMAND="echo -ne '3k$YourVariable3\'"

A possibilidade é usar também hardstatus (variável de legenda screenrc% h) se não estiver dentro da "tela", irá mudar o título da janela (emulador de terminal)% export PROMPT_COMMAND="echo -ne '3]0;$YourVariable%code%7'"

    
por 25.03.2016 / 00:02