Aprire un'applicazione periodicamente in Mac OSX

1

Voglio aprire un'applicazione GUI (molto probabilmente basata su Electron) periodicamente su un Mac Book. Il periodo verrà configurato (giornaliero, ogni ora ecc.) All'interno dell'applicazione. Come potrei fare per ottenere questo?

    
posta Prathik Rajendran M 03.03.2018 - 07:07
fonte

2 risposte

2

Esistono numerosi approcci che puoi adottare.

launchd o Launcher di terze parti

Puoi utilizzare strumenti come launchd integrati in macOS o strumenti di terze parti come Power Manager (che ho scritto, quindi sentitevi liberi di farmi domande sul suo utilizzo):

PowerManagerincludeun'attivitàchecopre Come pianificare un'applicazione da avviare su Mac OS X .

Preferisci launchd su cron

Probabilmente vuoi evitare cron perché non funziona nella sessione grafica dell'utente corrente . cron è valido per gli strumenti e gli script da riga di comando, ma meno adatto alle applicazioni grafiche per Mac.

AppleScript e calendario

Una semplice applicazione AppleScript combinata con l'Open File di un evento del calendario come allarme può essere sufficiente. Lo snippet di AppleScript seguente aprirà un'applicazione specificata e la porterà in primo piano:

tell application "My Electron Application" to activate

Queste domande correlate sono specifiche:

risposta data 03.03.2018 - 10:51
fonte
0

Launchd .plist file

È possibile creare un file plist che descriva il lavoro che deve essere eseguito da launchd a intervalli che è possibile definire nel plist. C'è una terminologia che è più facile da imparare leggendo semplicemente un altro file plist, come quello che ho scritto qui sotto.

Dopo averlo fatto, puoi spostare il file plist in ~/Library/LaunchAgents , che eseguirà il lavoro con il tuo nome utente.

Infine, recupera il daemon launchd in load del tuo file di configurazione, che avvierà il lavoro:

launchctl load chri.sk.launchd.plist

Da quel momento in poi, il lavoro specificato nel file plist verrà eseguito agli intervalli definiti e continuerà a essere eseguito per sempre o fino a quando unload :

launchctl unload chri.sk.launchd.plist

Si avvierà automaticamente ad ogni riavvio del sistema e si riavvierà se verrà mai spento.

    <?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>Label</key>
        <string>chri.sk.launchd</string>
        <key>ProgramArguments</key>
        <array>
            <string>/usr/bin/open</string>
            <string>-a</string>
            <string>TextEdit</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>KeepAlive</key>
        <true/>
        <key>Nice</key>
        <integer>1</integer>
        <key>StartInterval</key>
        <integer>60</integer>
        <key>StandardErrorPath</key>
        <string>/Users/CK/Documents/launchd.err.txt</string>
        <key>StandardOutPath</key>
        <string>/dev/null</string>
    </dict>
    </plist>

Questo apre TextEdit ogni 60 secondi. Qui è una guida piuttosto utile sulla definizione degli intervalli.

Tutti gli errori vengono scritti nel percorso del file specificato da StandardErrorPath .

Rendi uguale il nome del file e il valore label . La convenzione di denominazione di Apple consiglia di utilizzare un identificatore di hostname inverso, ma in assenza di un nome di dominio che appartiene a te, potresti semplicemente utilizzare qualcosa come surname.firstname.jobtitle .

La pagina man di launchd.plist definisce tutte le chiavi dell'elenco delle proprietà e spiega che cosa fanno ciascuna. Vai a Terminal e digita man launchd.plist .

AppleScript

    property hour : 3600
    property day : 86400
    property RunEvery : day
    property AppName : "An Application"

    on run
        idle
    end run

    on idle
        tell application named AppName to activate
        return RunEvery
    end idle

    on quit
        continue quit
    end quit

Se salvi AppleScript come applicazione stay-open , quindi eseguilo, rimarrà aperto ed eseguirà i comandi idle ogni giorno. Al momento, per impedire che questo script continui, dovresti terminarlo dal dock o Monitoraggio attività .

    
risposta data 03.03.2018 - 11:05
fonte

Leggi altre domande sui tag