Ich möchte einen Befehl in einem Bash-Skript ausführen, der die Größe des Terminalfensters ändert. In xterm
xterm -geometry=30x30
wird eineneuxterm-Fenster und
lxterminal --geometry=30x30
wird eineneulxterminal-Fenster.
Gibt es eine Möglichkeit, die Größe eines Terminals zu ändern, ohne ein neues Fenster zu öffnen? So würde es aussehen:
if [ $TERMINALTYPE=xterm ]; then
DASH="-"
else
DASH="--"
endif
echo -e $TERMINALTYPE" "$DASH"geometry 30x30"
ABER:Wenn es einen Befehl gibt, der aus einem schönen Einzeiler besteht und mit beiden Terminals funktioniert (vielleicht die Escape-Sequenz von vt100), ist das sogar noch besser.
Antwort1
Dazu sind zwei Schritte erforderlich. Zunächst müssen Sie xterm anweisen, dies überhaupt zuzulassen, da es standardmäßig Anfragen von gehosteten Programmen zur Größenänderung des Fensters ignoriert. Fügen Sie Folgendes zu Ihrer Datei ~/.Xdefaults hinzu:
xterm*allowWindowOps: true
Damit dies wirksam wird, müssen Sie sich entweder abmelden oder Folgendes ausführen:
xrdb ~/.Xdefaults
Starten Sie dann ein neues Xterm und geben Sie in Ihrem Bash-Skript Folgendes ein:
echo -ne "\e[8;30;30t"
Antwort2
Ich möchte nur Folgendes mitteilen:
apt-get install xterm
Verwenden Sie den folgenden Größenänderungsbefehl, wobei20= Anzahl der Zeilen,40= Anzahl der Spalten:
resize -s 20 40
Ändern Sie den Wert von Zeilen und Spalten je nach Bedarf.
Antwort3
Zusätzlich zu@Pauls richtige Antwort:
Sie können dies ohne Bearbeitung versuchen ~/.Xdefaults
, indem Sie Folgendes ausführen:
xterm -xrm 'xterm*allowWindowOps: true'
Dann in einem neuen Fenster:
printf "\e[8;%d;%dt" $[LINES+5] $[COLUMNS+5]
.Xdefaults
oder.Xresources
Abhängig von Ihrer Installation müssen Sie dies möglicherweise auf .Xresources
statt speichern .Xdefaults
.
DATEIEN
Xrdb lädt selbst keine Dateien, aber viele Desktopumgebungen
xrdb
laden~/.Xresources
Dateien beim Starten einer Sitzung, um die Ressourcendatenbank zu initialisieren, als allgemeinen Ersatz für~/.Xdefaults
Dateien.
Dann danach
sed -e '$axterm*allowWindowOps: true' -i.bak .Xresources
xrdb <.Xresources
Dann...
Einige bind
Beispiele
Sie können dies ausführen oderhinzufügen zu Ihrem.bashrc
:
# Some bind for 'Shift' + <direction> key and allowWindowOps resource
bind -x '"\e[1;2C"':'printf "\e[8;%d;%dt" $LINES $((COLUMNS+5))'
bind -x '"\e[1;2D"':'printf "\e[8;%d;%dt" $LINES $((COLUMNS-5))'
bind -x '"\e[1;2B"':'printf "\e[8;%d;%dt" $((LINES+3)) $COLUMNS'
bind -x '"\e[1;2A"':'printf "\e[8;%d;%dt" $((LINES-3)) $COLUMNS'
zu verwenden mit: Shift+ Right , Shift+ Left , Shift+ Down oder Shift+Up
Notiz: Da dies inSchlagbinden, dies funktioniert in einer interaktiven Befehlsumgebung (also nicht unter vim
„nor“ less
oder read
in Arbeit)