Можно ли изменить размер окна терминала с помощью команды терминала?


38

Чтобы я мог изменить размер окна до определенного размера из терминала.

Ответы:


58

Да. Терминал поддерживает escape-последовательности для управления окнами, включая размер и положение, наложение и минимизацию. Размеры могут быть выражены в пикселях или символах. Подробности см. В разделе « Последовательности управления Xterm» (ищите « Управление окнами»; если вы не знакомы с нотацией, «CSI» означает «Представляющий последовательность управления», то есть ESC [).

Например, эта команда оболочки установит окно в 100x50 символов:

printf '\e[8;50;100t'

Сверните окно на несколько секунд, затем восстановите его:

printf '\e[2t' && sleep 3 && printf '\e[1t'

Переместите окно в верхний / левый угол дисплея:

printf '\e[3;0;0t'

Увеличьте окно:

printf '\e[9;1t'

Переместить окно вперед (без изменения фокуса клавиатуры):

printf '\e[5t'

Включение управляющих последовательностей в эмуляторах терминала

Некоторые эмуляторы терминала игнорируют эти последовательности управления по умолчанию и требуют настройки для их включения.

Чтобы включить их в XTerm , установите для следующего ресурса значение true:

allowWindowOps

Чтобы включить их в iTerm2 , отмените выбор следующего предпочтения:

Предпочтения> Профили> [профиль]> Терминал> Отключить изменение размера окна, инициированного сеансом


Это просто идеально!
LopSae

2
Отныне ты мой бог!
d12frosted

2
Похоже, что это не работает на Йосемити с iterm2
Jistanidiot

Это прекрасно работает, но, похоже, Терминал не принимает изменения размеров, которые делают окно только частично видимым на экране. Я только что попробовал printf '\ e [8; 100; 100t', и это было усечено до 79x100, как раз то, что могло бы подойти. Моя проблема в том, что мне нужно обойти мышь только для этого случая увеличения Терминала за пределы экрана ...
тел.

1
Это также работает с iTerm2.
TextGeek

10

Вы всегда можете использовать AppleScript:

setwidth() { osascript -e "tell app \"Terminal\" to tell window 1
set b to bounds
set item 3 of b to (item 1 of b) + $1
set bounds to b
end"; }

Это работает только для текущего активного окна терминала / вкладки. Чтобы это работало надежно, получите текущий путь к устройству tty и найдите соответствующую вкладку терминала.
Крис Пейдж

Смотрите также superuser.com/a/576357
LHF

10

Использование /usr/X11/bin/resize.

resize -s 30 80 даст вам 30 строк и 80 столбцов.

resize -s 30 0 даст вам 30 строк и полных столбцов.

resize -s 0 80 даст вам полные строки и 80 столбцов.


1
Это решение не ограничивается MacOS. Он основан на терминалах, поэтому он должен работать на всех терминалах. Я использую это, чтобы изменить размер окон PuTTY в Windows, где запущены оболочки bash с TERM = xterm.
DrStrangepork

4
Похоже, это не работает на Yosemite в iterm2.
Джистанидиот

Это работает для меня с Apple Terminal, но не iTerm2. Однако отправка escape-последовательности \ e [8; 24; 80t работает с обоими.
TextGeek

1
@KrishenGreenwell См. Документацию iTerm2. По умолчанию он игнорирует эти управляющие последовательности. Есть предпочтение контролировать, игнорируются ли они.
Крис Пейдж

1
Это решение раньше работало, но я думаю, что команды X11 пропали. Возможно, их можно установить, установив X11, но я не хочу устанавливать X11 только для того, чтобы получить команду resize.
Габриэль

-2

На самом деле, вы знаете, перемещение мыши с помощью мыши с помощью мыши изменяет размеры.

Я использую это приложение SizeUp в течение очень долгого времени. Он в основном изменяет размеры любого окна приложения с помощью вашей клавиатуры.

Вы можете сделать следующее (мои пользовательские команды клавиатуры ниже):

  • сделать окно полноэкранным ( control+ option+ command+ m)
  • переместить окно размером 1/2 окна влево или вправо ( control+ option+ command+ / )
  • переместить окно размером 1/4 экрана в любой угол ( control+ option+ shift+ / / / )
  • перемещать окна между экранами
  • перемещать окна между пробелами

Я думаю, что это может помочь, а также помочь с другим управлением окнами.


Хотя это полезно, но это не относится к вопросу, который задавал спрашивающий.
Эндрю Ферье
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.