¿Cómo poner una Mac en suspensión después de desconectar la pantalla usando AppleScript?

1

Me gustaría resolver el problema desde esta pregunta , es decir, después de desconectar una pantalla de Cinema de un MacBook de concha me gustaría dejar que el MacBook entre en modo de suspensión sin abrir y cerrar la tapa.

Nunca he usado AppleScript antes. ¿Es posible escribir un AppleScript que ponga la computadora en suspensión, digamos 30 segundos después de desconectar una pantalla externa, pero solo si la tapa está cerrada?

    
pregunta Thomas 21.01.2016 - 12:36

2 respuestas

2

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
    
respondido por el Graham Miln 21.01.2016 - 14:50
1

No voy a enfatizar esto como Graham Miln lo hizo muy bien, sin embargo, si desea crear una aplicación AppleScript que pueda ejecutar antes de desconectar su pantalla externa, entonces esto esperará 30 segundos, verifique si está en modo clamshell. y si es así, ponga el sistema en reposo.

AppleScript code :

delay 30
set AppleClamshellState to do shell script "ioreg -r -k AppleClamshellState -d 1 | awk -F' = ' '/AppleClamshellState/ {print $2}'"
if AppleClamshellState = "Yes" then tell application "Finder" to sleep

Nota: En la declaración if , se puede usar System Events en lugar de Finder ya que aceptará el comando sleep .

    
respondido por el user3439894 21.01.2016 - 17:15

Lea otras preguntas en las etiquetas