Usando el Script Editor.app incluido con OS X, intenta experimentar con estos fragmentos.
Esperar 30 segundos
El siguiente fragmento hará que tu script espere 30 segundos antes de mostrar un diálogo:
delay 30 -- esto espera treinta segundos
display dialog "¿Hola?" -- esto muestra un diálogo
Dormir
El siguiente fragmento pondrá tu Mac inmediatamente en modo de suspensión:
tell application "System Events"
sleep
end tell
Esperar y luego dormir
Combinando los dos fragmentos anteriores se obtiene un AppleScript que esperará 30 segundos antes de poner tu Mac en modo de suspensión:
delay 30
tell application "System Events"
sleep
end tell
Pantallas y Escritorios
No estoy seguro de cuál es la mejor manera de determinar si un monitor está conectado. Podrías ciertamente hacer consultas regularmente; llamar a system_profiler SPThunderboltDataType SPDisplaysDataType
y analizar la salida funcionaría.
Las consultas son computacionalmente costosas y es mejor evitarlas.
Alternativamente, quizás un enfoque en el que un AppleScript pudiera determinar si el número de escritorios activos ha cambiado. Cuando dos monitores están conectados a mi Mac, el siguiente fragmento devuelve una lista de dos elementos:
tell application "System Events"
set myDesktops to desktops
end tell
Expandiendo esto, el siguiente fragmento proporciona más información de pantalla con la que trabajar:
tell application "System Events"
set myDesktop to properties of the first desktop
end tell