6 votes

Commande de redimensionnement de LXTerminal et XTerm

Je veux exécuter une commande dans un script bash qui redimensionnera la fenêtre du terminal. Dans xterm

xterm -geometry=30x30

créera un nouveau fenêtre xterm, et

lxterminal --geometry=30x30

créera un nouveau fenêtre lxterminal.

Existe-t-il un moyen de redimensionner l'un ou l'autre des terminaux sans ouvrir une nouvelle fenêtre ? Voici à quoi cela ressemblerait :

if [ $TERMINALTYPE=xterm ]; then
    DASH="-"
else
    DASH="--"
endif

echo -e $TERMINALTYPE" "$DASH"geometry 30x30"

MAIS : S'il existe une commande en une seule ligne qui fonctionne avec l'un ou l'autre des terminaux (séquence d'échappement vt100 peut-être), c'est encore mieux.

6voto

Paul Points 6359

Il y a deux étapes à franchir. Tout d'abord, vous devez demander à xterm d'autoriser cette opération, car par défaut, il ignore les demandes des programmes hébergés pour redimensionner la fenêtre. Ajoutez ceci à votre fichier ~/.Xdefaults :

xterm*allowWindowOps: true

Pour que cela prenne effet, vous devez soit vous déconnecter, soit exécuter :

xrdb ~/.Xdefaults

Puis lancez un nouvel xterm, et dans votre bash script :

echo -ne "\e[8;30;30t"

3voto

user632519 Points 31

Je veux juste partager :

apt-get install xterm

Utilisez la commande de redimensionnement suivante où 20 \= nombre de rangs, 40 \= nombre de colonnes :

resize -s 20 40

Modifiez la valeur des lignes et des colonnes selon vos besoins.

1voto

F. Hauri Points 260

En plus de La réponse correcte de @Paul :

Vous pouvez essayer ceci sans modifier ~/.Xdefaults en courant :

xterm -xrm 'xterm*allowWindowOps: true'

Puis, dans une nouvelle fenêtre :

printf "\e[8;%d;%dt" $[LINES+5] $[COLUMNS+5]

.Xdefaults o .Xresources

En fonction de votre installation, il se peut que vous deviez stocker ceci sur .Xresources 代わりに .Xdefaults .

FICHES

Xrdb ne charge pas de fichiers par lui-même, mais de nombreux environnements de bureau utilisent la fonction xrdb pour charger ~/.Xresources au démarrage de la session pour initialiser la base de données des ressources, en tant que remplacement généralisé de ~/.Xdefaults des fichiers.

Ensuite, après

sed -e '$axterm*allowWindowOps: true' -i.bak .Xresources 
xrdb <.Xresources

Alors...

Quelques bind échantillons

Vous pouvez exécuter ceci ou ajouter à votre .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'

à utiliser respectivement avec : Shift + Right   ,   Shift + Left   ,   Shift + Down   または   Shift + Up

備考 : Comme ceci dans bash bind, ceci fonctionnera dans un environnement de commande interactif (c'est-à-dire pas sous vim ni less , read ou tout travail en cours)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X