명령 종료 상태에 따라 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
상태 텍스트를 작성하는 다른 도구가 있는 경우 해당 도구는 상태를 대체하는 대신 추가할 수 있어야 한다는 것입니다.
그런데, 매우 흥미로운 아이디어입니다. 저는 이것을 생각해 본 적이 없지만 확실히 제 설정에 보관할 것입니다.