Sucede que a veces dejo mi macbook (unibody, de los primeros. Snow Leopard 10.6.3) realizando alguna tarea, como codificando un video o descargando un documento muy pesado. Mientras tanto siempre pongo el salvapantallas (que al salir me pide la contraseña de administrador) para evitar que terceras personas accedan a mi información. Pero me gustaría que pasado un determinado tiempo, suficiente como para terminar la tarea por la que había dejado el macbook encendido, el ordenador pasase a modo reposo (sleep). Hasta aquí, sencillo.
Probe el programador que incluye Snow Leopard en “preferencias de sistema”, “economizador”…. pero no me convenció, ya que asigna a varios días esa función y luego requiere desconectarla. Luego también probé a programar el reposo con “automator” + “ical”, siguiendo los pasos de un tutorial publicado en faq-mac. Pero sucedía que a pesar de que la tarea de automator funciona, iCal no me lanzaba la aplicación o bien esta no hacía efecto. Finalmente probé soluciones más sencillas y prácticas, como software gratuito “iwillquit”, “itunesshut”, “iwannasleep”, etc etc. Pero ninguna funcionaba. Meditando sobre esto me di cuenta que el problema estaba al poner el salvapantallas (pidiendo luego la contraseña de admin para volver al sistema).
¿Es posible que sea este punto lo que impide que estos programas me pongan el macbook en reposo? ¿puedo solucionar esto de alguna manera que no implique desactivar el salvapantallas? ¿existe algún software gratuito que me pueda servir? Muchísimas gracias por su tiempo y mis máximas felicitaciones por la web, que sigo a diario.
Este es un tema endiabladamente complejo por una parte, y tremendamente sencillo, que cuenta con algunas consideraciones de seguridad previas: vayamos paso por paso.
Índice
Seguridad
Tratar de saltarse las opciones de seguridad del salvapantallas es algo complejo, porque Apple ha tomado precisamente las medidas necesarias para que no se pueda acceder precisamente a sistemas de automatización que permitieran, por ejemplo, que una acción de Automator o un Applescript malicioso pudiera aprovecharse de este tipo de “soluciones”. No funciona incluso “emulando” el tecleado de la contraseña desde Applescript cuando el salvapantallas está en marcha y la gestión de usuario y contraseña está activada. En pasadas versiones de Mac OS X si había disponible un comando de terminal que básicamente modificaba las preferencias de seguridad de forma que podía activarse y desactivarse esta opción, pero aparentemente APpl lo ha deprecado en Mac OS X Snow Leopard.
Tras realizar múltiples pruebas e investigar varias horas sobre este problema, no hemos dado con una forma segura y fiable de automatizar este proceso que además en inheremente peligroso, pero si algún usuario sabe, conoce o quiere aportar una idea o un vector de aproximación al problema, quedan los comentarios abiertos a su disposición.
Y ahora, vamos a por la segunda parte.
Mandar a reposo al Mac en un tiempo prefijado
Mac OS X nos permite enviar a reposo a el ordenador de diferentes formas, casi todas ellas automatizadas (como en el panel de control de Economizador) a fechas y horas específicas. También podemos jugar con iCal para lanzar órdenes de forma que “tal día a tal hora” podamos enviar el ordenador a reposo. pero lo que no nos deja hacer el sistema per se es enviar el Mac a reposo “dentro de X minutos”.
Este problema, sin embargo, se puede solucionar con un AppleScript. Abre el Editor de Scripts y copia y pega el siguiente código:
set tiempo to ""
display dialog "¿Tiempo para reposo?" default answer tiempo buttons {"OK"} default button 1
set tiempo to text returned of the result
set tiempo to (tiempo * 60)
delay tiempo
tell application "System Events" to sleep
Explicando el Script
set tiempo to ""
En esta línea definimos la variable tiempo para poder utilizarla en las siguientes operaciones
display dialog "¿Tiempo para reposo?" default answer tiempo buttons {"OK"} default button 1
El cuadro de diálogo que nos permitirá introducir el tiempo que esperará el script antes de mandar el ordenador a reposo. El tiempo se expresa en minutos (60 minutos para una hora, etc …)
set tiempo to text returned of the result
Recuperamos el valor de la variable introducida en el campo de texto
set tiempo to (tiempo * 60)
Con esta operación, multiplicamos el valor de los minutos introducidos para convertirlos en segundos, ya que Applescript cuenta en segundos. Si en vez de trabajar en minutos, quieres hacerlo con horas, modifica esta línea a (tiempo * 360)
. Para introducir medias horas debes usar notación decimal usando un punto (2.5 horas equivale a 2 horas y media).
delay tiempo
Aquí, la variable tiempo
se usa en conjunción con delay
, un comando que contará los segundos expresados en la variable hasta ejecutar la siguiente línea del script.
tell application "System Events" to sleep
La línea que envía el ordenador a reposo.
Extras
Puedes, en medio de este proceso, activar el salvapantallas para que durante el tiempo en el que el ordenador va a reposo, la pantalla muestre la correspondiente selección que hayas hecho en el Panel de Control de Escritorio y Salvapantallas. El script quedaría así.
set tiempo to ""
display dialog "¿Tiempo para reposo?" default answer tiempo buttons {"OK"} default button 1
set tiempo to text returned of the result
set tiempo to (tiempo * 60)
activate application "ScreenSaverEngine"
delay tiempo
tell application "System Events" to sleep
Donde la línea activate application "ScreenSaverEngine"
activa el salvapantallas.
Guarda el script como una aplicación y ejecútala cuando necesites enviar a dormir el ordenador dentro de un tiempo prefijado.
Mira, llevaba tiempo intentando averiguar como solucionar este problema. Muchas gracias, el truco funciona y es muy, muy bueno.
En primer lugar agradecer el gesto y la rapidez de vuestra respuesta. Agradezco de todo corazón el tiempo que habéis invertido, así como los esfuerzos. Mi más sincero agradecimiento.
Deseo que seas varios los lectores a los que este truco les pueda venir bien, y así se amortice vuestro trabajo.
Ahora mismo voy a crear ese script que sin duda me viene de perlas.
Una vez más, gracias !
A vuestra disposición….
Yo les escribí una vez con un problema con mi iMac, no sacaron un artículo pero me respondieron superrápido con dos enlaces a faq-mac de artículos anteriores que me solucionaron el problema. Y no era precisamente una perita en dulce.
Hay que reconocer que son la web mas atenta con los lectores: anda, vete a preguntar a otro lado y si tienes suerte te responderán que o no son un consultorio o que lo lleves al servicio técnico. O que uses las búsquedas.
Un buen truco
La idea es buenísima, pero me gustaría saber como sería en el caso de que el temporizador se quisiese fuera de apagado en vez de reposo, cómo se modificaría el código del script?