Открытие нового окна/вкладки Terminal.app с определенным профилем из командной строки или AppleScript?

Когда я вхожу в свой Mac, я хочу автоматически открыть новое окно Terminal.app с определенным профилем, скажем Monitor, с командой запуска и несколькими настройками внешнего вида. Я думал, что это будет очень легко сделать с помощью AppleScript или командной строки (через osascript), поэтому я могу добавить сценарий к элементам входа в систему, но после нескольких попыток оказалось, что это не так уж и тривиально.

Мой текущий лучший способ - это следующий AppleScript:

tell application "Terminal"
    set origSettings to default settings
    set default settings to settings set "Monitor"
    activate
    tell application "System Events" to keystroke "n" using command down
    set default settings to origSettings
end tell

Тем не менее, я хочу знать, есть ли более простой способ сделать это, не полагаясь на сценарии пользовательского интерфейса (с системными событиями) или возиться с файлом default settings.

applescript (osascript) для изменения профиля Terminal.app казался многообещающим, но это для тех случаев, когда окно терминала уже открыто. Я понятия не имею, как создать новую вкладку или окно терминала с current settingsуказанным. Команда do script, которая создает новое окно, к сожалению, игнорирует команду запуска, установленную в профиле, что заставляет меня вернуться к сценариям пользовательского интерфейса.

Я также нашел этот сценарий: http://blog.azizlight.me/having-fun-with-applescript-and-terminal-app/ , который снова опирается на сценарии пользовательского интерфейса. Поскольку на некоторых моих машинах используется неанглийская локаль, я предпочитаю использовать нажатия клавиш, а не метки меню.

Ответы (2)

Возможно, я упускаю суть, но не можете ли вы экспортировать профиль в виде .terminalфайла и добавить его в свои элементы входа?

Экспорт:

введите описание изображения здесь

Добавьте экспортированный файл в Элементы входа:

введите описание изображения здесь

Потрясающе, @beroe! Я помню, как в прошлом открывал файл .terminal, который использовался для создания повторяющихся записей профиля, но, по-видимому, такое поведение изменилось, по крайней мере, в последней версии OS X, 10.8 Mavericks. Хотя это не ответ, как добиться этого в AppleScript, я выбираю это как ответ, потому что он фактически решает мою первоначальную проблему. Спасибо!
Рад, что это помогло. Я думаю, что проблема AppleScript будет лучше всего решена другим ответом, связанным с комментариями.
По моему сегодняшнему опыту, это решение действительно создает дублирующиеся профили. Я хотел бы знать способ обойти это, но я не знаю.

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

tell application "Terminal"
    do script "emacs"
    set current settings of selected tab of window 1 to settings set "Grass"
end tell

Если кому-то еще не нужно запускать какую-либо команду запуска, вы можете использовать do script "", чтобы открыть новое окно:

tell application "Terminal"
    do script ""
    set current settings of selected tab of window 1 to settings set "Grass"
end tell

Или вы также можете использовать do script ""при изменении default settings:

tell application "Terminal"
    set old to default settings
    set default settings to settings set "Grass"
    do script ""
    set default settings to old
    activate
end tell
Проблема в do script ""том, что он игнорирует команду запуска, уже введенную в профиль. Кстати, поскольку do scriptвозвращает созданную им вкладку, мы могли бы сократить ее до чего-то вроде: set newTab to do script ...thenset current settings of newTab to ...