Quiero ejecutar un comando en un script bash que cambiará el tamaño de la ventana del terminal. en xterm
xterm -geometry=30x30
creará unnuevoventana xterm, y
lxterminal --geometry=30x30
creará unnuevoventana lxterminal.
¿Hay alguna manera de cambiar el tamaño de cualquiera de los terminales sin abrir una nueva ventana? Así es como se vería:
if [ $TERMINALTYPE=xterm ]; then
DASH="-"
else
DASH="--"
endif
echo -e $TERMINALTYPE" "$DASH"geometry 30x30"
PERO:Si hay un comando que sea de una sola línea y que funcione con cualquiera de los terminales (tal vez la secuencia de escape vt100), entonces es aún mejor.
Respuesta1
Hay dos pasos para esto. Primero, debe decirle a xterm que permita que esto suceda, porque de forma predeterminada ignora las solicitudes de los programas alojados para cambiar el tamaño de la ventana. Añade esto a tu ~/.Xdefaults:
xterm*allowWindowOps: true
Para que esto surta efecto, debes cerrar sesión o ejecutar:
xrdb ~/.Xdefaults
Luego lanza un nuevo xterm y en tu script bash:
echo -ne "\e[8;30;30t"
Respuesta2
Sólo quiero compartir:
apt-get install xterm
Utilice el siguiente comando de cambio de tamaño donde20= número de filas,40= número de columnas:
resize -s 20 40
Cambie el valor de filas y columnas según el requisito.
Respuesta3
Además deLa respuesta correcta de @Pablo:
Puedes probar esto sin editar ~/.Xdefaults
, ejecutando:
xterm -xrm 'xterm*allowWindowOps: true'
Luego, en una nueva ventana:
printf "\e[8;%d;%dt" $[LINES+5] $[COLUMNS+5]
.Xdefaults
o.Xresources
Dependiendo de su instalación, es posible que deba almacenarlo en .Xresources
lugar de .Xdefaults
.
ARCHIVOS
Xrdb no carga ningún archivo por sí solo, pero muchos entornos de escritorio suelen
xrdb
cargar~/.Xresources
archivos al iniciar la sesión para inicializar la base de datos de recursos, como un reemplazo generalizado de~/.Xdefaults
los archivos.
A continuación, después
sed -e '$axterm*allowWindowOps: true' -i.bak .Xresources
xrdb <.Xresources
Entonces...
Algunas bind
muestras
Podrías ejecutar esto oagregar a tu.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'
para usarse con respectivamente: Shift+ Right , Shift+ Left , Shift+ Down o Shift+Up
Nota: Como esto enintentobind, esto funcionará en un entorno de comando interactivo (también conocido como no bajo vim
ni less
, read
ni ningún trabajo en progreso)