mirror of
https://github.com/tmux-plugins/tmux-resurrect.git
synced 2025-09-09 15:07:17 +00:00
Preserving layout of zoomed windows across restores
The problem is that tmux list-window shows only the current pane layout if a pane is maximized. This is a bug in tmux. In order to avoid this bug we unzoom the window when saving and zoom in again after saving. This implies that the Z flag is no longer set in list-windows, and so it can't be used when restoring. Instead we use the Z flag of the panes (which still have it) to restore the zoom.
This commit is contained in:

committed by
Bruno Sutic

parent
3ba092459a
commit
ad52ade4bf
@ -100,8 +100,16 @@ save_shell_history() {
|
||||
dump_panes() {
|
||||
local full_command
|
||||
local d=$'\t' # delimiter
|
||||
local last_resized="none-resized"
|
||||
dump_panes_raw |
|
||||
while IFS=$'\t' read line_type session_name window_number window_name window_active window_flags pane_index dir pane_active pane_command pane_pid; do
|
||||
# check if current pane is part of a maximized window and if we haven't maximized it already
|
||||
if [[ "${window_flags}" == *Z* ]] && [[ "${last_resized}" != ${window_number} ]]; then
|
||||
# unmaximize the pane
|
||||
tmux resize-pane -Z -t "${session_name}:${window_number}"
|
||||
# set last resized window to current number in order to avoid maximizing again
|
||||
last_resized=${window_number}
|
||||
fi
|
||||
full_command="$(pane_full_command $pane_pid)"
|
||||
echo "${line_type}${d}${session_name}${d}${window_number}${d}${window_name}${d}${window_active}${d}${window_flags}${d}${pane_index}${d}${dir}${d}${pane_active}${d}${pane_command}${d}:${full_command}"
|
||||
done
|
||||
@ -132,6 +140,7 @@ save_all() {
|
||||
if save_bash_history_option_on; then
|
||||
dump_bash_history
|
||||
fi
|
||||
restore_zoomed_windows
|
||||
}
|
||||
|
||||
main() {
|
||||
|
Reference in New Issue
Block a user