Я пытаюсь установить для себя в терминале небольшой таймер-помидор/обратный отсчет.
Этот комментарийв Superuser есть удобная маленькая функция оболочки, которая будет работать как таймер обратного отсчета, который printf
выводит оставшееся время на STDOUT (круто). Я подумал, что было бы еще лучше, если бы я мог видеть обратный отсчет в заголовке вкладки эмулятора терминала, чтобы я мог следить за оставшимся временем без необходимости переключаться между вкладками.
Кажетсяпеременную окружения PROMPT_COMMAND
можно использовать для обновления заголовка окна, но поскольку его содержимое выполняетсятолько перед тем, как Bash отобразит приглашение, нет никакой возможности обновлять заголовок в реальном времени во время выполнения процесса (насколько мне известно).
Можно ли это как-то сделать?
(Мне пришло в голову, что эту проблему можно решить проще, разделив новую панель в tmux, но у меня маленький экран, и я бы хотел сэкономить как можно больше места на экране.)
решение1
Терминальные коды могут быть тем, что вам нужно, см.http://wiki.bash-hackers.org/scripting/terminalcodesиhttps://en.wikipedia.org/wiki/ANSI_escape_codeдля получения подробной информации (илиhttp://invisible-island.net/xterm/ctlseqs/ctlseqs.htmlдля довольно технического описания кодов, относящихся к xterm).
Вот пример того, как задать заголовок:
set_title() {
printf '\033]0;%s\007' "$*"
}
решение2
Просто выведите соответствующие коды ANSI на stdout или stderr.
Для меня работает следующее xterm
:
for i in {10..1} ; do printf '\e]0;'$i'\a' ; sleep 1 ; done &
Некоторые терминалы также могут предоставлять API для программного изменения своих заголовков.