Sometimes it would be very useful to maximize a pane in tmux and then restore it to it's previous size.

I've been reading the manual and I can't find a way. What I've come up with is that I could bind a key to resize the pane to "max" width, and another key to restore it to some predefined width.

Of course this has its drawbacks, so I'm wondering if anyone has a better idea.

link|improve this question

feedback

4 Answers

up vote 7 down vote accepted

Another option could be to use break-pane followed by join-pane. From the man page:

break-pane [-d] [-t target-pane]
                   (alias: breakp)
             Break target-pane off from its containing window to make it the
             only pane in a new window.  If -d is given, the new window does
             not become the current window.

join-pane [-dhv] [-l size | -p percentage] [-s src-pane] [-t dst-pane]
                   (alias: joinp)
             Like split-window, but instead of splitting dst-pane and creating
             a new pane, split it and move src-pane into the space.  This can
             be used to reverse break-pane.

So you could select your pane and do break-pane and then once your done with the maximised version, you could re-join it with join-pane - might need some default arguments to put it back in place, or just rearrange afterwards.

Note that join-pane appears to be in tmux 1.3 but not 1.1. (Not sure about 1.2, sorry).

And just to mention that terminator (a GUI (GTK based) terminal multiplexer) can do the zoom thing. (Ctrl-Shift-X is the default keybinding). Of course it doesn't do lots of things that tmux does ...

link|improve this answer
feedback

So I know you asked this a while ago ... but I didn't switch from screen until today!

I ran into the same problem, here is how I solved it:

unbind +
bind + new-window -d -n tmux-zoom 'clear && echo TMUX ZOOM && read' \; swap-pane -s tmux-zoom.0 \; select-window -t tmux-zoom
unbind -
bind - last-window \; swap-pane -s tmux-zoom.0 \; kill-window -t tmux-zoom

If your workflow is like mine (i.e. you maximize a window, do some work, then immediately unmaximize it) this should work great for you.

link|improve this answer
(In case it wasn't clear, this maintains the layout in your original window...after maximizing and un-maximizing, it's exactly the same.) – Ryan Nov 15 '11 at 20:22
1  
This is a great solution. Thank you for posting Ryan!! – Alfred Fazio Dec 1 '11 at 19:14
perfect man! I'm sharing this :) – DallaRosa Mar 24 at 16:48
1  
Any idea how I could map the same keystroke to both? Something like bind c-m select-window -t tmux-zoom ? <minimize> : <maximize>. But now I want to define this function somewhere else, for the sake of cleanliness, and just bind c-m :max_or_min. Is that possible? I'm finding it hard to search for. (I find I often hit the wrong command and end up creating additional, empty 'tmux-zoom' windows.) – chadoh Apr 3 at 13:44
1  
This worked for me only when I removed 'clear && echo TMUX ZOOM && read' from maximize. – Epeli Apr 8 at 18:32
show 1 more comment
feedback

Also for me work without 'clear && echo TMUX ZOOM && read'. With this snippet every time I minimize one pane from first window disappear.

link|improve this answer
feedback

I did this to maximize/minimize with the same keystroke:

bind C-k run "if [[ $(tmux list-window) =~ ZOOM ]]; then tmux last-window; tmux swap-pane -s ZOOM.1; tmux kill-window -t ZOOM; else tmux new-window -d -n ZOOM; tmux swap-pane -s ZOOM.1; tmux select-window -t ZOOM;fi"
link|improve this answer
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.