Kann die Größe eines Terminalfensters mit einem Terminalbefehl geändert werden?

38

Damit ich das Fenster von Terminal aus auf eine bestimmte Größe skalieren kann.

LopSae
quelle

Antworten:

58

Ja. Terminal unterstützt Escape-Sequenzen zum Bearbeiten von Fenstern, einschließlich Größe und Position, Ebenen und Minimieren. Abmessungen können in Pixel oder Zeichen angegeben werden. Weitere Informationen finden Sie unter XTM-Steuersequenzen. (Suchen Sie nach „Fenstermanipulation“. Wenn Sie mit der Notation nicht vertraut sind, steht „CSI“ für „Control Sequence Introducer“ ESC [.)

Mit diesem Shell-Befehl wird das Fenster beispielsweise auf 100 x 50 Zeichen festgelegt:

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

Minimieren Sie das Fenster für einige Sekunden und stellen Sie es wieder her:

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

Verschieben Sie das Fenster in die obere / linke Ecke der Anzeige:

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

Zoom das Fenster:

printf '\e[9;1t'

Bringen Sie das Fenster nach vorne (ohne den Tastaturfokus zu ändern):

printf '\e[5t'

Aktivieren der Steuersequenzen in Terminalemulatoren

Einige Terminalemulatoren ignorieren diese Steuersequenzen standardmäßig und müssen konfiguriert werden, um sie zu aktivieren.

Um diese in XTerm zu aktivieren , setzen Sie die folgende Ressource auf true:

allowWindowOps

Um diese in iTerm2 zu aktivieren, deaktivieren Sie die folgende Einstellung :

Einstellungen> Profile> [Profil]> Terminal> Sitzungsinitiierte Fenstergrößenänderung deaktivieren

Chris Page
quelle
Das ist einfach perfekt!
LopSae
2
Von nun an bist du mein Gott!
d12frosted
2
Dies scheint auf Yosemite mit iterm2
Jistanidiot
Das funktioniert prima, aber Terminal akzeptiert anscheinend keine Größenänderungen, die das Fenster nur teilweise auf dem Bildschirm sichtbar machen würden. Ich habe gerade printf '\ e [8; 100; 100t' ausprobiert und dies auf 79x100 gekürzt, genau das, was passen könnte. Mein Problem ist, dass ich die Maus nur für diesen Fall der Vergrößerung des Terminals über die Bildschirmgrenzen hinaus
umgehen muss
1
Dies funktioniert auch mit iTerm2.
TextGeek
10

Sie könnten immer AppleScript verwenden:

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
quelle
Dies funktioniert nur für das aktuell aktive Terminalfenster. Damit dies zuverlässig funktioniert, ermitteln Sie den aktuellen tty-Gerätepfadnamen und suchen Sie die entsprechende Terminalregisterkarte.
Chris Seite
Siehe auch superuser.com/a/576357
lhf
10

Verwenden Sie /usr/X11/bin/resize.

resize -s 30 80 Sie erhalten 30 Zeilen und 80 Spalten.

resize -s 30 0 Sie erhalten 30 Zeilen und volle Spalten.

resize -s 0 80 Sie erhalten vollständige Zeilen und 80 Spalten.

lhf
quelle
1
Diese Lösung ist nicht auf MacOS beschränkt. Es ist terminalbasiert, sollte also auf allen Terminals funktionieren. Ich benutze dies, um die Größe von PuTTY-Fenstern auf Windows-bash-Shells mit TERM = xterm zu ändern.
DrStrangepork
4
Dies scheint auf Yosemite in iterm2 nicht zu funktionieren.
Jistanidiot,
Das funktioniert bei mir mit Apple Terminal aber nicht mit iTerm2. Das Senden der Escape-Sequenz \ e [8; 24; 80t funktioniert jedoch mit beiden.
TextGeek
1
@KrishenGreenwell Weitere Informationen finden Sie in der iTerm2-Dokumentation. Standardmäßig werden diese Steuersequenzen ignoriert. Es ist bevorzugt zu steuern, ob sie ignoriert werden.
Chris Seite
1
Diese Lösung hat früher funktioniert, aber ich denke, die X11-Befehle sind weg. Möglicherweise können sie durch die Installation von X11 installiert werden, aber ich möchte X11 nicht nur installieren, um den Befehl zum Ändern der Größe zu haben.
Gabriel
-2

Eigentlich ist das Verschieben eines Fensters mit der Maus schrecklich langsam.

Ich benutze diese App SizeUp jetzt schon sehr lange. Grundsätzlich wird die Größe jedes Anwendungsfensters mithilfe Ihres Tastaturbefehls geändert.

Sie können Folgendes tun (meine benutzerdefinierten Tastaturbefehle unten):

  • mach das fenster vollbild ( control+ option+ command+ m)
  • verschiebe ein Fenster 1/2 Bildschirmgröße nach links oder rechts ( control+ option+ command+ / )
  • Verschieben eines Fensters mit einer Bildschirmgröße von 1/4 in eine beliebige Ecke ( control+ option+ shift+ / / / )
  • Fenster zwischen Bildschirmen verschieben
  • Verschieben von Fenstern zwischen Leerzeichen

Ich denke, dies könnte den Trick machen und auch bei anderen Fensterverwaltungen helfen.

space_balls
quelle
Obwohl dies nützlich ist, wird die vom Fragesteller gestellte Frage nicht beantwortet.
Andrew Ferrier