1 votos

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

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

Nunca he utilizado AppleScript antes. ¿Es posible escribir un AppleScript que ponga la computadora en modo de suspensión, por ejemplo, 30 segundos después de desconectar un monitor externo, pero solo si la tapa está cerrada?

2voto

Steve Evans Puntos 155

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

1voto

user3439894 Puntos 5883

No voy a embellecer esto como lo hizo Graham Miln, sin embargo, si quieres crear una aplicación AppleScript que puedas ejecutar antes de desconectar tu pantalla externa, entonces esto esperará 30 segundos, comprobará si está en modo clamshell y, si es así, pondrá el sistema en reposo.

Código de AppleScript :

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 _, System Events se puede utilizar en lugar de Finder ya que ambos aceptarán el comando sleep._

0 votos

Si sigues este enfoque, asegúrate de desconectar tu monitor y el adaptador de Ethernet Thunderbolt dentro de los 30 segundos, o despertarás tu MacBook justo después de que se duerma.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X