プロセスの実行中に端末ウィンドウのタイトルを更新できますか?

プロセスの実行中に端末ウィンドウのタイトルを更新できますか?

端末で自分自身のための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' "$*"
}

おすすめ記事