Во-первых, пара замечаний о вашем AppleScript только для учебных целей:
- Вам не нужно иметь команды
tell
внутри tell
блок , если они оба посылать команды на тот же объект (т.е. Terminal). Блок tell
достаточно; опускает заявление tell
внутри него , которые касаются терминала (но сохранить тот , который обращается к системе событий), и команды будут отправлены на терминал.
- Я бы не стал использовать системные события для создания новых вкладок. С одной стороны, ярлыки могут измениться, или приложение может потерять фокус по какой-то причине и пропустить событие нажатия клавиши. Фактически, если вы не нацеливаете свой
do script
на Window 1, а вместо этого оставляете его нецелевым, Terminal продолжит работу и создаст новую вкладку самостоятельно. Так что это устраняет необходимость в нескольких строках кода.
Итак, если вам нужно всего лишь создать несколько вкладок в разных местах, это будет так просто:
-- 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 как группу ...». В появившемся диалоговом окне введите имя для этой группы и выберите, хотите ли вы, чтобы этот набор окон открывался при каждом запуске терминала.
- Теперь они будут. Вы можете сохранить несколько групп окон и получить к ним доступ из меню « Окно », выбрав « Открыть группу окон».
- Чтобы управлять этими сохраненными группами, перейдите в « Настройки»> «Группы окон», где вы можете удалить те, которые вам больше не нужны.
Единственным недостатком этого является то, что заголовки вкладок не будут устанавливаться автоматически, хотя вы можете заранее определить, какую информацию содержит заголовок каждой вкладки в общем, в разделе « Предпочтения»> «Профили»> «Окно / вкладка».