端末で自分自身のためのpomodoro/カウントダウンタイマーを設定しようとしています。
このコメントSuperuserは、STDOUTに残った時間であるカウントダウンタイマーとして機能する便利な小さなシェル機能を提供しますprintf
(素晴らしいです)。ターミナルエミュレータタブのヘッダーにリアルタイムのカウントダウンが表示され、タップを行ったり来たりすることなく残り時間を監視できればと思います。
それが現れる環境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.htmlxtermコードのやや技術的な説明です。
タイトルの設定方法の例は次のとおりです。
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を提供することもできます。