Maximize and restore panes in tmux 1.7. (incompatible with <=1.6)
-
Copy
pane-maximize*
from here to ~/bin/ directory. -
Add a key binding to .tmux.conf:
bind-key m run-shell "pane-maximize -a"
#!/bin/bash | |
# By Kazuhiko Sakaguchi. Public domain. | |
function usage_exit(){ | |
cat <<EOT | |
Usage: $(echo $0 | sed "s/.*\///") [-adP] [-F format] [-t target-pane] | |
-a, -d, -P, -F format: these options are passed to tmux new-window | |
-t target-pane: specify target pane | |
EOT | |
exit $1 | |
} | |
paneid=$(tmux display-message -p '#{pane_id}') | |
optflag_a=false | |
nwopts= | |
while getopts adPF:t: OPT ; do | |
case $OPT in | |
t ) paneid=$OPTARG ;; | |
a ) optflag_a=true ;; | |
d|P) nwopts="-$OPT $nwopts" ;; | |
F ) nwopts="-F $OPTARG $nwopts" ;; | |
* ) usage_exit -1 ;; | |
esac | |
done | |
paneid=$(tmux display-message -t $paneid -p '#{pane_id}' || exit -1) | |
winid=$(tmux display-message -t $paneid -p '#{window_id}') | |
pmtable=$(tmux showenv pmtable | sed 's/^pmtable=//') | |
$optflag_a && nwopts="-a -t $winid $nwopts" | |
if target=$(echo $pmtable | tr : "\n" | \ | |
grep -E "(=|^)$paneid(=|$)" | head -n 1 | grep .) ; then | |
IFS== ; set -- $target ; IFS=' ' ; \ | |
tmux swap-pane -t $2 -s $1 \; \ | |
kill-pane -t $2 \; \ | |
setenv pmtable "$(echo $pmtable | sed "s/:$target//")" | |
elif [ $(tmux list-panes -t $winid -F '' | wc -l) != 1 ] ; then | |
echo $nwopts | |
tmux new-window $nwopts "\"$0-sub\" $paneid" | |
fi |
#!/bin/bash | |
# By Kazuhiko Sakaguchi. Public domain. | |
pmtable=$(tmux showenv pmtable | sed 's/^pmtable=//') | |
tmux swap-pane -s $1 -t $TMUX_PANE \; \ | |
setenv pmtable "$pmtable:$1=$TMUX_PANE" | |
echo -ne '\033]2;DUMMY PANE\033\\' | |
stty intr undef | |
echo '********************' | |
echo '**** dummy pane ****' | |
echo '********************' | |
while true ; do read ; done |