5

Есть ли способ сделать запуск приложения через n минут после загрузки? Есть несколько приложений, которые я хочу запустить, но не во время запуска (используя элементы входа в систему), потому что это замедляет время загрузки (например, Dropbox). В идеале я могу сделать это через 10 минут после запуска. Спасибо!

3 ответа3

5

Не напрямую, но вы можете сделать то же самое, запустив сценарий, который будет ждать десять минут, а затем запустить приложение. Например, с AppleScript:

delay 600 --600 seconds == ten minutes

tell application "Dropbox" to activate
tell application "Something Else" to activate

Откройте редактор AppleScript в /Applications/Utilities и введите его в. Затем сохраните его как приложение и добавьте это приложение в элементы входа.

Это запустит приложения через десять минут после входа в систему, а не после запуска, но ваш вопрос предполагает, что вы все равно автоматически входите при запуске. Запуск приложений Mac с графическим интерфейсом при запуске, как правило, не работает.

[править] Согласно предложению Даниэля Бека, вот способ сделать это молча:

Создайте AppleScript, описанный выше, но сохраните его как скрипт. Затем создайте список свойств Launchd. Если вы установили инструменты разработки для Mac OS X, вы можете использовать редактор списков свойств, который входит в их состав, или вы можете использовать текстовый редактор (так как это XML). Создайте следующее:

<?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.meaningful.name</string>

    <key>OnDemand</key>
    <false/>

    <key>ProgramArguments</key>
    <array>
        <string>osascript</string>
        <string>/path/to/your/applescript.scpt</string>
    </array>

    <key>KeepAlive</key>
    <false/>
</dict>
</plist>

Сохраните это в ~/Library/LaunchDaemons/some.meaningful.name.plist . Затем, когда вы войдете в систему, ваш AppleScript будет запущен, хотя он не предоставит значок на панели, который позволит вам отменить.

2

Ответ Скотта, к сожалению, не работает на более новых версиях OS X. Версия ниже работала для меня на Yosemite.

Во-первых, удалите приложение из элементов входа в систему (Системные настройки -> Пользователи и группы). Но даже если вы сделаете это, некоторые приложения (например, Dropbox) снова добавят себя в элементы входа. Таким образом, вы также должны отключить автозапуск в вашем приложении.

Затем, как написал Скотт, создайте скрипт AppleScript, например, такой:

delay 600 --600 seconds == 10 minutes

tell application "Dropbox" to activate
tell application "Something Else" to activate

Теперь вам нужно создать Launch Agent - просто файл с расширением plist - в ~/Library/LaunchAgents/ . Имя может быть, например, com.yourname.delayed.start . (Не забудьте добавить .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>name</string>

    <key>ProgramArguments</key>
    <array>
        <string>osascript</string>
        <string>/path/to/your/applescript.scpt</string>
    </array>

    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

name (значение Label) должно совпадать с именем файла (но без расширения - .plist)

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

0

Есть приложение под названием Soluto, которое (помимо прочего) позволит вам отложить запуск элемента. https://www.soluto.com/

Он также покажет вам полный список элементов автозагрузки и даст рекомендации для каждого:

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

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