Os títulos da janela do terminal podem ser atualizados enquanto um processo está em execução?

3

Estou tentando definir um pequeno temporizador pomodoro / contagem regressiva para mim no terminal.

Este comentário no Superusuário oferece uma pequena função de shell que funcionará como um temporizador de contagem regressiva, que printf s o tempo restante para STDOUT (impressionante). Eu estava pensando que seria ainda melhor se eu pudesse ver a contagem regressiva ao vivo no título daquela guia do emulador de terminal, para que eu pudesse monitorar meu tempo restante sem ter que alternar entre as guias.

Aparece a variável de ambiente PROMPT_COMMAND pode ser usada para atualizar o título da janela , mas como o seu conteúdo é executado apenas pouco antes de o Bash exibir um prompt , não há maneira que ele pode viver atualizar o título enquanto o processo está em execução (que eu saiba).

Existe alguma maneira de isso ser feito?

(Ocorreu-me que eu poderia resolver isso mais facilmente dividindo um novo painel no tmux, mas eu estou em uma tela pequena, e gostaria de poder salvar todo o espaço da tela que posso. )

    
por Ryan Lue 22.06.2016 / 11:03

2 respostas

3

Os códigos de terminal podem ser o que você precisa, consulte link e link para detalhes (ou link para uma descrição técnica dos códigos relativos ao xterm).

Aqui um exemplo de como definir o título:

set_title() {
  printf '3]0;%s
set_title() {
  printf '3]0;%s%pre%7' "$*"
}
7' "$*" }
    
por 22.06.2016 / 11:11
2

Apenas imprima os códigos ANSI relevantes para stdout ou stderr.

O seguinte funciona para mim em um xterm :

for i in {10..1} ; do printf '\e]0;'$i'\a' ; sleep 1 ; done &

Alguns terminais também podem fornecer API para alterar seus títulos programaticamente.

    
por 22.06.2016 / 11:11

Tags