launchd: chiedi all'utente prima di eseguire le attività

4

C'è un modo per ottenere un'attività launchd definita dall'utente (ad esempio, come quella in questa domanda ) per ottenere la conferma dell'utente prima di eseguire l'attività? Un popup come quello per il sonno programmato (con sì / no e un timer in caso di assenza di input dell'utente) sarebbe ottimo, altrimenti funzionerebbe un semplice sì / no popup.

    
posta newenglander 28.04.2012 - 20:32
fonte

2 risposte

4

Fai launchd chiama questo AppleScript. Visualizza una finestra di dialogo con un timeout e chiama uno script di shell se l'utente ha selezionato "Ok".

set timeoutInSeconds to 60
set abortOnTimeout to true

tell application (path to frontmost application as text)
    try
        set dialogResult to display dialog "Do you want to execute?" default button 2 giving up after timeoutInSeconds
        on error number -128
            return
    end try
end tell

if gave up of dialogResult and abortOnTimeout then
    return
end if

do shell script "/path/to/yourscript.sh"
    
risposta data 21.08.2013 - 04:40
fonte
1

Gli agenti Launchd hanno permesso di interagire con la GUI, e anche i demoni possono usare osascript per visualizzare le finestre di dialogo.

Potresti anche usare qualcosa di simile in uno script di shell:

osascript -e 'tell app (path to frontmost application as text)'
display dialog "Continue?"
end' || exit 0

Lo script termina con un errore se l'utente preme il pulsante Annulla o chiude la finestra di dialogo. Potresti anche dire a un processo in background come SystemUIServer di visualizzare la finestra di dialogo, ma dovresti aggiungere qualcosa come activate application (path to frontmost application as text) per spostare lo stato attivo sulla finestra precedentemente focalizzata.

    
risposta data 21.08.2013 - 14:40
fonte

Leggi altre domande sui tag