Чи можна змінити вікно терміналу за допомогою команди Terminal?


37

Щоб я міг змінити розмір вікна до певного розміру з терміналу.

Відповіді:


55

Так. Термінал підтримує евакуаційні послідовності для керування вікнами, включаючи розміри та положення, шари та мінімізацію. Розміри можуть бути виражені в пікселях або символах. Деталі див. У розділі Керування послідовностей 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 , встановіть такий ресурс як істинний:

enableWindowOps

Щоб увімкнути їх у iTerm2 , зніміть позначку з наступних параметрів:

Налаштування> Профілі> [профіль]> Термінал> Вимкнути зміни розміру вікна, розпочатого сеансом


Це просто ідеально!
LopSae

2
Відтепер ти мій бог!
d12frosted

2
Схоже, це не працює на Йосеміті з iterm2
Jistanidiot

Це чудово працює, але, здається, Terminal не приймає зміни розмірів, які б зробили вікно лише частково видимим на екрані. Я щойно спробував printf '\ e [8; 100; 100t', і це скорочено до 79x100, саме те, що могло бути придатним. Моя проблема полягає в тому, що мені потрібно обійти мишу саме для цього випадку збільшення терміналу за межами екрану ...
phs

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
Схоже, це не працює на Йосеміті в iterm2.
Jistanidiot

Це працює для мене з Apple Terminal, але не iTerm2. Однак надсилання послідовності відходу \ e [8; 24; 80t працює з обома.
TextGeek

1
@KrishenGreenwell Дивіться документацію на iTerm2. За замовчуванням він ігнорує ці контрольні послідовності. Є перевагу контролювати, чи їх ігнорують.
Кріс Пейдж

1
Це рішення використовувалося для роботи, але, думаю, команди X11 вже немає. Можливо, їх можна встановити, встановивши X11, але я не хочу встановлювати X11 лише для того, щоб мати команду зміни розміру.
Габріель

-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.