@@ -126,31 +126,29 @@ pane_creation_command() {
126
126
new_window () {
127
127
local session_name=" $1 "
128
128
local window_number=" $2 "
129
- local window_name=" $3 "
130
- local dir=" $4 "
131
- local pane_index=" $5 "
129
+ local dir=" $3 "
130
+ local pane_index=" $4 "
132
131
local pane_id=" ${session_name} :${window_number} .${pane_index} "
133
132
dir=" ${dir/# \~ / $HOME } "
134
133
if is_restoring_pane_contents && pane_contents_file_exists " $pane_id " ; then
135
134
local pane_creation_command=" $( pane_creation_command " $session_name " " $window_number " " $pane_index " ) "
136
- tmux new-window -d -t " ${session_name} :${window_number} " -n " $window_name " - c " $dir " " $pane_creation_command "
135
+ tmux new-window -d -t " ${session_name} :${window_number} " -c " $dir " " $pane_creation_command "
137
136
else
138
- tmux new-window -d -t " ${session_name} :${window_number} " -n " $window_name " - c " $dir "
137
+ tmux new-window -d -t " ${session_name} :${window_number} " -c " $dir "
139
138
fi
140
139
}
141
140
142
141
new_session () {
143
142
local session_name=" $1 "
144
143
local window_number=" $2 "
145
- local window_name=" $3 "
146
- local dir=" $4 "
147
- local pane_index=" $5 "
144
+ local dir=" $3 "
145
+ local pane_index=" $4 "
148
146
local pane_id=" ${session_name} :${window_number} .${pane_index} "
149
147
if is_restoring_pane_contents && pane_contents_file_exists " $pane_id " ; then
150
148
local pane_creation_command=" $( pane_creation_command " $session_name " " $window_number " " $pane_index " ) "
151
- TMUX=" " tmux -S " $( tmux_socket) " new-session -d -s " $session_name " -n " $window_name " - c " $dir " " $pane_creation_command "
149
+ TMUX=" " tmux -S " $( tmux_socket) " new-session -d -s " $session_name " -c " $dir " " $pane_creation_command "
152
150
else
153
- TMUX=" " tmux -S " $( tmux_socket) " new-session -d -s " $session_name " -n " $window_name " - c " $dir "
151
+ TMUX=" " tmux -S " $( tmux_socket) " new-session -d -s " $session_name " -c " $dir "
154
152
fi
155
153
# change first window number if necessary
156
154
local created_window_num=" $( first_window_num) "
@@ -162,50 +160,45 @@ new_session() {
162
160
new_pane () {
163
161
local session_name=" $1 "
164
162
local window_number=" $2 "
165
- local window_name=" $3 "
166
- local dir=" $4 "
167
- local pane_index=" $5 "
163
+ local dir=" $3 "
164
+ local pane_index=" $4 "
168
165
local pane_id=" ${session_name} :${window_number} .${pane_index} "
169
166
if is_restoring_pane_contents && pane_contents_file_exists " $pane_id " ; then
170
167
local pane_creation_command=" $( pane_creation_command " $session_name " " $window_number " " $pane_index " ) "
171
168
tmux split-window -t " ${session_name} :${window_number} " -c " $dir " " $pane_creation_command "
172
169
else
173
170
tmux split-window -t " ${session_name} :${window_number} " -c " $dir "
174
171
fi
175
- tmux rename-window -t " ${session_name} :${window_number} " " $window_name "
176
172
# minimize window so more panes can fit
177
173
tmux resize-pane -t " ${session_name} :${window_number} " -U " 999"
178
174
}
179
175
180
176
restore_pane () {
181
177
local pane=" $1 "
182
- while IFS=$d read line_type session_name window_number window_name window_active window_flags pane_index dir pane_active pane_command pane_full_command; do
178
+ while IFS=$d read line_type session_name window_number window_active window_flags pane_index dir pane_active pane_command pane_full_command; do
183
179
dir=" $( remove_first_char " $dir " ) "
184
- window_name=" $( remove_first_char " $window_name " ) "
185
180
pane_full_command=" $( remove_first_char " $pane_full_command " ) "
186
181
if [ " $session_name " == " 0" ]; then
187
182
restored_session_0_true
188
183
fi
189
184
if pane_exists " $session_name " " $window_number " " $pane_index " ; then
190
- tmux rename-window -t " ${session_name} :${window_number} " " $window_name "
191
185
if is_restoring_from_scratch; then
192
186
# overwrite the pane
193
187
# happens only for the first pane if it's the only registered pane for the whole tmux server
194
188
local pane_id=" $( tmux display-message -p -F " #{pane_id}" -t " $session_name :$window_number " ) "
195
- new_pane " $session_name " " $window_number " " $window_name " " $ dir" " $pane_index "
189
+ new_pane " $session_name " " $window_number " " $dir " " $pane_index "
196
190
tmux kill-pane -t " $pane_id "
197
191
else
198
192
# Pane exists, no need to create it!
199
193
# Pane existence is registered. Later, its process also won't be restored.
200
194
register_existing_pane " $session_name " " $window_number " " $pane_index "
201
195
fi
202
196
elif window_exists " $session_name " " $window_number " ; then
203
- tmux rename-window -t " ${session_name} :${window_number} " " $window_name "
204
- new_pane " $session_name " " $window_number " " $window_name " " $dir " " $pane_index "
197
+ new_pane " $session_name " " $window_number " " $dir " " $pane_index "
205
198
elif session_exists " $session_name " ; then
206
- new_window " $session_name " " $window_number " " $window_name " " $ dir" " $pane_index "
199
+ new_window " $session_name " " $window_number " " $dir " " $pane_index "
207
200
else
208
- new_session " $session_name " " $window_number " " $window_name " " $ dir" " $pane_index "
201
+ new_session " $session_name " " $window_number " " $dir " " $pane_index "
209
202
fi
210
203
done < <( echo " $pane " )
211
204
}
@@ -292,15 +285,23 @@ handle_session_0() {
292
285
fi
293
286
}
294
287
295
- restore_pane_layout_for_each_window () {
288
+ restore_window_properties () {
289
+ local window_name
296
290
\g rep ' ^window' $( last_resurrect_file) |
297
- while IFS=$d read line_type session_name window_number window_active window_flags window_layout; do
291
+ while IFS=$d read line_type session_name window_number window_name window_active window_flags window_layout automatic_rename; do
292
+ window_name=" $( remove_first_char " $window_name " ) "
293
+ tmux rename-window -t " ${session_name} :${window_number} " " $window_name "
298
294
tmux select-layout -t " ${session_name} :${window_number} " " $window_layout "
295
+ if [ " ${automatic_rename} " = " :" ]; then
296
+ tmux set-option -u -t " ${session_name} :${window_number} " automatic-rename
297
+ else
298
+ tmux set-option -t " ${session_name} :${window_number} " automatic-rename " $automatic_rename "
299
+ fi
299
300
done
300
301
}
301
302
302
303
restore_shell_history () {
303
- awk ' BEGIN { FS="\t"; OFS="\t" } /^pane/ { print $2, $3, $7 , $10 ; }' $( last_resurrect_file) |
304
+ awk ' BEGIN { FS="\t"; OFS="\t" } /^pane/ { print $2, $3, $6 , $9 ; }' $( last_resurrect_file) |
304
305
while IFS=$d read session_name window_number pane_index pane_command; do
305
306
if ! is_pane_registered_as_existing " $session_name " " $window_number " " $pane_index " ; then
306
307
local pane_id=" $session_name :$window_number .$pane_index "
@@ -321,7 +322,7 @@ restore_shell_history() {
321
322
restore_all_pane_processes () {
322
323
if restore_pane_processes_enabled; then
323
324
local pane_full_command
324
- awk ' BEGIN { FS="\t"; OFS="\t" } /^pane/ && $11 !~ "^:$" { print $2, $3, $7 , $8 , $11 ; }' $( last_resurrect_file) |
325
+ awk ' BEGIN { FS="\t"; OFS="\t" } /^pane/ && $10 !~ "^:$" { print $2, $3, $6 , $7 , $10 ; }' $( last_resurrect_file) |
325
326
while IFS=$d read -r session_name window_number pane_index dir pane_full_command; do
326
327
dir=" $( remove_first_char " $dir " ) "
327
328
pane_full_command=" $( remove_first_char " $pane_full_command " ) "
@@ -331,15 +332,15 @@ restore_all_pane_processes() {
331
332
}
332
333
333
334
restore_active_pane_for_each_window () {
334
- awk ' BEGIN { FS="\t"; OFS="\t" } /^pane/ && $9 == 1 { print $2, $3, $7 ; }' $( last_resurrect_file) |
335
+ awk ' BEGIN { FS="\t"; OFS="\t" } /^pane/ && $8 == 1 { print $2, $3, $6 ; }' $( last_resurrect_file) |
335
336
while IFS=$d read session_name window_number active_pane; do
336
337
tmux switch-client -t " ${session_name} :${window_number} "
337
338
tmux select-pane -t " $active_pane "
338
339
done
339
340
}
340
341
341
342
restore_zoomed_windows () {
342
- awk ' BEGIN { FS="\t"; OFS="\t" } /^pane/ && $6 ~ /Z/ && $9 == 1 { print $2, $3; }' $( last_resurrect_file) |
343
+ awk ' BEGIN { FS="\t"; OFS="\t" } /^pane/ && $5 ~ /Z/ && $8 == 1 { print $2, $3; }' $( last_resurrect_file) |
343
344
while IFS=$d read session_name window_number; do
344
345
tmux resize-pane -t " ${session_name} :${window_number} " -Z
345
346
done
@@ -355,7 +356,7 @@ restore_grouped_sessions() {
355
356
}
356
357
357
358
restore_active_and_alternate_windows () {
358
- awk ' BEGIN { FS="\t"; OFS="\t" } /^window/ && $5 ~ /[*-]/ { print $2, $4, $3; }' $( last_resurrect_file) |
359
+ awk ' BEGIN { FS="\t"; OFS="\t" } /^window/ && $6 ~ /[*-]/ { print $2, $4, $3; }' $( last_resurrect_file) |
359
360
sort -u |
360
361
while IFS=$d read session_name active_window window_number; do
361
362
tmux switch-client -t " ${session_name} :${window_number} "
@@ -376,7 +377,7 @@ main() {
376
377
execute_hook " pre-restore-all"
377
378
restore_all_panes
378
379
handle_session_0
379
- restore_pane_layout_for_each_window > /dev/null 2>&1
380
+ restore_window_properties > /dev/null 2>&1
380
381
execute_hook " pre-restore-history"
381
382
if save_shell_history_option_on; then
382
383
restore_shell_history
0 commit comments