Existe-t-il un moyen de redessiner la fenêtre tmux lors du passage d’un moniteur plus petit à un plus grand?

Disons que vous vous connectez à un serveur distant via ssh avec Terminal.app. Lorsque vous “tmux attach” avec un moniteur de plus grande résolution à partir du plus petit que vous avez précédemment démarré avec tmux, il dessine des points autour de la console. Il ne correspond pas à la nouvelle taille de la fenêtre. Est-il possible de redessiner et de nettoyer la fenêtre? CTRL + L ou CTRLB + R n’aide pas. Je n’ai pas trouvé de commandement approprié sur l’homme.

% tmux -V tmux 1.5 

tmux limite les dimensions d’une fenêtre au plus petit de chaque dimension sur toutes les sessions auxquelles la fenêtre est attachée. Si ce n’était pas le cas, il n’y aurait aucun moyen sensé d’afficher toute la fenêtre pour tous les clients connectés.

Le plus simple est de détacher les autres clients des sessions lorsque vous connectez:

 tmux attach -d 

Vous pouvez également déplacer tout autre client vers une session différente avant de vous connecter à la session:

 takeover() { # create a temporary session that displays the "how to go back" message tmp='takeover temp session' if ! tmux has-session -t "$tmp"; then tmux new-session -d -s "$tmp" tmux set-option -t "$tmp" set-remain-on-exit on tmux new-window -kt "$tmp":0 \ 'echo "Use Prefix + L (ie ^BL) to return to session."' fi # switch any clients attached to the target session to the temp session session="$1" for client in $(tmux list-clients -t "$session" | cut -f 1 -d :); do tmux switch-client -c "$client" -t "$tmp" done # attach to the target session tmux attach -t "$session" } takeover 'original session' # or the session number if you do not name sessions 

L’écran rétrécira à nouveau si un client plus petit passe à la session.

Il y a aussi une variante où vous ne “reprenez” pas la fenêtre (liez la fenêtre à une nouvelle session, définissez aggressive-resize et changez toutes les autres sessions qui ont cette fenêtre active sur une autre fenêtre), mais il est plus difficile de scripter dans le cas général (et différent de «sortir» car vous voudriez dissocier la fenêtre ou tuer la session au lieu de simplement vous détacher de la session).

Vous pouvez toujours appuyer sur CTRLB + MAJD pour choisir le client que vous souhaitez détacher de la session.

tmux listera toutes les sessions avec leur dimension actuelle. Ensuite, vous vous détachez simplement de toutes les sessions plus petites.

Une solution plus simple sur les versions récentes de tmux (testée sur 1.9), que vous pouvez maintenant faire:

 tmux detach -a 

-a est pour tous les autres clients de cette session sauf celui en cours

Vous pouvez l’aliaser dans votre. [Bash | zsh] rc

 alias takeover="tmux detach -a" 

Workflow: vous pouvez vous connecter normalement à votre session et si une autre session vous oblige à réduire la taille de votre fenêtre tmux, vous pouvez simplement appeler une takeover .

Je viens de rencontrer ce problème et je suis tombé sur une situation différente. Bien que ce soit probablement une licorne, je pensais que je le dévoilerais.

J’ai eu une session plus petite et j’ai remarqué que les tailles de police étaient différentes: la plus petite session avait les plus petites fonts. Apparemment, j’avais changé de taille de police pour une raison quelconque.

Donc, dans OS X, je viens de faire Cmd-+ sur la session de taille plus petite, et il est revenu en place.

Les autres réponses ne m’ont pas aidé car je n’avais que le client attaché (le précédent qui a démarré la session était déjà détaché).

Pour y remédier, j’ai suivi la réponse ici (je n’utilisais pas xterm).

Ce qui dit simplement:

  1. Détacher de la session tmux
  2. Exécuter la commande linux resize
  3. Se rattacher à la session tmux
 ps ax | grep tmux 17685 pts/22 S+ 0:00 tmux a -t 13g2 17920 pts/11 S+ 0:00 tmux a -t 13g2 18065 pts/19 S+ 0:00 grep tmux 

tuez l’autre.