2 votes

Redimensionner un terminal dans tmux ne semble pas fonctionner

Je suis nouveau sur tmux, et j'ai du mal à trouver une solution pour redimensionner mon terminal actuel (je n'ai pas encore appris assez sur les panneaux et les fenêtres).

Je lance tmux1.6, et j'utilise bash comme shell, sur ubuntu12.04. bash a une fonction intégrée resize qui semble fonctionner parfaitement en dehors de tmux.

% resize -s 50 80

redimensionne le terminal à 80 caractères de large sur 50 lignes de haut. Cependant, lorsque j'essaie d'exécuter cette commande exacte à l'intérieur d'un panneau tmux, cela se bloque après avoir appuyé sur Entrée, jusqu'à ce que j'appuie sur n'importe quelle touche, puis répond

"resize: caractère inconnu, sortie"

ce qui est un peu opaque pour moi. Maintenant, je n'ai pas besoin d'utiliser la fonction resize en soi, mais comment puis-je, à travers une commande (intégrée ou scriptée), redimensionner physiquement le terminal qui affiche mes fenêtres tmux? Le cas d'utilisation pour cela est que lorsque je décide d'ouvrir un nouveau panneau vertical, chacun contenant du code, je veux que mon terminal soit exactement un certain nombre de caractères de large (2 panneaux = 161 caractères, 80 pour chacun et 1 pour la ligne de division, par exemple). Redimensionner avec la souris est non seulement fastidieux, mais mon ubuntu n'affiche pas la largeur pendant que je redimensionne.

Toute aide est appréciée, merci!

3voto

jonas_jonas Points 206

Il semble que tmux ne laisse pas passer les caractères d'échappement.

J'ai fait un rapport de bug sur le bug-tracker de tmux - donc espérons que cela puisse être corrigé : http://sourceforge.net/p/tmux/tickets/88/

-- édition : ajout de contournement --

Il semble que vous puissiez forcer tmux à laisser passer une commande d'échappement spécifique: Vous pouvez utiliser printf '\033Ptmux;whatever\033' mais vous devez doubler \033.

J'ai donc écrit une petite fonction bash (placez-la dans votre .bashrc ou .bash_profile), qui vérifie si vous êtes à l'intérieur de tmux et imprime les codes d'échappement (testé dans xterm, Apple Terminal et iTerm):

 function resimux {                                                                                                                                                           
     if [ ! -z "$TMUX" ]; then
         printf '\ePtmux;\e\e[8;%i;%it\e\' $1 $2
     else
         printf '\e[8;%i;%it' $1 $2
     fi
 }

Ensuite, vous pouvez l'appeler comme ceci:

 resimux 50 80

La séquence d'échappement de redimensionnement est envoyée à tous les terminaux connectés.

Voilà.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X