Как я могу автоматически запустить AppleScript при запуске Safari.app? - PullRequest
0 голосов
/ 16 января 2019

По сути, я хочу, чтобы каждый раз при запуске Safari запускался пользовательский .applescript.

Я пытался добавить скрипт в папку "~ / Library / Scripts / Applications / Safari", но, похоже, это не происходит автоматически.

В качестве обходного пути я, вероятно, могу просто написать AppleScript, который одновременно запускает Safari и запускает мой пользовательский материал. Я просто хотел проверить, есть ли более чистый способ сделать это.

1 Ответ

0 голосов
/ 16 января 2019

Помещение содержимого в папку ~ / LibraryScripts / Applications только делает их доступными, когда конкретное приложение активно.

В дополнение к вашему псевдониму, который запускает скрипт и Safari, вы можете использовать AppleScriptObj-C в фоновом приложении (возможно, через элементы входа в систему), который регистрируется для NSWorkspaceDidLaunchApplicationNotification уведомлений, чтобы получить имена приложений как они запущены. Это также имеет преимущество в том, что Safari запускается не из вашего псевдонима, например по ссылкам на различные документы (Mail, PDF и т. Д.):

use framework "Foundation"

my addObserver:me selector:"appLaunchNotification:" |name|:(current application's NSWorkspaceDidLaunchApplicationNotification) object:(missing value)

on appLaunchNotification:notification -- an application was launched
  # notification's userInfo contains the application that was launched
  set applicationInfo to NSWorkspaceApplicationKey of notification's userInfo -- NSRunningApplication
  set appName to (localizedName of applicationInfo) as text
  -- do your thing depending on appName
end appLaunchNotification:
...