Ändern Sie die Größe des Terminals Xterm

5107
Blue Ice

Ich suche nach einem universellen integrierten Befehl, der die Größe von Terminals auf Xterm-Basis ändert.

Dies ist eine Art Befehl, der kein neues Fenster öffnet, das ich nicht in die Datei aufnehmen muss, mit der diese Terminals gestartet werden.

Ich möchte eine App erstellen, die in einem 60x30-Frame geöffnet wird, jedoch erst, nachdem Sie den Befehl ausgeführt haben

myapp run

Ich möchte nicht, dass mein Terminal immer bei 30x60 geöffnet wird. Ich möchte nur, dass die Größe des Terminals geändert wird, wenn Sie myapp ausführen.

2

3 Antworten auf die Frage

2
terdon

Ich habe keinen Mac, ich kann das also nicht ausprobieren, aber es wmctrlist eine UNIX-App, also sollte es auch für OSX funktionieren. Versuchen Sie etwas wie:

 wmctrl -r :ACTIVE: -e 5,-1,-1,660,540 ----------- -- -- -- --- --- | | | | | |---> Window height | | | | |-------> Window width  | | | |-----------> Window Y coordinates | | |--------------> Window X coordinates | |----------------> Gravity |--------------------------> Apply to the active window 

Die Schwerkraft kann eine der folgenden sein ( Quelle ):

  • Nordwesten (1)
  • Norden (2),
  • Nordosten (3),
  • Westen (4),
  • Zentrum (5),
  • Osten (6),
  • Südwesten (7),
  • Süd (8),
  • Südosten (9)
  • Statisch (10).

Eine Schwerkraft von 0 zeigt an, dass der Window Manager die in angegebene Schwerkraft verwenden soll WM_SIZE_HINTS.win_gravity.

@BlueIce Sie werden dafür kein eingebautes System finden. Bash kennt die GUI nicht, warum sollte es so sein? terdon vor 11 Jahren 2
Dies funktioniert nicht unter OS X, da die Terminal-App nicht auf X11 basiert. Daniel Beck vor 11 Jahren 3
Frage entsprechend bearbeitet. Blue Ice vor 11 Jahren 0
2
chepner

There is an ANSI escape sequence that most terminals (include Terminal.app) should accept:

$ echo -e "\e[8;30;60t" 

This will resize your terminal to have 30 rows and 60 columns (swap the 30 and 60 if I've misunderstood the dimensions you want).

As long as this string is written to the terminal, you can use it from anywhere. You can make it part of myapp, or create a shell function as a wrapper:

myapp () { echo -e "\e[8;30;60t" command myapp "$@" } 
Ich suche nach einer xterm-Lösung. Dies scheint bei xterm unter Linux nicht zu funktionieren. Blue Ice vor 11 Jahren 0
Ungerade; Es ist eine Standard-Escape-Sequenz. Dies ist einfacher zu tippen, vielleicht klappt es besser: `resize -s 30 60`. Ich denke, es gibt im Wesentlichen die gleichen Zeichen aus der Antwort. chepner vor 11 Jahren 0
Das scheint auch nicht zu funktionieren. Der einzige Befehl zum Ändern der Größe, den ich in xterm verwenden kann, ist `xterm -geometry 30x60`. Dies öffnet jedoch ein völlig neues Fenster mit diesen Dimensionen. Blue Ice vor 11 Jahren 0
Ich kann mir nur vorstellen, dass die Ressource 'allowWindowOps' auf "false" gesetzt ist und "disallowedWindowOps" enthält "8" oder "SetWinSizeChars", wodurch die Fluchtsequenz nicht funktionieren würde. chepner vor 11 Jahren 0
Wie ändere ich das? Wenn ich den Befehl "resize" ausführen, wird zurückgegeben, dass keine VT100-Sequenzen ausgeführt werden können. Dann habe ich den Befehl 'resize -s' ausprobiert, der nichts anderes tut, als ein Skript anzuzeigen, um die Größe zu ändern, indem `$ COLUMNS` und` $ LINES` zurückgesetzt werden. Ich habe das Skript ausprobiert, was auch nichts tut. Blue Ice vor 11 Jahren 0
0
rfindeis

Sie könnten AppleScript ausprobieren. Hier ein Beispiel zum Einstellen von vim:

#!/bin/sh  # Script runvim.sh osascript <<EOF tell app "Terminal" set number of rows of first window to 34 set number of columns of first window to 96 set custom title of first window to "vim" end tell EOF vim $@ 

Dies ist integriert, aber Sie müssen möglicherweise herausfinden, wie Sie zwischen Terminal und iTerm2 unterscheiden können. Entweder wissen Sie, was Ihre Benutzer verwenden möchten, oder Sie lassen sie auswählen (oder etwas schlaueres :-)).