Вероятно, есть более простой способ, но вы можете расположить панели вручную в каждой из двух конфигураций, отмечая каждый макет в переменной, например ::
.
layout1=$(tmux list-windows -F '#{window_layout}')
Содержит строку примерно так:
5f2f,80x23,0,0[80x11,0,0,0,80x11,0,12{39x11,0,12,1,40x11,40,12,2}]
, который не следует никоим образом изменять, поскольку первое число является контрольной суммой остальной части строки.
Когда у вас есть две строки, вы можете установить привязку для установки этого макета, используя select-layout
, или передав команду из оболочки, где у вас есть переменные:
tmux select-layout "$layout1"
Возможно, вам будет проще написать небольшой вспомогательный скрипт, скажем mtmux
, для переключения между макетами:
#!/usr/bin/bash
# https://stackoverflow.com/q/56343223/5008284
# toggle between 2 layouts, previously saved
layout1='5f2f,80x23,0,0[80x11,0,0,0,80x11,0,12{39x11,0,12,1,40x11,40,12,2}]'
layout2='093c,80x23,0,0{39x23,0,0[39x11,0,0,0,39x11,0,12,4],40x23,40,0,3}'
layout="$(tmux list-windows -F '#{window_layout}')"
case "$layout" in
*80x11*) new=$layout2 ;;
*) new=$layout1 ;;
esac
tmux select-layout "$new"
tmux display-panes
exit 0
и иметь привязку, скажем, control-L, для запуска этой оболочки:
bind-key -n C-l run-shell 'mtmux'