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

38

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

LopSae
источник

Ответы:

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"; }
LRI
источник
Это работает только для текущего активного окна терминала / вкладки. Чтобы это работало надежно, получите текущий путь к устройству 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 столбцов.

LHF
источник
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+ / / / )
  • перемещать окна между экранами
  • перемещать окна между пробелами

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

space_balls
источник
Хотя это полезно, но это не относится к вопросу, который задавал спрашивающий.
Эндрю Ферье