AppleScript: presione Entrar cada X minutos Si el terminal está abierto y la aplicación ha estado inactiva durante X minutos

3

Soy nuevo en AppleScript y estoy intentando usarlo.

Si estoy usando Terminal y no presioné una tecla durante x minutes, quiero que mi Mac presione la tecla de retorno. Es repetir este proceso cada y minutos. Me gustaría que este proceso continúe hasta que cierre la Terminal o detenga el AppleScript.

Mi intento de programación está abajo:

repeat 52 times
delay 840
tell application "Terminal"
set currentTab to do script ("Return") in front window
end tell
delay 840
end repeat
    
pregunta Sean 06.03.2014 - 18:35

4 respuestas

1

¿Por qué no arreglarlo en el terminal?

Sugeriría algo como

while true;
  do <whatever your terminal actions is>;
  sleep 60; #sleep 60 seconds
done;

Esto irá en un bucle continuo. Cuando el programa sale, salta al modo de reposo 60. Lo que hará que se duerma durante 60 segundos y luego volverá a la parte de ejecución.

Aunque esto no es específicamente lo que pediste, esta podría ser una forma más fácil de lidiar con eso.

Un poco más cerca de lo que estás sugiriendo:

 for i in {1..52};
   do <your action>;
   sleep 840;
 done
    
respondido por el Volsk 06.03.2014 - 18:44
1

Guarde esto como una aplicación abierta de permanencia:

on idle
    if application "Terminal" is running then
        tell application "Terminal" to set currentTab to do script "" in front window
    end if
    return (14 * minutes)
end idle
    
respondido por el adayzdone 07.03.2014 - 15:25
1

¿Qué problema estás tratando de resolver?

Por ejemplo, ese es un comportamiento común de un cliente SSH, y se resuelve más fácil y mejor al agregar ServerAliveInterval 60 a su configuración ssh.

    
respondido por el wgj 07.03.2014 - 20:10
0

Hay dos partes clave en tu AppleScript: presionar una tecla y realizar una tarea después de la inactividad.

Presionando una tecla

Automatización de una tecla presionando en AppleScript está bien cubierto; La respuesta aceptada a la pregunta vinculada sugiere:

tell application "System Events" to key code 36

Realizar cuando está inactivo

La segunda parte, realizar una tarea cuando tu Mac ha estado inactiva es más difícil. Puede utilizar software de terceros para programar su AppleScript después de la inactividad , o puede usar un enfoque de script para extraer la información del tiempo de inactividad de el sistema:

ioreg -c IOHIDSystem | perl -ane 'if(/Idle/) {$idle=(pop @F)/1000000000; print $idle, "\n"; last;}'

Resumiendo esto en AppleScript se convierte en:

set inactive_seconds to do shell script "ioreg -c IOHIDSystem | perl -ane 'if(/Idle/) {$idle=(pop @F)/1000000000; print $idle, \"
\"; last;}'"

Donde inactive_seconds contiene el número de segundos inactivos.

Poniéndolos juntos

Ponerlo en conjunto depende de tu enfoque de bucle. Considere un bucle while que verifique si el Terminal.app se está ejecutando. El artículo de John Gruber será útil para esto, Cómo determinar si una aplicación determinada se está ejecutando con AppleScript y Perl :

tell application "System Events"
    count (every process whose name is "Terminal")
end tell

El bucle while más grande podría ser:

tell application "System Events"
    repeat while ((count (every process whose name is "Terminal")) > 0)

        -- check idle time and conditionally perform key press
        -- wait n minutes to avoid excessive polling

    end repeat
end tell
    
respondido por el Graham Miln 07.03.2014 - 16:43

Lea otras preguntas en las etiquetas