Une fenêtre de terminal peut-elle être redimensionnée avec une commande de terminal?

37

Afin que je puisse redimensionner la fenêtre à une certaine taille à partir de Terminal.

LopSae
la source

Réponses:

54

Oui. Le terminal prend en charge les séquences d'échappement permettant de manipuler les fenêtres, notamment la taille et la position, la superposition et la réduction. Les dimensions peuvent être exprimées en pixels ou en caractères. Voir Séquences de contrôle Xterm pour plus de détails (recherchez «Manipulation de la fenêtre»; si vous n'êtes pas familier avec la notation, «CSI» signifie «Introducteur de séquence de contrôle», ce qui est ESC [).

Par exemple, cette commande shell va définir la fenêtre à 100 x 50 caractères:

printf '\e[8;50;100t'

Réduisez la fenêtre pendant quelques secondes, puis restaurez-la:

printf '\e[2t' && sleep 3 && printf '\e[1t'

Déplacez la fenêtre dans le coin supérieur / gauche de l'écran:

printf '\e[3;0;0t'

Zoom la fenêtre:

printf '\e[9;1t'

Ramenez la fenêtre au premier plan (sans changer le focus du clavier):

printf '\e[5t'

Activation des séquences de contrôle dans les émulateurs de terminal

Certains émulateurs de terminaux ignorent ces séquences de contrôle par défaut et nécessitent une configuration pour les activer.

Pour les activer dans XTerm , définissez la ressource suivante sur true:

allowWindowOps

Pour les activer dans iTerm2 , désélectionnez la préférence suivante:

Préférences> Profils> [profil]> Terminal> Désactiver le redimensionnement de la fenêtre lancée par la session.

Chris Page
la source
C'est juste parfait!
LopSae
2
A partir de maintenant tu es mon dieu!
d12frosted
2
Cela ne semble pas fonctionner sur Yosemite avec iterm2
Jistanidiot
Cela fonctionne très bien, mais il semble que Terminal n’accepte pas les redimensionnements qui ne rendraient la fenêtre que partiellement visible à l’écran. Je viens d'essayer printf '\ e [8; 100; 100t' et cela tronqué à 79x100, exactement ce qui pourrait convenir. Mon problème est que je dois contourner la souris juste pour ce cas d’agrandissement du terminal au-delà des limites de l’écran ...
phs
1
Cela fonctionne également avec iTerm2.
TextGeek
10

Vous pouvez toujours utiliser AppleScript:

setwidth() { osascript -e "tell app \"Terminal\" to tell window 1
set b to bounds
set item 3 of b to (item 1 of b) + $1
set bounds to b
end"; }
Lri
la source
Cela ne fonctionne que pour la fenêtre / l’onglet du terminal actuellement actif. Pour que cela fonctionne de manière fiable, récupérez le chemin d'accès actuel du périphérique tty et localisez l'onglet du terminal correspondant.
Chris Page
Voir aussi superuser.com/a/576357
lhf le
10

Utilisez /usr/X11/bin/resize.

resize -s 30 80 vous donnera 30 lignes et 80 colonnes.

resize -s 30 0 vous donnera 30 lignes et colonnes complètes.

resize -s 0 80 vous donnera des lignes complètes et 80 colonnes.

lhf
la source
1
Cette solution n'est pas limitée à MacOS. Il est basé sur les terminaux, il devrait donc fonctionner sur tous les terminaux. J'utilise ceci pour redimensionner les fenêtres PuTTY sur Windows exécutant des shells bash avec TERM = xterm.
DrStrangepork
4
Cela ne semble pas fonctionner sur Yosemite dans iterm2.
Jistanidiot
Cela fonctionne pour moi avec Apple Terminal mais pas iTerm2. Cependant, l'envoi de la séquence d'échappement \ e [8; 24; 80t fonctionne avec les deux.
TextGeek
1
@KrishenGreenwell Reportez-vous à la documentation iTerm2. Par défaut, il ignore ces séquences de contrôle. Il y a une préférence pour contrôler si elles sont ignorées.
Chris Page
1
Cette solution fonctionnait auparavant, mais je pense que les commandes X11 ont disparu. Peut-être qu’ils peuvent être installés en installant X11, mais je ne veux pas installer X11 uniquement pour avoir la commande resize.
Gabriel le
-2

En fait, vous savez, déplacer une fenêtre en train de redimensionner avec une souris est horriblement lent.

J'utilise cette application SizeUp depuis très longtemps. En gros, il redimensionne n'importe quelle fenêtre d'application à l'aide de votre commande au clavier.

Vous pouvez effectuer les opérations suivantes (commandes au clavier personnalisées ci-dessous):

  • faire de la fenêtre plein écran ( control+ option+ command+ m)
  • déplacer une fenêtre 1/2 taille d'écran vers la gauche ou la droite ( control+ option+ command+ / / )
  • déplacer une fenêtre 1/4 de la taille de l'écran vers n'importe quel coin ( control+ option+ shift+ / / / )
  • déplacer les fenêtres entre les écrans
  • déplacer les fenêtres entre les espaces

Je pense que cela pourrait faire l'affaire et aider également à la gestion des autres fenêtres.

space_balls
la source
Bien qu'utile, cela ne répond pas à la question posée par le questionneur.
Andrew Ferrier