Esecuzione di script tramite launchd senza prompt fastidiosi

2

Ho un applecript che controlla la batteria del MacBook e forza la sospensione quando raggiunge un certo livello, dopo aver visualizzato un conto alla rovescia di 60 secondi.

L'ho configurato con successo per l'esecuzione in background tramite launchd, ogni 30 secondi, come script, ma ciò provoca un'icona di rimbalzo fastidiosa sul dock.

Quindi, ho salvato lo script come un'app e ora l'icona del dock non sta più saltando, ma se sono nell'app terminale (ad esempio) e mi capita di premere CONTROL mentre si avvia in background, ottengo la temuta finestra di dialogo "Esegui per eseguire questo script o Esci per uscire". E sì, ho fatto in modo che, quando l'ho salvato, l'opzione "Schermata iniziale" NON fosse selezionata.

Questa finestra di dialogo appare dietro tutte le altre finestre quindi non ho idea che sia successo e la mia app / script è bloccata a questo punto.

Qualche suggerimento su come superare questo, così posso eseguire il mio script senza finestre di dialogo fastidiose o icone rimbalzanti?

Grazie.

EDIT: Una delle idee che mi è venuta in mente era usare l'opzione ExitTimeOut nel file plist. La pagina man dice:

ExitTimeOut <integer>
    The amount of time launchd waits before sending a SIGKILL signal. The default value is 20 seconds. The
    value zero is interpreted as infinity.

Quindi l'ho aggiunto in questo modo:

<key>ServiceDescription</key>
    <string>Battery Monitor</string>
<key>StartInterval</key>
    <integer>30</integer>
<key>ExitTimeOut</key>
    <integer>90</integer>

poi ha scaricato / caricato il file .plist. Sfortunatamente non sembra funzionare. Sto comprendendo questa opzione?

    
posta Vic 01.04.2014 - 13:47
fonte

1 risposta

0

Converti in Shell Script e AppleScript Pair

Converti il controllo dello stato della batteria in uno script di shell. Lo script della shell può quindi essere eseguito regolarmente attraverso una job ticket launchd senza presentare alcuna interfaccia utente.

Quando le condizioni sono soddisfatte, lo script della shell può avviare un AppleScript per interagire con l'utente.

Si presume che si utilizzi un approccio ~/Library/LaunchAgent per il ticket di lavoro launchd. Un processo launchd su computer non sarà in grado di avviare il componente AppleScript nella sessione utente appropriata.

In alternativa, puoi utilizzare uno strumento di terze parti per l'attivazione di un evento della batteria su , come Power Manager ; questo eviterebbe di interrogare la batteria e migliorare le prestazioni della batteria.

    
risposta data 07.04.2014 - 12:28
fonte

Leggi altre domande sui tag