Могу ли я автоматически запускать приложение в определенное время на Mavericks?

В течение многих лет я использую iCal для автоматического запуска приложений с помощью сигналов тревоги. Я бы создал новое событие в iCal и установил будильник на запуск приложения, а не на отображение уведомления. Параметр установки сигналов для запуска приложений или URL-адресов (и т. д.), по-видимому, был удален из Календаря в Mavericks, что означает, что мои автоматические приложения больше не запускаются.

Как я могу вернуть эту функциональность в Mavericks. Это не обязательно должно быть в календаре (хотя, гррр, я бы хотел, чтобы это все еще работало! Мне нравилось иметь календарь, который сразу показывал все мои автоматически запускаемые приложения и время!).

Пример: есть отличное приложение Flickr под названием SuprSetr, которое я хотел бы автоматически запускать каждое утро в 3:55. Как?

Ответы (4)

Самое замечательное в конкретном вопросе то, что на него можно дать конкретный ответ.

Например, ОП сказал: «Есть отличное приложение Flickr под названием SuprSetr, которое я хотел бы автоматически запускать каждое утро в 3:55. Как?»

Ответ: Сохраните следующее как com.tjluoma.SuprSetr.plist(или любое другое имя, которое вы предпочитаете, но оно должно заканчиваться на .plist) и поместите его в папку ~/Library/LaunchAgents (где ~ — ваш домашний каталог):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>AbandonProcessGroup</key>
    <true/>
    <key>Disabled</key>
    <false/>
    <key>Label</key>
    <string>com.tjluoma.SuprSetr</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/bin/open</string>
        <string>-a</string>
        <string>SuprSetr</string>
    </array>
    <key>StartCalendarInterval</key>
    <array>
        <dict>
            <key>Hour</key>
            <integer>3</integer>
            <key>Minute</key>
            <integer>55</integer>
        </dict>
    </array>
</dict>
</plist>

И затем, как только файл будет на месте, вы должны ввести эту команду в Терминале:

launchctl load ~/Library/LaunchAgents/com.tjluoma.SuprSetr.plist

Тогда он будет готов к запуску приложения SuprSetr каждый день в 3:55. (Примечание: если компьютер спит в 3:55, он запустится, когда компьютер проснется.)

Из этого конкретного примера, как только вы поймете, что этот plistфайл делает, это говорит launchdзапустить команду терминала:

/usr/bin/open -a SuprSetr

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

Теперь, если вы хотите написать все это вручную, вы можете сделать это бесплатно, но такое приложение, как Lingon , является хорошим выбором (я бы рекомендовал не покупать версию Mac App Store, так как мне кажется, что это приложение Apple не понравится мир песочницы, и вы получите более многофункциональное приложение от разработчика.

Я лично предпочитаю приложение под названием LaunchControl , которое можно попробовать бесплатно, а затем разработчик просит что-то разумное, например, 10 долларов США, но без DRM, без лицензионных кодов, а вместо этого полагается на старую добрую систему чести. (Я надеюсь, что люди, которые ее используют, оправдают веру разработчиков в эту систему.)

Похоже, Apple удалила встроенные функции из Календаря. Однако существуют сторонние приложения, которые могут автоматически запускать приложения в указанное время.

Попробуйте Lingon - он работает в Mavericks...

Я ненавижу покупать приложение для выполнения чего-то, что раньше было бесплатным и встроено в такое базовое приложение, как Календарь, но похоже, что Lingon — это то, что мне нужно. Фактически, ваш ответ привел меня к отличной информации о launchd , которая только подтверждает, почему Lingon, вероятно, является правильным выбором. Спасибо!
Конечно. Однако Lingon — это просто графический интерфейс, который позволяет легко редактировать сценарии запуска. Если вы хотите, вы можете создать файлы .plist напрямую. Однако за несколько долларов Lingon значительно упрощает создание и редактирование файлов .plist. И хорошая ссылка, которую вы связали с re: launchd.

Возможность открытия URL-адреса в iCal была фактически удалена в Mountain Lion, но вместо этого вы можете использовать будильники Календаря:

Используя launchd , вы можете сохранить такой plist, например ~/Library/LaunchAgents/openmail.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>openmail</string>
  <key>ProgramArguments</key>
  <array>
    <string>bash</string>
    <string>-c</string>
    <string>pgrep -x Mail||open -jga Mail</string>
  </array>
  <key>StartCalendarInterval</key>
  <dict>
    <key>Hour</key>
    <integer>3</integer>
    <key>Minute</key>
    <integer>55</integer>
  </dict>
</array>
</plist>

Тогда беги launchctl load ~/Library/LaunchAgents/openmail.plist.

Третий вариант — запустить EDITOR=nano crontab -eи добавить такую ​​строку:

55 3 * * * pgrep -x Mail||open -jga Mail

open -jgaоткрывает приложение, скрытое и обычно без открытия окон. Для некоторых приложений, таких как Mail и TextEdit, он создает и открывает новое окно по умолчанию, если приложение работает, но не имеет видимых окон, но вы можете использовать pgrep, чтобы проверить, запущено ли приложение первым.

Если вы хотите открыть приложение на переднем плане, используйте просто open -a.

У меня была точно такая же проблема, и я нашел приложение в магазине приложений, которое предоставляет графический пользовательский интерфейс для Launchd, оно называется Plisterine .

Мой вариант использования заключался в том, чтобы запустить Outlook для Mac в определенное время, оставить его открытым на один час, а затем снова закрыть. Для этого я создал приложение/рабочий процесс Automator , как показано на скриншоте ниже:

Рабочий процесс Автоматизатора

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

Затем я просто добавил новую запись в Launchd с помощью Plisterine , чтобы рабочий процесс Automator запускался по расписанию, см. снимок экрана ниже:

Добавление записи на Launchd в Plisterine

Он работает как шарм и прост в настройке.

Небольшое дополнение, вот ссылка на Plisterine: itunes.apple.com/us/app/plisterine-launchd-for-rest/id634210019