tmux 구성의 변수 대체 - "메시지 표시" 및 "레이아웃 선택"에 대한 결과가 다름

tmux 구성의 변수 대체 - "메시지 표시" 및 "레이아웃 선택"에 대한 결과가 다름

tmuxinator를 사용하여 하나의 창에 7개의 창 사용자 정의 레이아웃이 있는 tmux 세션을 시작합니다.

tmuxinator 세션 구성에는 레이아웃이 있는 채널이 있습니다.

layout: 3db3,233x59,0,0[233x9,0,0{77x9,0,0,3,77x9,78,0,5,77x9,156,0,6},233x9,0,10{77x9,0,10,7,77x9,78,10,8,77x9,156,10,9},233x39,0,20,10]

모든 것이 정상입니다. tmux가 올바른 창 크기로 열립니다.

또한 tmux.conf에는 창 크기 조정에 반응하는 후크가 있습니다.

set-hook -g window-resized 'select-layout -t s01:4 "3db3,233x59,0,0[233x9,0,0{77x9,0,0,3,77x9,78,0,5,77x9,156,0,6},233x9,0,10{77x9,0,10,7,77x9,78,10,8,77x9,156,10,9},233x39,0,20,10]"'

창 크기를 줄이고 다시 원래 크기로 늘리면 모든 창이 원래 크기로 돌아갑니다. 괜찮습니다.

창 크기를 조정하는 동안 tmux는 모든 창의 크기를 비례적으로 조정합니다...상단 6개 창의 높이를 유지하고 싶습니다. 9, 아래쪽 창 높이만 줄여야 합니다.

또한 내 터미널 에뮬레이터에는 화면 크기가 233x59에서 236x62로 확장되는 전체 화면 모드가 있습니다... 전체 화면 모드로 들어갈 때 위쪽 6개 창의 높이를 9로 유지하고 싶습니다. lower 창의 높이를 늘려야 합니다.

아이디어는 후크의 두 부분을 수정하는 것입니다.

"3db3,233x59,0,0..." -> 현재 화면 높이를 배치하려면 59로 변경하세요.

"...233x39,0,20,10]" -> 39로 변경하고 현재 화면 높이(9+1+9+1)에서 20을 뺍니다.

예를 들어 첫 번째 후크를 보면 "display" 명령은 예상대로 $LAYOUT_STR 변수를 숫자와 함께 표시합니다.

set-hook -g window-resized 'WINDOW_HEIGHT="#{window_height}"; PANE_HIEGHT="#{e|-:$WINDOW_HEIGHT,20}"; LAYOUT_STR="3db3,233x$WINDOW_HEIGHT,0,0[233x9,0,0{77x9,0,0,3,77x9,78,0,5,77x9,156,0,6},233x9,0,10{77x9,0,10,7,77x9,78,10,8,77x9,156,10,9},233x$PANE_HEIGHT,0,20,10]"; display $LAYOUT_STR'

산출:

3db3,233x59,0,0[233x9,0,0{77x9,0,0,3,77x9,78,0,5,77x9,156,0,6},233x9,0,10{77x9,0,10,7,77x9,78,10,8,77x9,156,10,9},233x39,0,20,10]

이제 선택 레이아웃이 포함된 후크와 그 출력을 살펴보세요.

set-hook -g window-resized 'WINDOW_HEIGHT="#{window_height}"; PANE_HIEGHT="#{e|-:$WINDOW_HEIGHT,20}"; LAYOUT_STR="3db3,233x$WINDOW_HEIGHT,0,0[233x9,0,0{77x9,0,0,3,77x9,78,0,5,77x9,156,0,6},233x9,0,10{77x9,0,10,7,77x9,78,10,8,77x9,156,10,9},233x$PANE_HEIGHT,0,20,10]"; select-layout -t s01:4 $LAYOUT_STR'

산출:

Invalid layout: 3db3,233x#{window_height},0,0[233x9,0,0{77x9,0,0,3,77x9,78,0,5,77x9,156,0,6},233x9,0,10{77x9,0,10,7,77x9,78,10,8,77x9,156,10,9},233x#{e|-:#{window_height},20},0,20,10])

어떻게 고치나요?

답변1

명령에서 변수 대체를 올바르게 수행하는 방법을 찾았습니다.... select-layout -t s01:4 $LAYOUT_STR

올바른 방법은 "run-shell" 명령을 사용하는 것입니다.

이것은 작동합니다:... run-shell -b "exec tmux select-layout -t s01:4 $LAYOUT_STR &"

관련 정보