コマンドの終了状態に応じて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
- ホームディレクトリからファイルを作成して
.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
- あなたのに
.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
ステータステキストを作成する他のツールがある場合は、そのツールはステータスを置き換える代わりに追加できる必要があることです。
ところで、とても興味深いアイデアです。私はこれを考えたことがありませんが、確かに私の設定に保管します。