Команда LXTerminal и XTerm Resize

Я хочу выполнить команду в скрипте 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) это даже лучше.

4
задан 31 March 2013 в 08:31

3 ответа

Просто хочу поделиться:

apt-get install xterm

Используйте следующую команду изменения размера, где 20 = нет строк, 40 = нет столбцов:

resize -s 20 40

Измените значение строк и столбцов в соответствии с требованием.

0
ответ дан 31 March 2013 в 08:31

Есть два шага к этому. Во-первых, вам нужно указать xterm, чтобы это вообще происходило, потому что по умолчанию он игнорирует запросы размещенных программ изменить размер окна. Добавьте это к своим ~ / .Xdefaults:

xterm*allowWindowOps: true

Чтобы это вступило в силу, вы должны либо выйти из системы, либо выполнить:

xrdb ~/.Xdefaults

Затем запустите новый xterm и в вашем скрипте bash:

echo -ne "\e[8;30;30t"
0
ответ дан 31 March 2013 в 08:31

В дополнение к @правильному ответу Пола:

Вы можете попробовать это, не редактируя ~/.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+Вверх

Примечание: поскольку это в привязке , это будет работать в интерактивной командной среде (то есть не в vim ни меньше, прочитано или какие-либо незавершенные работы)

1
ответ дан 11 May 2020 в 14:38

Другие вопросы по тегам:

Похожие вопросы: