3

Я знаю, что вы можете запускать приложения при запуске на Mac, но можете ли вы вместо этого запустить действие Automator, службу, сценарий оболочки или AppleScript при запуске?

Я также знаю, что вы можете сохранить все это как приложение, но я не хочу, чтобы оно открывалось в доке.

2 ответа2

7

Прежде всего, логин отличается от запуска. В этом ответе предполагается, что вы имеете в виду вход в систему, поскольку вы, очевидно, имеете в виду возможность запуска программ в соответствии с настройками системы »« Пользователи и группы ».


Запустите Automator сценарии с помощью командной строки утилиты automator и AppleScripts использования osascript Их man страницы объясняют использование подробно.

Вы можете установить хук входа в систему, но он устарел и устарел в пользу launchd .

Вы можете создать launchd задания, поместив файлы конфигурации XML в каталог ~/Library/LaunchAgents . Этот сайт содержит довольно мало минимальных примеров, и вы можете просмотреть /System/Library/LaunchAgents примеры предоставленных системой заданий launchd . Вам нужна директива RunAtLoad для launchd .


Вы по-прежнему можете сохранять свои сценарии AppleScripts и Automator как приложения и запускать их как таковые. Чтобы скрыть их от Dock, отредактируйте их файл Contents/Info.plist и добавьте директиву LSUIElement как описано, например, здесь. Это скроет значок и меню Dock.

2

Вы можете сохранить список свойств как ~/Library/LaunchAgents/some.label.plist .

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN
http://www.apple.com/DTDs/PropertyList-1.0.dtd>
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>some.label</string>
    <key>ProgramArguments</key>
    <array>
        <string>automator</string>
        <string>/path/to/example.workflow</string>
        <!-- <string>osascript</string>
        <string>/path/to/example.scpt</string> -->
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

Сначала его нужно загрузить, запустив launchctl load ~/Library/LaunchAgents/some.label.plist или выйдя из системы и вернувшись один раз.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .