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를 사용합니다.

관련 정보