tmuxで着信音をオフにしますが、フックの状態は維持します。

tmuxで着信音をオフにしますが、フックの状態は維持します。

カスタム着信音コマンドがあります。

set -g monitor-bell on
set -g bell-action current
set-hook -g alert-bell 'set -g status-bg "#901010" ; run-shell "sleep 0.1s" ; set -g status-bg colour8'

残念ながら、この方法ではビープ音は抑制されません。これを行うには、出発または出発する必要がmonitor-bellありますbell-action(参照:この回答)。しかし、私のalert-bellフックは決して実行されません。

私のフックを追加する前に、既存のフックを削除してみました。

set-hook -u alert-bell
set-hook -gu alert-bell

alert-bellビープ音を抑えながらtmux 2.7でフックを維持する方法は?

答え1

set -g visual-bell on

これにより、tmux端末にビープ音が鳴るのではなく、メッセージが点滅します(「現在のウィンドウでBing」)。このメッセージは、自分のフックを使用して変更したステータスバーをあいまいにすることができます。

マニュアルから:

ビジュアルベル[上|すべて|

オンの場合、ウィンドウのベルにメッセージが表示されます。 モニタリングベル通常、音が鳴る端末に渡されるのではなく、ウィンドウオプションが有効になります。 [...]

答え2

(1ミリ秒間空のメッセージを表示)を使用して、visual-bellフック内にすばやく隠してメッセージを削除しました。alert-belldisplay -d1

たとえば、背景色を10分の1秒間白に設定してステータスバーを点滅させるフックがあります(希望のスタイルに変更できます)。

set -g visual-bell on
set-hook -g alert-bell {
    display -d1
    set status-style bg=white
    run -b -d.1 -C {
        set -u status-style
    }
}

このsetコマンドは設定および設定解除されます。status-style 会議オプション(すべてのオプションよりも優先されます)グローバルこのオプションが設定されている限り)。これは、グローバルオプション()を使用してステータスバーに適用したすべてのカスタマイズがこのフックset -gの影響を受けないことを意味します。

答え3

前の例を繰り返しましたが、結果は次のとおりです。

set -g monitor-bell on
set -g visual-bell on
set-hook -g alert-bell {
  display-message -d1
  setw @bell_flag 1
  run -b -d.5 -C {
    setw @bell_flag 0
  }
}
set-hook -g pane-focus-in {
  setw @bell_flag 0
}

次に、組み込み変数window_bell_flagの代わりに独自の変数@bell_flagを使用します。

関連情報