tmuxで終了コードを監視する

tmuxで終了コードを監視する

コマンドの終了状態に応じてtmuxウィンドウのプロパティを更新する方法はありますか?アクティビティの監視と同様に、コマンドが終了したときにタイトルの色が変わるようにしたい(成功は緑色、失敗は赤色)。 PROMPT_COMMAND(〜/ .bashrcにあります)を使用して一緒にハッキングしましたが、完全に満足していません。アクティビティモニタリングは正しく機能せず(つまり、アクティビティモニタリングが無効になっていないと赤/緑を見ることができません)、他のtmuxモニタリングのようにデフォルト値に戻るのではなく、ウィンドウにアクセスしても色の変更は続行されます。

function set_color_from_return_code {
  local bg_color=$([ $? == 0 ] && echo "green" || echo "red")
  tmux set-window-option -t${TMUX_PANE} window-status-bg $bg_color # &> /dev/null
}
PROMPT_COMMAND="set_color_from_return_code"

編集:特に私はtmuxをbyobuのバックエンドとして使用しているので、byobu関連のソリューションが私にとってうまく機能するので、byobuタグを追加しました。

答え1

  1. ホームディレクトリからファイルを作成して.exit-monitor.sh実行しますchmod +x .exit-monitor.sh
#!/bin/bash

if (( $1 == 0 )); then
    tmux set-window-option status-left "#[fg=colour0]#[bg=colour2]$1"
else
    tmux set-window-option status-left "#[fg=colour0]#[bg=colour1]$1"
fi
  1. あなたのに.bashrc次を加えなさい。
if echo "$PROMPT_COMMAND" | /bin/grep "exit-monitor" &>/dev/null; then
    export PROMPT_COMMAND=${PROMPT_COMMAND/~\/.exit-monitor.sh \$?;/}
fi

if ps -aux | grep tmux | grep -v grep &>/dev/null; then
    export PROMPT_COMMAND="~/.exit-monitor.sh \$?; $PROMPT_COMMAND"
fi

PROMPT_COMMAND がすでに存在する場合は、スクリプトを削除して変数の先頭に再度追加します。ただし、tmuxが実行されている場合にのみ該当します。それ以外の場合は、PROMPT_COMMANDにスクリプトを追加し続け、tmuxが実行されていない場合は迷惑なエラーメッセージが表示されます。

tmuxステータスバーの左上隅にある小さな四角形に、終了ステータス番号と一緒に緑色または赤色が表示されます。必要に応じてFAIL / SUCCESSを使用してテキストを追加することもできます。

tmux set-window-option status-left "#[fg=colour0]#[bg=colour1]FAIL"

または同様です。もちろんを使って場所を変更することもできますstatus-right。重要なのは、これが機能するための.exit-monitor.sh最初の項目でなければならず、PROMPT_COMMANDステータステキストを作成する他のツールがある場合は、そのツールはステータスを置き換える代わりに追加できる必要があることです。

ところで、とても興味深いアイデアです。私はこれを考えたことがありませんが、確かに私の設定に保管します。

関連情報