Estou tentando definir um pequeno cronômetro pomodoro/contagem regressiva para mim no terminal.
Este comentárioon Superuser oferece uma pequena função de shell útil que atuará como um cronômetro de contagem regressiva, que printf
é o tempo restante para STDOUT (incrível). Eu estava pensando que seria ainda melhor se pudesse ver a contagem regressiva ao vivo no título da guia do emulador de terminal, para poder monitorar meu tempo restante sem ter que alternar entre as guias.
Parecea PROMPT_COMMAND
variável de ambiente pode ser usada para atualizar o título da janela, mas como seu conteúdo é executadoapenas pouco antes do Bash exibir um prompt, não há como atualizar o título ao vivo enquanto o processo está em execução (que eu saiba).
Existe alguma maneira de fazer isso?
(Ocorreu-me que poderia resolver isso mais facilmente dividindo um novo painel no tmux, mas estou em uma tela pequena e gostaria de poder salvar todo o espaço da tela possível.)
Responder1
Os códigos dos terminais podem ser o que você precisa, consultehttp://wiki.bash-hackers.org/scripting/terminalcodesehttps://en.wikipedia.org/wiki/ANSI_escape_codepara detalhes (ouhttp://invisible-island.net/xterm/ctlseqs/ctlseqs.htmlpara uma descrição bastante técnica dos códigos relacionados ao xterm).
Aqui está um exemplo de como definir o título:
set_title() {
printf '\033]0;%s\007' "$*"
}
Responder2
Basta enviar 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.