Во-первых, пара замечаний о вашем AppleScript только для учебных целей:
- Вам не нужно иметь
tell
команды внутри tell
блока, если они оба посылают команды одному и тому же объекту (т.е. терминалу ). tell
Блок достаточно; пропустите tell
операторы внутри него, которые относятся к терминалу (но оставьте тот, который обращается к системным событиям ), и команды будут отправлены в терминал . - Я бы не стал использовать системные события для создания новых вкладок. С одной стороны, ярлыки могут измениться, или приложение может потерять фокус по какой-то причине и пропустить событие нажатия клавиши. На самом деле, если вы не нацеливаетесь
do script
на Окно 1, а вместо этого оставляете его нецелевым, Терминал пойдет дальше и создаст новую вкладку по своему усмотрению. Так что это устраняет необходимость в нескольких строках кода.
Итак, если вам нужно всего лишь создать несколько вкладок в разных местах, это будет так просто:
-- Launch terminal without creating any windows launch -- Create a bunch of tabs at desired path locations -- then clear the window to neaten its appearance do script "cd ~; clear" do script "cd /; clear" do script "cd /Applications; clear"
(Вы можете заключить все это в tell
блок, предназначенный для Терминала ; я просто установил Редактор сценариев, чтобы он делал это для меня на панели навигации).
Чтобы задать заголовки каждой вкладки, создав все вкладки одновременно, необходимо убедиться, что мы нацелены на правильный объект окна каждой вкладки. Эти дополнительные строки кода прикрепляются сразу после вышеприведенных и называют вкладки «Tab 1», «Tab 2» и т. Д. В том порядке, в котором они появились:
-- Get window ("tab") id's and sort numerically -- with the help of bash functionality set IDs to id of every window set AppleScript's text item delimiters to " " do shell script ({¬ "echo", ¬ IDs, ¬ "| tr ' ' '\n'", ¬ "| sort -n", ¬ "| tr '\n' ' '"} as string) set IDs to the words of result -- Give each tab a new custom title repeat with n from 1 to number of windows set custom title of tab 1 of ¬ window id (item n in IDs) to ¬ {"Tab", n} as string end repeat
Оконные группы
Во-вторых, и, самое главное, поскольку это фактически отвечает на ваш первоначальный вопрос, AppleScript вообще не нужен для достижения того, чего вы хотите. Терминал имеет встроенный способ сохранить группу окон (вкладок), а затем повторно запускать эти окна каждый раз, когда вы запускаете Терминал . Вот как:
- Создайте вкладки, которые вы хотите.
cd
каждая вкладка в нужное место (или выполнить любую команду на вкладках, которые вы хотите). - В меню « Окно» выберите « Сохранить Windows как группу ...» . В появившемся диалоговом окне введите имя для этой группы и выберите, хотите ли вы, чтобы этот набор окон открывался при каждом запуске терминала .
- Теперь они будут. Вы можете сохранить несколько групп окон и получить к ним доступ из меню « Окно », выбрав « Открыть группу окон» .
- Чтобы управлять этими сохраненными группами, перейдите в « Настройки»> «Группы окон», где вы можете удалить те, которые вам больше не нужны.
Единственным недостатком этого является то, что заголовки вкладок не будут устанавливаться автоматически, хотя вы можете заранее определить, какую информацию обычно содержит заголовок каждой вкладки, в разделе « Предпочтения»> «Профили»> «Окно / вкладка» .