He estado jugando con AppleScript y Automator para conseguir que esto funcione, pero no consigo entenderlo. Si alguien puede mostrarme un ejemplo o darme algunos consejos sobre cómo puedo configurar una aplicación para que se cierre a una hora específica y luego poner el ordenador en reposo o apagado, sería muy apreciado.
Respuestas
¿Demasiados anuncios?Asumo que quieres iniciar este procedimiento en lugar de que se ejecute a una hora regular.
Mi enfoque sería iniciar esto desde la línea de comandos, pero cualquier comando puede ser ejecutado en un componente del shell script de un Automator script con alguna modificación. El siguiente enfoque combina algunos componentes para hacer el trabajo:
- A
tell
para salir de la aplicación - Una llamada a la línea de comandos para poner el ordenador en reposo
- Una llamada a la línea de comandos para programar 1 y 2 para una hora específica.
1. Decirle a la aplicación que abandone
Esto puede ser tan simple como:
osascript -e 'tell application "AppName" to quit'
2. Poner el ordenador en reposo
Echa un vistazo a pmset
para más detalles, pero al emitir el siguiente comando su ordenador entrará en reposo:
pmset sleepnow
3. Programar una operación para que se ejecute en un momento determinado
Echa un vistazo a la en de mando. Este comando te da la posibilidad de especificar una hora para que se ejecute un comando. Tendrá que habilitar esta funcionalidad ya que no está por defecto. Para habilitar el comando atrun
daemon, ejecute el siguiente comando [referencia en SU] :
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist
Una vez que hayas habilitado atrun
cualquier comando puede ser programado para una hora específica emitiendo
echo "<command>" | at HH:MM
que funciona porque at
toma su entrada de stdin
por defecto. Un enfoque más sencillo es ejecutar los comandos listados en un archivo. Un archivo puede ser ejecutado usando la función -f
seguido del nombre del script que se ejecutará así:
at -f /path/to/file HH:MM
Ponerlo todo junto
Lo que sigue supone que atrun
está activado. Como un ejemplo de juguete, digamos que quiero salir de Mail y poner la computadora a dormir a las 11PM. Crearía un archivo que contenga los comandos que quiero que se ejecuten de la siguiente manera:
osascript -e 'tell application "Mail" to quit'
pmset sleepnow
Guarde ese archivo en quit-and-sleep
y luego ejecutar en la línea de comandos
at -f /path/to/quit-and-sleep 23:00
Advertencias
No hice ninguna comprobación para asegurarme de que el correo se cerraba realmente. El scripttambién asume que nada más se va a interponer en el camino de poner el ordenador a dormir. Lo he mantenido simple aquí como un punto de partida para lo que quieres.
Aquí hay una versión estrictamente applescript que logra esto dado un valor de tiempo codificado. Por supuesto, puedes hacer esta parte interactiva si quieres. Además, esta versión asume que la cadena de tiempo se refiere a hoy.
--Get time setting for action to occur
set t to "3:16:30 PM"
--build a time string to use as a target.
set cd to (current date) as text
set AppleScript's text item delimiters to " "
set targetTime to text items 1 thru -3 of cd
set targetTime to date ((targetTime as text) & " " & t)
repeat while (current date) < targetTime
beep
delay 30 -- check the time every 30 seconds
end repeat
tell application "Mail"
quit
end tell
tell application "Finder"
display dialog "Do you want to shut the computer down now?"
if button returned of the result is "Ok" then
shutdown
end if
end tell
Este es el código que esperará una cantidad de segundos antes de salir de la aplicación actual e ir a dormir.
delay (your amount of seconds here)
tell application "System Events"
key down {command}
keystroke "q"
key up {command}
set volume "1"
say "computer going to sleep"
tell application "Finder"
sleep
end tell
end tell
0 votos
¿Ya tienes escrito el AppleScript?