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?
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?
Esistono numerosi approcci che puoi adottare.
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
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.
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:
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
.
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à .