Defina o título da janela dinâmica com base na entrada do comando [duplicado]

23

Estou procurando uma maneira de definir dinamicamente o título da janela do urxvt com base na entrada do comando.

Vamos dar um exemplo.

Se eu executar mplayer http://66.197.229.245:8082 em uma janela do urxvt, gostaria que o título dessa janela fosse definido como mplayer http://66.197.229.245:8082 ou até melhor Terminal | mplayer .

Ou se eu executar journalctl -b , quero que o título da janela seja definido como Terminal | journalctl -b ou melhor Terminal | journalctl .

Isso é possível?

    
por orschiro 06.12.2013 / 12:50

1 resposta

28

Supondo que você esteja usando o Bash como seu shell, você pode definir essa variável.

PROMPT_COMMAND='echo -ne "3]0;Terminal | mplayer
 $ trap 'echo -ne "3]0;$BASH_COMMAND
function settitle () {
    export PREV_COMMAND=${PREV_COMMAND}${@}
    echo -ne "3]0;${PREV_COMMAND}
PROMPT_COMMAND='echo -ne "3]0;Terminal | mplayer
 $ trap 'echo -ne "3]0;$BASH_COMMAND
function settitle () {
    export PREV_COMMAND=${PREV_COMMAND}${@}
    echo -ne "3]0;${PREV_COMMAND}%pre%7"
    export PREV_COMMAND=${PREV_COMMAND}' | '
}

export PROMPT_COMMAND=${PROMPT_COMMAND}';export PREV_COMMAND=""'

trap 'settitle "$BASH_COMMAND"' DEBUG
7"' DEBUG
7"'
7" export PREV_COMMAND=${PREV_COMMAND}' | ' } export PROMPT_COMMAND=${PROMPT_COMMAND}';export PREV_COMMAND=""' trap 'settitle "$BASH_COMMAND"' DEBUG
7"' DEBUG
7"'

Exemplos

Incluindoocomandoanteriornotítulo?

Sevocêquiserumabarradetítulomaiselaborada,podeusaressemétodoparadefinirdinamicamenteocomandoatualmenteemexecuçãonabarradetítulo.

%pre%

Exemplo

Oquevocêestáprocurando

Paraobteroquevocêdeseja,vocêprecisaráfazeralgumtrabalhoparaanalisarapenasonomedoexecutável,porexemplo.Entãovocêteráquetomaralgumasdecisõessobrequalpartedocomandovocêquer.Vocêpoderiausar..|awk'{print$1}'paraobteronomeapenasdocomando.

Tornandopermanente

Sevocêquisertornaressecomportamentopadrãopormeiodosarquivos/etc/bashrcou$HOME/.bashrc,provavelmenteprecisaráseguir neste SO Q & A intitulado: Bash - Atualiza o título do terminal executando um segundo comando .

A resposta de Simon é a seguinte:

%pre%

Redirecionamento de saída

Como referenciado neste SO Q & A intitulado: Por que minha armadilha DEBUG é executada (com redirecionamento de conteúdo) em {echo foo; barra de eco; } > arquivo? há uma resposta por @Charles Duffy, que recomenda redirecionar a saída para STDERR ou até melhor /dev/tty . Sua resposta tem boas orientações sobre esses dois métodos.

Referências

por 06.12.2013 / 14:19