"Maximizando" un panel en tmux

A veces sería muy útil para maximizar un panel en tmux y luego restaurarlo a su tamaño anterior.

He estado leyendo el manual y no puedo encontrar una manera. Lo que he venido con es que podría enlazar una tecla para cambiar el tamaño del panel a "max" de ancho, y otra clave para restaurar a algún ancho predefinido.

Por supuesto esto tiene sus inconvenientes, así que me pregunto si alguien tiene una idea mejor.

Otra opción podría ser utilizar break-pane seguido por join-pane . Desde la página de manual :

 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. 

Así que usted podría seleccionar su panel y hacer break-pane y luego una vez que haya terminado con la versión maximizada, podría volver a unirla con join-pane – podría necesitar algunos argumentos por defecto para ponerlo de nuevo en su lugar, o simplemente reorganizar después.

Tenga en cuenta que join-panel parece estar en tmux 1.3 pero no 1.1. (No estoy seguro sobre 1.2, lo siento).

Y sólo para mencionar que el terminador (una interfaz gráfica de usuario (GTK) multiplexor de terminal) puede hacer el zoom cosa. (Ctrl-Shift-X es la combinación de teclas predeterminada). Por supuesto que no hace muchas cosas que hace tmux …

Esta es ahora una característica tmux nativa.

La versión 1.8 vio la adición del indicador -Z para resize-pane . Desde la página de manual:

Con -Z, el panel activo se alterna entre el zoom (que ocupa toda la ventana) y unzoomed (su posición normal en el diseño).

Está vinculado a tmux-prefixz por defecto en mi instalación (a través de Homebrew en OS X).

Así que sé que usted le preguntó hace un tiempo … pero no cambiar de pantalla hasta hoy!

Me encontré con el mismo problema, aquí es cómo lo resolví:

 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 

Si su flujo de trabajo es como el mío (es decir, maximizar una ventana, hacer algo de trabajo, luego inmediatamente unmaximize) esto debería funcionar muy bien para usted.

Zoomer mejorado. Ahora se puede ampliar varios paneles, incluso jerárquicamente. Después de hacer lo siguiente y recargar su servidor tmux (Ctrl-r en mi caso) tendrá su clave x obligado a acercar y alejar un panel. Zoom-in se logra abriendo el panel en una nueva ventana, y zoom-out se logra mediante un panel de nuevo a su ventana original. Si termina dividiendo la ventana de acercamiento, podrá hacer zoom en los paneles de la ventana de acercamiento y alejar de nuevo la ventana de acercamiento. Zoom-out sólo ocurre si se encuentra en una ventana de zoom-in que contiene un único panel.

Agregue el siguiente al final de su ~/.tmux.conf

 ~$ grep "bind x" ~/.tmux.conf unbind x bind x run ". ~/.tmux/zoom" 

Añadir archivo siguiente

 ~$ cat ~/.tmux/zoom #!/bin/bash -f currentwindow=`tmux list-window | tr '\t' ' ' | sed -n -e '/(active)/s/^[^:]*: *\([^ ]*\) .*/\1/gp'`; currentpane=`tmux list-panes | sed -n -e '/(active)/s/^\([^:]*\):.*/\1/gp'`; panecount=`tmux list-panes | wc | sed -e 's/^ *//g' -e 's/ .*$//g'`; inzoom=`echo $currentwindow | sed -n -e '/^zoom/p'`; if [ $panecount -ne 1 ]; then inzoom=""; fi if [ $inzoom ]; then lastpane=`echo $currentwindow | rev | cut -f 1 -d '@' | rev`; lastwindow=`echo $currentwindow | cut -f 2- -d '@' | rev | cut -f 2- -d '@' | rev`; tmux select-window -t $lastwindow; tmux select-pane -t $lastpane; tmux swap-pane -s $currentwindow; tmux kill-window -t $currentwindow; else newwindowname=zoom@$currentwindow@$currentpane; tmux new-window -d -n $newwindowname; tmux swap-pane -s $newwindowname; tmux select-window -t $newwindowname; fi 

Hice esto para maximizar / minimizar con la misma tecla:

 bind Ck 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" 

También para mí trabajar sin 'clear && echo TMUX ZOOM && read'. Con este fragmento cada vez que minimizo un panel de la primera ventana desaparecen.

Para aquellos que no pueden ir con tmux 1.8 o prefieren un estado maximizado más, he publicado un script tmux que funciona con tmux 1.6 + .

Espero que ayude.

Estoy en Ubuntu 12.04 y también necesitaba esta característica. Desde el tmux 1.8 hay soporte nativo para el cambio de zoom usando el prefijo tmux-z. Dado que probablemente no veremos tmux 1.8 en 12.04 compilé tmux 1.8 desde la fuente en otro ordenador de dev, lo cambié el nombre a _tmux-1.8 y simplemente copié el 1.8 binario en /usr/bin/_tmux-1.8 y editado .bash_aliases -> alias Tmux = '_ tmux-1.8'.

No he notado ningún problema usando este método rápido y sucio y cuando / si tmux 1.8 viene a 12.04 no he roto nada.

Para versiones anteriores de tmux, esta solución es la única que he encontrado que funciona:

https://github.com/jipumarino/tmux-zoom

El problema con el cambio de resize-pane -Z es que a veces se realiza la operación de zoom inverso de lo deseado, sobre todo cuando se llama desde un script o dentro de tmux.conf .

Aquí está el trabajo alrededor:

tmux-zoom-in.sh

 #!/bin/bash # Zoom in the current pane ONLY if it is not currently zoomed. # Requires tmux version >= 1.8 tmux list-panes -F '#F' | grep -q Z || tmux resize-pane -Z 

tmux-zoom-out.sh

 #!/bin/bash # Zoom out the current pane ONLY if it is not currently zoomed. # Requires tmux version >= 1.8 tmux list-panes -F '#F' | grep -q Z && tmux resize-pane -Z