Команда изменения размера LXTerminal и XTerm

Команда изменения размера LXTerminal и XTerm

Я хочу выполнить команду в скрипте bash, которая изменит размер окна терминала. В xterm

xterm -geometry=30x30

создастновыйокно xterm и

lxterminal --geometry=30x30

создастновыйокно lxterminal.

Есть ли способ изменить размер любого терминала, не открывая новое окно? Вот как это будет выглядеть:

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

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

НО:Если есть хорошая однострочная команда, которая будет работать с любым терминалом (например, escape-последовательность vt100), то это еще лучше.

решение1

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

xterm*allowWindowOps: true

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

xrdb ~/.Xdefaults

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

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

решение2

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

apt-get install xterm

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

resize -s 20 40

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

решение3

В дополнение кПравильный ответ @Paul:

Вы можете попробовать это без редактирования ~/.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+ Right   ,   Shift+ Left   ,   Shift+ Down   или   Shift+Up

Примечание: Как это вbind, это будет работать в интерактивной командной среде (т.е. не в vimnor lessили readкакой-либо незавершенной работе)

Связанный контент