Ви впевнені можете. Я написав AppleScript деякий час тому, щоб виконати стомлююче завдання відкриття вікна Терміналу в кожному просторі.
Більшість прикладів в Інтернеті зрештою використовують AppleScript для створення натискань на клавіші. Наприклад, якщо ви налаштували його так, що "control-2" переносить вас у пробіл 2 (це можна встановити в панелі "клавіатура"), можна скористатися наступним AppleScript:
tell application "System Events"
tell process "Finder"
keystroke "2" using control down --switches to space 2
end tell
end tell
щоб змінити на пробіл 2. Отже, мій скрипт, який відкриває вікно Терміналу в кожному просторі, працює так:
tell application "System Events"
tell process "Finder"
keystroke "1" using control down --switches to space 1
end tell
tell process "Terminal"
activate
keystroke "t" using command down --new terminal tab
end tell
tell process "Finder"
keystroke "2" using control down --switches to space 2
end tell
...etc...
end tell
Зрозуміло, ви можете доручити програмам, відмінним від терміналу, відкривати вікна у заданому просторі.
Ви можете запустити не запущений додаток з do shell script "open -a application_name"
.
Проблема з цим підходом полягає в тому, що вона повністю залежить від відправки натискань клавіш, де їх можна надсилати занадто швидко, в кінцевому підсумку вони ставляться в чергу, і в кінцевому рахунку виконують в неправильному порядку. Щоб запобігти цьому, необхідно додати затримку (наприклад, delay 0.1
) після кожного натискання на клавіші, що запускає весь сценарій.
Або, наприклад, якщо ви запускаєте програму, це може зайняти деякий час для ініціалізації, і воно відкриє її вікна в будь-якому активному місці після того, як він отримає так далеко (на відміну від того, який простір був активним, коли ви вперше запустили програму ). Таким чином, затримка повинна бути встановлена належним чином кожного разу, а іноді може бути кілька секунд. Ще гірше, через дисперсії завантаження системи, час може навіть не бути послідовним від виконання до виконання, змушуючи вас використовувати затримку досить довго, щоб врахувати найгірший сценарій. (Наприклад, якщо ви запускаєте програму, яка може тривати до 5 секунд від моменту виконання, щоб відобразити перше вікно, потрібно затримати 5 секунд, перш ніж перейти на наступний простір і перейти далі.)
На жаль, я не бачив іншого підходу до простору комутації. Сподіваюся, хтось може прийти і забезпечити кращий спосіб перемикання, ніж надсилання натискань на клавіші, або, можливо, спосіб зробити скрипт чекати без довільної затримки.
Тим не менш, якщо ви не заперечуєте, що ваш сценарій за кілька секунд отримає ваше середовище і працює, ви повинні мати можливість легко послідовність серії запусків програм або вікон і пробілів виділення з тим, що я надав.