tmux ограничивает размеры окна наименьшим из каждого измерения во всех сеансах, к которым присоединено окно. Если бы он этого не делал, не было бы разумного способа отобразить всю область окна для всех подключенных клиентов.
Самое простое, что можно сделать, это отключить других клиентов от сеансов, когда вы присоединяете:
tmux attach -d
Кроме того, вы можете переместить любые другие клиенты в другой сеанс перед подключением к сеансу:
takeover() {
# create a temporary session that displays the "how to go back" message
tmp='takeover temp session'
if ! tmux has-session -t "$tmp"; then
tmux new-session -d -s "$tmp"
tmux set-option -t "$tmp" set-remain-on-exit on
tmux new-window -kt "$tmp":0 \
'echo "Use Prefix + L (i.e. ^B L) to return to session."'
fi
# switch any clients attached to the target session to the temp session
session="$1"
for client in $(tmux list-clients -t "$session" | cut -f 1 -d :); do
tmux switch-client -c "$client" -t "$tmp"
done
# attach to the target session
tmux attach -t "$session"
}
takeover 'original session' # or the session number if you do not name sessions
Экран снова уменьшится, если меньший клиент переключится на сеанс.
Существует также вариант, при котором вы только «захватываете» окно (связываете окно с новым сеансом, устанавливаете aggressive-resize
и переключаете любые другие сеансы, в которых это окно активно, на какое-то другое окно), но в общем случае сценарий сложнее case (и отличается от «exit», так как вы хотите отсоединить окно или убить сеанс, а не просто отсоединяться от сеанса).