57 votes

Peut-on redimensionner une fenêtre de terminal à l'aide d'une commande de terminal ?

Pour que je puisse redimensionner la fenêtre à une certaine taille depuis le terminal.

86voto

Chris Page Points 7394

Oui. Le terminal prend en charge les séquences d'échappement pour 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 (cherchez "Window manipulation" ; si vous n'êtes pas familier avec la notation, "CSI" signifie "Control Sequence Introducer", qui est ESC [ ).

Par exemple, cette commande shell définira la fenêtre à 100x50 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'

Zoomer la fenêtre :

printf '\e[9;1t'

Mettez la fenêtre en avant (sans changer le focus du clavier) :

printf '\e[5t'

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

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

Pour les activer dans XTerm , mettez la ressource suivante à 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 à l'initiative de la session

0 votes

C'est juste parfait !

3 votes

A partir de maintenant, tu es mon dieu !

2 votes

Cela ne semble pas fonctionner sur Yosemite avec iterm2.

15voto

Igor Zelaya Points 2266

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 des colonnes complètes.

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

1 votes

Cette solution n'est pas limitée à MacOS. Elle est basée sur un terminal, elle devrait donc fonctionner sur tous les terminaux. Je l'utilise pour redimensionner PuTTY Windows sur Windows exécutant des shells bash avec TERM=xterm.

4 votes

Cela ne semble pas fonctionner sur Yosemite dans iterm2.

0 votes

Cela fonctionne pour moi avec Apple Terminal mais pas avec iTerm2. Cependant, en envoyant la séquence d'échappement \e [8;24;80t fonctionne avec les deux.

10voto

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"; }

0 votes

Cela ne fonctionne que pour la fenêtre/onglet du terminal actuellement actif. Pour que cela fonctionne de manière fiable, récupérez le chemin du périphérique tty actuel et localisez l'onglet du terminal qui correspond.

0 votes

2voto

Eljay Points 171

Je m'excuse de faire revivre une vieille question, mais j'ai pensé que cette réponse pourrait être utile à d'autres.

De tedsmith3rd voici un bash pour déplacer une fenêtre de terminal. La magie des séquences de commandes du terminal.

function bumpNjump() {
  local xDimension="" yDimension="" width="" height="" OPTIND

  while getopts 'x:y:w:h:' thisArg
  do
     case "${thisArg}" in
        x) xDimension="${OPTARG}" ;;
        y) yDimension="${OPTARG}" ;;
        w) width="${OPTARG}" ;;
        h) height="${OPTARG}" ;;
     esac
  done

  if [ -n "${width}" -a -n "${height}" ]
  then
     printf '\e[4;'${height}';'${width}'t';
  fi

  if [ -n "${xDimension}" -a -n "${yDimension}" ]
  then
     printf '\e[3;'${xDimension}';'${yDimension}'t'
  fi
}

Combinez cela avec ceci termsize.bash script pour obtenir la géométrie actuelle, et vous avez un moyen facile de contrôler votre fenêtre Terminal.

#!/bin/bash
# based on a script from http://invisible-island.net/xterm/xterm.faq.html
exec < /dev/tty
oldstty=$(stty -g)
stty raw -echo min 0

printf "\e[13t" > /dev/tty
IFS=';' read -r -d t -a pos

xpos=${pos[1]}
ypos=${pos[2]}

# Window (including chrome) size in pixels
printf "\e[14;2t" > /dev/tty
IFS=';' read -r -d t -a size

hsize=${size[1]}
wsize=${size[2]}

stty $oldstty

echo "bumpNjump -x $xpos -y $ypos -h $hsize -w $wsize"

0 votes

Cela semble utile, mais ne fonctionne pas sous MacOS 10.5.6 - les caractères de contrôle sont imprimés : bumpNjump -x 10 -y 20 -w 800 -h 300 \E[4;300;800t\E[3;10;20t Est-ce que ça marche pour vous ?

1 votes

Ah - cela fonctionne dans iTerm si vous désactivez l'option indiquée dans une réponse précédente : 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 en fonction de la session.

-3voto

space_balls Points 151

En fait, vous savez, déplacer et redimensionner Windows avec une souris est horriblement lent.

J'ai utilisé cette application SizeUp depuis très longtemps maintenant. Il permet de redimensionner la fenêtre de n'importe quelle application en utilisant une commande du clavier.

Vous pouvez faire ce qui suit (mes commandes clavier personnalisées ci-dessous) :

  • rendre la fenêtre plein écran ( control + option + command + m )
  • déplacer une fenêtre d'une demi-taille d'écran vers la gauche ou la droite ( control + option + command + / )
  • déplacer une fenêtre d'un quart 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 aussi aider à la gestion des autres fenêtres.

1 votes

Bien qu'utile, cela ne répond pas à la question posée par l'auteur de la question.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X