Question "Maximiser" un volet en tmux


Parfois, il serait très utile de maximiser un volet dans tmux, puis de le restaurer à sa taille précédente.

J'ai lu le manuel et je n'arrive pas à trouver un moyen. Ce que je viens de dire, c'est que je pourrais lier une clé pour redimensionner le volet à la largeur "max", et une autre clé pour le restaurer à une largeur prédéfinie.

Bien sûr, cela a ses inconvénients, alors je me demande si quelqu'un a une meilleure idée.


194
2018-01-27 23:10


origine




Réponses:


Une autre option pourrait être d'utiliser break-pane suivi par join-pane. Du page de manuel:

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.

Donc, vous pouvez sélectionner votre volet et faire break-pane et puis une fois que vous avez terminé avec la version maximisée, vous pouvez le rejoindre avec join-pane - Peut avoir besoin d’arguments par défaut pour le remettre en place ou simplement réorganiser par la suite.

Notez que join-pane semble être dans tmux 1.3 mais pas 1.1. (Pas sûr de 1.2, désolé).

Et juste pour mentionner que terminateur (un multiplexeur de terminal GUI (basé sur GTK)) peut faire le zoom. (Ctrl-Shift-X est la reliure par défaut). Bien sûr, tmux ne fait pas beaucoup de choses ...


49
2018-05-03 22:50



A partir de la version 1.8, la solution est meilleure (voir la réponse de Tyler Holien). - momeara
Pour ceux qui tentent cela avant la meilleure réponse, pour faire fonctionner le joint-pane: join-pane -t:{previous} pour la fenêtre précédente ou join-pane -t:0 pour le renvoyer à la fenêtre 0. - Realistic


Ceci est maintenant une fonctionnalité tmux native.

La version 1.8 a vu l’ajout du -Z drapeau à resize-pane. De la page de manuel:

Avec -Z, le volet actif bascule entre zoomé (occupant le   entier de la fenêtre) et sans vis-à-vis (sa position normale dans la mise en page).

Il est lié à préfixe tmux-z par défaut sur mon installation (via Homebrew sur OS X).


409
2018-04-01 18:49



quelqu'un avec des privilèges adéquats devrait en faire la réponse. Il est inconcevable que quelqu'un utilise encore une version de tmux autre que la dernière. - Jay
C'était super, juste ajouté à mon fichier .tmux.conf et maintenant avoir une expérience beaucoup plus fluide: bind-key z resize-pane -Z - St-Ste-Ste-Stephen
Est-il possible de faire en sorte que les bords des panneaux immergés soient visibles pour l’indication de la profondeur? Je continue à oublier que je fais un zoom avant et que le "Z-title" n'est pas assez évident. - lkraav
Fonctionne dans BunsenLabs hors de la boîte. - Mateusz Piotrowski
"INCONCEIVABLE" - "Vous continuez à utiliser ce mot. Je ne pense pas que cela signifie ce que vous pensez que cela signifie." - Michael Anderson


Donc, je sais que vous l'avez demandé il y a un moment ... mais je n'ai pas changé d'écran jusqu'à aujourd'hui!

J'ai rencontré le même problème, voici comment je l'ai résolu:

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 votre flux de travail est comme le mien (c'est-à-dire que vous maximisez une fenêtre, faites un peu de travail, puis dématérialisez-le immédiatement), cela devrait vous convenir.


47
2017-11-15 20:21



(Au cas où ce ne serait pas clair, cela maintient la mise en page dans votre fenêtre d'origine ... après avoir maximisé et non maximisé, c'est exactement la même chose.) - Ryan
Une idée de la manière dont je pourrais mapper la même frappe sur les deux? Quelque chose comme bind c-m select-window -t tmux-zoom ? <minimize> : <maximize>. Mais maintenant, je veux définir cette fonction ailleurs, par souci de propreté, et juste bind c-m :max_or_min. Est-ce possible? J'ai du mal à chercher. (Je trouve que je frappe souvent la mauvaise commande et finis par créer des fenêtres 'tmux-zoom' vides supplémentaires.) - chadoh
Cela n'a fonctionné pour moi que lorsque j'ai supprimé 'clear && echo TMUX ZOOM && read' de agrandir. - Epeli
Thw maxim fonctionne pour moi, mais l'action minimiser tue simplement la fenêtre d'origine, laissant le volet maximisé. - paradroid
Ce genre de travail a fonctionné, mais je perds ma mise en page. - John Hunt


Zoomer amélioré. Maintenant, on peut zoomer sur plusieurs volets, même hiérarchiquement. Après avoir fait le ci-dessous et rechargé votre serveur tmux (Ctrl-r dans mon cas), vous aurez votre X touche pour zoomer et dézoomer un volet. Le zoom avant est obtenu en ouvrant le volet dans une nouvelle fenêtre et en effectuant un zoom arrière en ramenant un volet à sa fenêtre d'origine. Si vous divisez la fenêtre de zoom avant, vous pourrez zoomer dans les volets de la fenêtre de zoom avant et revenir en arrière dans la fenêtre de zoom avant. Le zoom arrière ne se produit que si vous êtes dans une fenêtre de zoom avant contenant un seul volet.

Ajouter à la fin de votre ~/.tmux.conf

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

Ajouter le fichier suivant

~$ 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

24
2018-06-07 06:03



Seul un vote à la hausse?! Cette réponse est géniale! Fonctionne très bien, introduit de nouvelles fonctionnalités agréables qui remplacent désormais complètement le programme de terminaison que j'utilisais auparavant. - sillyMunky
+1 C'est vraiment bien! De loin la meilleure solution de travail que j'ai trouvée jusqu'ici! Merci!! - armandino
Je suis d'accord. Cela fonctionne, et c'est plus que génial. C'est un écran ++ - Brad Parks
+1. Cela fonctionne très bien mais c'est une fraction de seconde (~ 0.8s) plus lente que la réponse de @Royal au-dessus, du moins sur mon système. Pas grave, mais je me demande s'il existe un moyen de le rendre plus rapide - Amelio Vazquez-Reina
Beau en effet. J'aime les noms de volets spéciaux (zoom @ ...), qui sont des rappels utiles, et la commande de zoom avant / arrière simple "x". - Eric Lebigot


Cntl + b (préfixe) + z fonctionne pour zoomer sur un volet particulier dans tmux 2.1. Si vous appuyez à nouveau sur Ctrl + b + z, le panneau de zoom revient à sa taille d'origine. Il ne crée pas de nouveau volet.

Comparé à la solution publiée ci-dessus par aksay, si vous essayez de diviser le volet zoom avant, cela ne permettra pas de diviser, et retournera au volet d'origine et divisera ce volet à la place.

L'option de fenêtre de zoom est probablement plus polyvalente.


7
2017-09-01 13:46





Je l'ai fait pour maximiser / minimiser avec la même frappe:

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"

2
2018-05-07 21:32





Aussi pour moi travailler sans "clear && echo TMUX ZOOM && lire". Avec cet extrait chaque fois que je minimise un volet de la première fenêtre disparaissent.


1
2018-04-20 12:21





Pour ceux qui ne peuvent pas aller avec tmux 1.8 ou préfèrent un état maximisé plus long, j'ai publié un Script tmux qui fonctionne avec tmux 1.6+.

J'espère que cela pourra aider.


0
2018-05-05 21:53





Je suis sur Ubuntu 12.04 et j'ai également besoin de cette fonctionnalité. Depuis tmux 1.8, il existe un support natif pour le basculement du zoom en utilisant tmux-prefix z. Comme nous ne verrons probablement pas tmux 1.8 en 12.04, j'ai compilé tmux 1.8 à partir de sources sur un autre ordinateur, je l'ai renommé en _tmux-1.8 et j'ai simplement copié le 1.8 binaire dans /usr/bin/_tmux-1.8 et édité .bash_aliases -> alias tmux = '_ tmux-1.8'.

Je n'ai pas remarqué de problème en utilisant cette méthode rapide et sale et quand / si tmux 1.8 arrive à 12.04 je n'ai rien cassé.


0
2018-06-02 12:53