Kann ich auf Mavericks automatisch eine App zu einem bestimmten Zeitpunkt starten?

7

Seit Jahren verwende ich iCal, um Apps mithilfe von Alarmen automatisch zu starten. Ich würde ein neues Ereignis in iCal erstellen und den Alarm so einstellen, dass eine App gestartet wird, anstatt eine Benachrichtigung anzuzeigen. Die Option zum Festlegen von Alarmen zum Starten von Apps oder URLs (usw.) scheint in Mavericks aus dem Kalender entfernt worden zu sein, was bedeutet, dass meine automatischen Apps nicht mehr gestartet werden.

Wie kann ich diese Funktionalität in Mavericks zurückgewinnen? Es muss nicht im Kalender sein (obwohl, grrr, ich wünschte, das würde immer noch funktionieren! Ich fand es toll, einen Kalender zu haben, der alle meine automatisch gestarteten Apps und Zeiten auf einen Blick anzeigt!).

Beispiel: Es gibt eine ausgezeichnete Flickr-App namens SuprSetr, die ich jeden Morgen um 3:55 Uhr automatisch starten möchte. Wie?

2oh1
quelle

Antworten:

8

Das Tolle an einer bestimmten Frage ist, dass sie eine bestimmte Antwort erhalten kann.

Zum Beispiel sagte das OP: "Es gibt eine ausgezeichnete Flickr-App namens SuprSetr, die ich jeden Morgen um 3:55 Uhr automatisch starten möchte. Wie?"

Antwort: Speichern Sie Folgendes als com.tjluoma.SuprSetr.plist(oder einen beliebigen Namen, den Sie bevorzugen, der jedoch mit .plist enden sollte) und legen Sie ihn im Ordner ~ / Library / LaunchAgents ab (wobei ~ Ihr Home-Verzeichnis ist):

<?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>

Sobald die Datei vorhanden ist, sollten Sie diesen Befehl in Terminal eingeben:

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

Dann kann die App SuprSetr jeden Tag um 3:55 Uhr gestartet werden. (Hinweis: Wenn der Computer um 3:55 Uhr morgens schläft, wird er ausgeführt, wenn der Computer aufwacht.)

Wenn Sie anhand dieses Beispiels verstanden haben, dass diese plistDatei launchdden Befehl Terminal ausführt , müssen Sie Folgendes ausführen:

/usr/bin/open -a SuprSetr

Zur Stunde '3' und zur Minute '55' sollte es dann einfach sein, diese auf andere Apps zu extrapolieren, die Sie zu anderen Zeiten ausführen möchten.

Wenn Sie diese alle von Hand schreiben möchten, können Sie dies kostenlos tun, aber eine App wie Lingon ist eine gute Wahl (ich würde empfehlen , die Mac App Store-Version nicht zu kaufen, da mir die App etwas gefällt, das mir gefällt Apple wird es in der Welt des Sandboxing nicht mögen, und Sie würden vom Entwickler eine App mit mehr Funktionen erhalten.

Meine persönliche Präferenz ist eine App namens LaunchControl, die kostenlos ausprobiert werden kann. Dann fragt der Entwickler nach etwas Vernünftigem wie 10 US-Dollar, aber es gibt kein DRM, keine Lizenzcodes, sondern er verlässt sich auf das gute alte Ehrensystem. (Ich hoffe, dass die Leute, die es verwenden, dem Vertrauen des Entwicklers in dieses System gerecht werden.)

TJ Luoma
quelle
Siehe auch LaunchD Task Scheduler .
Mike Wills
2

Es sieht so aus, als hätte Apple die integrierte Funktionalität aus dem Kalender entfernt. Es gibt jedoch Anwendungen von Drittanbietern, die Apps zu einem bestimmten Zeitpunkt automatisch starten können.

Versuchen Sie Lingon - es funktioniert in Mavericks ...

Schotte
quelle
1
Ich hasse es, eine App kaufen zu müssen, um etwas zu erreichen, das früher kostenlos und in eine so einfache App wie den Kalender integriert war, aber Lingon sieht so aus, als ob es das ist, was ich will. Tatsächlich hat mich Ihre Antwort zu einigen hervorragenden Informationen über launchd geführt , was nur bestätigt, warum Lingon wahrscheinlich der richtige Weg ist. Vielen Dank!
2oh1
Sicher. Lingon ist jedoch einfach eine GUI, die das einfache Bearbeiten von Startskripten ermöglicht. Wenn Sie möchten, können Sie die .plist-Dateien direkt erstellen. Für ein paar Dollar erleichtert Lingon jedoch das Erstellen und Bearbeiten der .plist-Dateien erheblich. Und eine nette Referenz, die Sie mit re: launchd verlinkt haben.
Scot
2

Die Option zum Öffnen einer URL in iCal wurde in Mountain Lion tatsächlich entfernt. Sie können jetzt jedoch stattdessen Kalenderalarme verwenden:

Mit launchd können Sie eine Liste wie die folgende speichern ~/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>

Dann renne launchctl load ~/Library/LaunchAgents/openmail.plist.

Eine dritte Möglichkeit besteht darin EDITOR=nano crontab -e, eine Zeile wie die folgende auszuführen und hinzuzufügen:

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

open -jgaöffnet eine Anwendung versteckt und normalerweise ohne Fenster zu öffnen. Bei einigen Anwendungen wie Mail und TextEdit wird ein neues Standardfenster erstellt und ausgelöst, wenn die Anwendung ausgeführt wird, jedoch keine sichtbaren Fenster vorhanden sind. Mit pgrep können Sie jedoch überprüfen, ob die Anwendung zuerst ausgeführt wird.

Wenn Sie die Anwendung im Vordergrund öffnen möchten, verwenden Sie einfach open -a.

Lri
quelle
0

Ich hatte genau das gleiche Problem und fand im App Store eine App, die eine grafische Benutzeroberfläche für Launchd bietet. Sie heißt Plisterine .

Mein Anwendungsfall war, Outlook für Mac zu einer bestimmten Zeit zu Mittag zu essen , es eine Stunde lang offen zu halten und es dann wieder zu schließen. Zu diesem Zweck habe ich eine Automator- Anwendung / einen Automator- Workflow erstellt, wie im folgenden Screenshot gezeigt:

Der Automator-Workflow

Sie können die Meldung " Anwendung empfängt Dateien und Ordner als Eingabe " einfach ignorieren, da sie für diesen Workflow nicht benötigt wird.

Ich habe dann mit Plisterine einen neuen Eintrag in Launchd hinzugefügt, damit der Automator-Workflow planmäßig ausgelöst wird (siehe Abbildung unten):

Hinzufügen eines Eintrags zu Launchd in Plisterine

Es funktioniert wie ein Zauber und ist einfach einzurichten.

hoffman
quelle
Eine kleine Ergänzung, hier ist der Link zu Plisterine: itunes.apple.com/us/app/plisterine-launchd-for-rest/id634210019
hoffman