プロセスが完了したときに非アクティブウィンドウでアラートをトリガーするようにtmuxを設定できますか?
例:長いビルドプロセスを開始します。ステータスを出力するたびにではなく、完了したときに通知を受け取りたいのですが。
この答えがまだ与えられていないことに驚いています:tmuxウィンドウ設定を使用できますvisual-bell
このため。 bell-action
次に、現在のウィンドウのみのベルを表示するか、非現在のウィンドウのみ(その他)のベルを表示するかを構成できます。個人的には、シェルによって生成されたノイズが表示されないため、2番目の方が好きです。また、通知が現在のウィンドウにある場合は、通知を気にしない可能性があります。
set-window-option -g visual-bell on
set-window-option -g bell-action other
プロセスがベルを生成すると、tmuxはベルを鳴らしているウィンドウのタイトルを強調表示し、「Bell inwindowX」通知を表示します。
次に、プロセスの最後にベルを鳴らします。例えば。:
make; echo -e '\a'
(または&&
||
の代わりに ;
それぞれ成功または失敗時にのみ呼び出し音を鳴らしたい場合)
私が知っている3つの解決策がありますが、どれも本当に理想的ではありません。これらのコマンドを~/.tmux.conf
に入れるか、Ctrl-B :
を介してTmuxコマンドとして直接実行することができます。
出力が変更されるたびに監視および警告します(コマンドが完了した後にのみ出力が変更されるように、出力を別の場所にリダイレクトできます)。
:set -g visual-activity on
:setw -g monitor-activity on
出力がしばらくの間(ここでは30秒)変化しなかったnotの場合は常に監視し、警告します。
:set -g visual-silence on
:setw -g monitor-silence 30
( 非推奨そしていつかより良いオプションに置き換えられます )出力に特定のパターンに一致する文字列が含まれている場合(および場合によってはmy-command; echo foobar
)のようにコマンドを実行します。
:set -g visual-content on
:setw -g monitor-content foo*bar
$ some-command; tmux display-message "Task 1 done"
。ただし、メッセージは:set -g display-time 4000
で定義された短い期間のみ表示されます。
visual-*
をoff
(デフォルト)のままにすると、グローバルアラートステータスメッセージを表示せずに、アラートが発生したウィンドウの名前のみが強調表示されます。
これらの各設定の詳細については、 tmuxのマニュアルページ を参照してください。
私はついに自分に合った解決策を見つけました。シェルにzsh
を使用します。これには、「フック関数」と呼ばれる機能があります-特定のアクションで実行されるシェル関数: http://zsh.sourceforge.net/Doc/Release/Functions .html 。
他のシェルにも同様の機能がある可能性があります。
私が使用するフック関数はprecmd
で、プロンプトが表示されるたびに実行されます。つまり、コマンドの実行が終了したときです。
私の.zshrc
:
precmd () {
echo -n -e "\a"
}
これにより、ベルがtmux
に送信され、コマンドが実行されていたウィンドウのみが強調表示されます。
すでにそのtmux
ウィンドウに焦点を合わせている場合、ベルはすぐにクリアされるため、これは何もしません。
このアプローチの利点は、allの視覚的アクティビティでトリガーされないことです。コマンドが完了したときにのみトリガーされます。
実行中のスクリプトを&& bash派生物でラップして、tmuxコマンドを呼び出して通知することができます。 &&を使用すると、スクリプトがエラーコード0で終了した場合にのみ通知が届きます。とにかく通知する場合は、;を使用してください。
スクリプトをラップするtmuxコマンドについては、それらの束を見てください。select-windowsplit-window-h'exec echo ... 'send-keysで十分です。
良い回避策として、次を使用できます: https://github.com/tcreech/tmux-notifications
あなたは単にします:$コマンド; tmux-通知
ステータスバーにNice通知が表示されます(有効になっている場合)
2つのオプションがあります:
set -g visual-activity on
setw -g monitor-activity on
tmux.confでそれらを設定しようとしましたか?