Я хочу выполнить команду в скрипте bash, которая изменит размер окна терминала. В xterm
xterm -geometry=30x30
создаст новое окно xterm, а
lxterminal --geometry=30x30
создаст [ 1111] новое окно терминала.
Есть ли способ изменить размер любого терминала, не открывая новое окно? Вот как это выглядело бы:
if [ $TERMINALTYPE=xterm ]; then
DASH="-"
else
DASH="--"
endif
echo -e $TERMINALTYPE" "$DASH"geometry 30x30"
НО: Если есть команда с хорошей однострочностью, которая будет работать с любым терминалом (возможно, escape-последовательность vt100) это даже лучше.
Просто хочу поделиться:
apt-get install xterm
Используйте следующую команду изменения размера, где 20 = нет строк, 40 = нет столбцов:
resize -s 20 40
Измените значение строк и столбцов в соответствии с требованием.
Есть два шага к этому. Во-первых, вам нужно указать xterm, чтобы это вообще происходило, потому что по умолчанию он игнорирует запросы размещенных программ изменить размер окна. Добавьте это к своим ~ / .Xdefaults:
xterm*allowWindowOps: true
Чтобы это вступило в силу, вы должны либо выйти из системы, либо выполнить:
xrdb ~/.Xdefaults
Затем запустите новый xterm и в вашем скрипте bash:
echo -ne "\e[8;30;30t"
Вы можете попробовать это, не редактируя ~/.Xdefaults
, запустив:
xterm -xrm 'xterm*allowWindowOps: true'
Затем в новом окне:
printf "\e[8;%d;%dt" $[LINES+5] $[COLUMNS+5]
.Xdefaults
или .Xresources
В зависимости от вашей установки вам может потребоваться сохранить это в .Xresources
вместо .Xdefaults
.
ФАЙЛЫ
Xrdb не загружает файлы самостоятельно, но многие среды рабочего стола используют
xrdb
для загрузки файлов~/.Xresources
при запуске сеанса для инициализации базы данных ресурсов. , в качестве универсальной замены для файлов~/.Xdefaults
.
Затем после
sed -e '$axterm*allowWindowOps: true' -i.bak .Xresources
xrdb <.Xresources
Затем...
bind
Вы можете запустить это или добавить в свой .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'
для использования соответственно: Shift+Вправо , Shift+Влево , Shift+Вниз или Shift+Вверх
Примечание: поскольку это в привязке bash, это будет работать в интерактивной командной среде (то есть не в vim
ни меньше
, прочитано
или какие-либо незавершенные работы)