“Maximizando” um painel no tmux

199

Às vezes, seria muito útil maximizar um painel no tmux e restaurá-lo para o tamanho anterior.

Eu tenho lido o manual e não consigo encontrar um jeito. O que eu tenho é que eu poderia vincular uma chave para redimensionar o painel para a largura "max", e outra chave para restaurá-lo para uma largura pré-definida.

Claro que isso tem suas desvantagens, então estou pensando se alguém tem uma ideia melhor.

    
por Ivan 28.01.2011 / 00:10

11 respostas

49

Outra opção poderia ser usar break-pane seguido por join-pane . Na 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.

Assim, você pode selecionar seu painel e fazer break-pane e, depois de feito com a versão maximizada, você pode juntá-lo novamente com join-pane - pode precisar de alguns argumentos padrão para colocá-lo de volta ou simplesmente reorganizar depois.

Observe que o join-pane parece estar no tmux 1.3, mas não no 1.1. (Não tenho certeza sobre 1.2, desculpe).

E só para mencionar que terminador (um multiplexador de terminal baseado em GUI (GTK)) pode fazer o zoom . (Ctrl-Shift-X é a tecla de atalho padrão). Claro que não faz muitas coisas que o tmux faz ...

    
por 04.05.2011 / 00:50
423

Agora é um recurso nativo do tmux.

A versão 1.8 viu a adição do sinal -Z em resize-pane . Na página do manual:

With -Z, the active pane is toggled between zoomed (occupying the whole of the window) and unzoomed (its normal position in the layout).

Ele está ligado ao prefixo do tmux - z por padrão na minha instalação (via Homebrew no OS X).

    
por 01.04.2013 / 20:49
47

Então eu sei que você perguntou isso há um tempo atrás ... mas eu não mudei da tela até hoje!

Eu encontrei o mesmo problema, eis como resolvi o problema:

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

Se o seu fluxo de trabalho é igual ao meu (ou seja, você maximiza uma janela, faz algum trabalho e, em seguida, desimpaça imediatamente) isso deve funcionar bem para você.

    
por 15.11.2011 / 21:21
24

Zoomer melhorado. Agora é possível fazer zoom em vários painéis, até mesmo hierarquicamente. Depois de fazer o seguinte e recarregar seu servidor tmux (Ctrl-r no meu caso) você terá sua chave x ligada para ampliar e reduzir um painel. O zoom é obtido abrindo o painel em uma nova janela, e o zoom é obtido ao levar um painel de volta à sua janela original. Se você acabar dividindo a janela de zoom, poderá ampliar os painéis da janela de zoom e diminuir o zoom na janela de zoom. o zoom só acontece se você estiver em uma janela de zoom contendo um único painel.

Adicione o seguinte ao final do seu ~/.tmux.conf

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

Adicione o seguinte arquivo

~$ cat ~/.tmux/zoom
#!/bin/bash -f
currentwindow='tmux list-window | tr '\t' ' ' | sed -n -e '/(active)/s/^[^:]*: *\([^ ]*\) .*//gp'';
currentpane='tmux list-panes | sed -n -e '/(active)/s/^\([^:]*\):.*//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
    
por 07.06.2012 / 08:03
7

Cntl + b (prefixo) + z funciona para aumentar o zoom em um painel específico no tmux 2.1. você pressiona Ctrl + b + z novamente, o painel de zoom volta ao tamanho original. Não cria um novo painel.

Em comparação com a solução postada acima por aksay, se você tentar dividir o painel ampliado, ele não permitirá a divisão e voltará para o painel original e dividirá esse painel.

A opção de zoom é provavelmente mais versátil ..

    
por 01.09.2017 / 15:46
2

Eu fiz isso para maximizar / minimizar com o mesmo toque de tecla:

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"
    
por 07.05.2012 / 23:32
1

Também para mim, trabalhe sem 'clear & & echo TMUX ZOOM & ler'. Com esse trecho toda vez que eu minimizar um painel da primeira janela, desapareça.

    
por 20.04.2012 / 14:21
1

O problema com resize-pane -Z ser uma alternância é que às vezes ele executa a operação de zoom reverso do que o desejado, particularmente quando chamado de um script ou dentro de tmux.conf .

Veja a solução:

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
    
por 05.08.2016 / 05:08
0

Para aqueles que não podem ir com o tmux 1.8 ou preferem um estado mais longo maximizado, eu publiquei um script tmux que funciona com o tmux 1.6 + .

Espero que ajude.

    
por 05.05.2013 / 23:53
0

Estou no Ubuntu 12.04 e também precisei desse recurso. Desde o tmux 1.8 existe suporte nativo para alternar zoom usando o tmux-prefix z. Como provavelmente não veremos o tmux 1.8 em 12.04, eu compilei o tmux 1.8 a partir do código-fonte em outro computador, renomei-o como _tmux-1.8 e copiei o binário 1.8 para /usr/bin/_tmux-1.8 e editado .bash_aliases - > alias tmux = '_ tmux-1.8'.

Eu não notei nenhum problema usando este método rápido e sujo e quando / se o tmux 1.8 chegar em 12.04 eu não quebrei nada.

    
por 02.06.2013 / 14:53
0

Para versões mais antigas do tmux, esta solução é a única que eu descobri que funciona:

link

    
por 22.03.2013 / 02:55

Tags