Проблема с настройкой границ окна терминала с помощью AppleScript

Проблема, пытающаяся решить

Я использую несколько окон терминала для разработки веб-приложений. У меня будет терминал, открытый для vim, терминал, открытый для gitи терминал, открытый для основных команд файла/каталога. Приложение терминала не запоминает настройки окна, поэтому всякий раз, когда я выхожу из терминала или перезапускаю его, мне приходится вручную изменять размер и положение окон терминала. Я хотел бы автоматизировать этот процесс с помощью AppleScript.

  • 1 окно, большое, занимает левую половину экрана ( vim)
  • 2 окна меньшего размера, расположенные друг над другом и занимающие вторую половину экрана.

Моя попытка решения

tell application "Terminal"

    activate
    set the bounds of the front window to {5, 0, 1000, 950}
    do script "clear" -- opens up the second window
    set the bounds of the front window to {1105, 0, 400, 500}
    -- haven't gotten to third window yet   

end tell

Проблема

Второе окно, созданное с помощью do script "clear", расположено странно. Слева, сверху и по высоте все ведут себя так, как ожидалось. Однако для окна устанавливается минимальная ширина, независимо от значения, переданного в параметре ширины. Это может быть 1000, и он все еще установлен на минимум. Я безуспешно искал в Google, SO, Super User и Ask Different.

Любые советы о том, что я делаю неправильно или что может быть причиной этой проблемы со странной шириной окна, созданного do script "clear"?

Отказ от ответственности

Я новичок в AppleScript. Синтаксис отличается от всего, с чем я когда-либо работал (PHP, VBA, JavaScript), и я почти уверен, что это не лучший и даже не правильный способ делать то, что я хочу. Тем не менее, я недостаточно знаю AppleScript, чтобы действительно сказать, кроме интуиции.

Ответы (1)

Границы окна представляют собой список координат {слева, сверху, справа, снизу}. Вы, вероятно, предполагали, что «400» будет шириной, но это положение правого края окна, а 400 — слева от 1105, поэтому вы получаете окно минимальной ширины. Измените 400 на 1105 плюс желаемую ширину, например, 1505.

Но прежде чем продолжить, у терминала есть лучшее решение для этого: группы окон. Если вы настроите группу окон и сохраните их как группу окон, каждый раз, когда вы будете открывать эту группу, будут создаваться окна с одинаковым макетом и внешним видом.

Окно > Сохранить Windows как группу…

Вы даже можете указать Терминалу открывать выбранную группу окон при запуске:

Терминал> Настройки> Запуск> При запуске откройте:> Группа окон:

(В качестве ярлыка при создании группы окон есть флажок, чтобы сделать ее группой запуска.)

Чтобы автоматически запускать определенные команды в этих окнах, вы можете создать профили пользовательских настроек и указать команду с помощью

Терминал > Настройки > Настройки > [профиль] > Оболочка > Запуск > Выполнить команду:

затем создайте каждое окно с соответствующим профилем.

Идя дальше, в Mac OS X Lion 10.7 вы можете заставить группы окон автоматически восстанавливать команды без создания пользовательских профилей, создавая терминалы с помощью

Оболочка > Новая команда

вместо запуска команды внутри оболочки терминала. При создании группы окон можно поставить галочку «Восстановить все команды». (По умолчанию он восстанавливает небольшой набор «безопасных» команд, но вы должны явно указать ему, если хотите, чтобы он повторно запускал все команды при открытии группы.)

Кроме того, Lion Terminal поддерживает возобновление работы и автоматически восстанавливает все ваши окна каждый раз, когда вы открываете терминал. Он даже восстановит «безопасные» команды для терминалов, созданных с помощью New Command.