Utilizando el Script Editor.app incluido con OS X, intente experimentar con estos fragmentos.
Espere 30 segundos
El siguiente fragmento de código hará que el script espere 30 segundos antes de mostrar un cuadro de diálogo:
delay 30 -- this waits thirty seconds
display dialog "Hello?" -- this shows a dialog
Dormir
El siguiente fragmento pondrá su Mac inmediatamente para dormir :
tell application "System Events"
sleep
end tell
Espera y luego duerme
Al combinar los dos fragmentos anteriores, se obtiene un AppleScript que esperará 30 segundos antes de poner a dormir tu Mac:
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. Ciertamente podrías hacer encuestas regularmente; Llamar a system_profiler SPThunderboltDataType SPDisplaysDataType
y analizar la salida funcionaría.
La encuesta es computacionalmente costosa y es mejor evitarla.
Alternativamente, ¿quizás un enfoque por el cual un AppleScript podría determinar si la cantidad de escritorios activos ha cambiado? Cuando dos monitores están conectados a mi Mac, el siguiente fragmento de código devuelve una lista de dos elementos:
tell application "System Events"
set myDesktops to desktops
end tell
Ampliando esto, el siguiente fragmento de código proporciona más información de visualización para trabajar:
tell application "System Events"
set myDesktop to properties of the first desktop
end tell