Usando lo Script Editor.app incluso con OS X, prova a sperimentare con questi frammenti.
Attendi 30 secondi
Il seguente frammento farà in modo che lo script attenda 30 secondi prima di mostrare una finestra di dialogo:
delay 30 -- this waits thirty seconds
display dialog "Hello?" -- this shows a dialog
Il sonno
Il seguente frammento inserisce il tuo Mac immediatamente dopo il sonno :
tell application "System Events"
sleep
end tell
Attendi e poi Sospendi
Combinando i due frammenti sopra ci sono un AppleScript che attenderà 30 secondi prima di mettere il Mac in stop:
delay 30
tell application "System Events"
sleep
end tell
Display e desktop
Non sono sicuro di come sia meglio determinare se un monitor è connesso. Potresti certamente sondare regolarmente; chiamare system_profiler SPThunderboltDataType SPDisplaysDataType
e analizzare l'output dovrebbe funzionare.
Il polling è computazionalmente costoso e meglio evitato.
In alternativa, forse un approccio in base al quale un AppleScript potrebbe determinare se il numero di desktop attivi è cambiato? Quando due monitor sono collegati al mio Mac, lo snippet seguente restituisce un elenco di due elementi:
tell application "System Events"
set myDesktops to desktops
end tell
Espandendoti sopra, il seguente frammento fornisce più informazioni di visualizzazione su cui lavorare:
tell application "System Events"
set myDesktop to properties of the first desktop
end tell