3 votos

AppleScript: Pulse Intro cada X minutos si el terminal está abierto y la aplicación ha estado inactiva durante X minutos

Soy nuevo en AppleScript y estoy intentando utilizarlo.

Si estoy utilizando Terminal y si no he pulsado ninguna tecla para x minutos quiero que mi Mac pulse la tecla de retorno. Se trata de repetir este proceso cada y minutos. Me gustaría que este proceso continuara hasta que cierre Terminal o detenga el AppleScript.

Mi intento de programación está más abajo:

repeat 52 times
delay 840
tell application "Terminal"
set currentTab to do script ("Return") in front window
end tell
delay 840
end repeat

2voto

Juliano Puntos 13802

¿Por qué no arreglarlo en el terminal?

Yo sugeriría algo como

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

Esto entrará en un bucle continuo. Cuando el programa sale, salta a sleep 60. Lo que hará que duerma durante 60 segundos y luego salte de nuevo a la parte de ejecución.

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

Un poco más cerca de lo que sugieres:

 for i in {1..52};
   do <your action>;
   sleep 840;
 done

1voto

adayzdone Puntos 1258

Guárdalo como aplicación abierta:

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

1voto

DmitrySandalov Puntos 129

¿Qué problema intenta resolver?

Por ejemplo, ese es un comportamiento común de un cliente SSH, y se resuelve más fácilmente, y mejor, añadiendo ServerAliveInterval 60 a tu configuración ssh.

0voto

Steve Evans Puntos 155

Hay dos partes clave en tu AppleScript, pulsar una tecla y realizar una tarea después de inactividad.

Pulsar una tecla

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

tell application "System Events" to key code 36

Actuar cuando está inactivo

La segunda parte, realizar una tarea cuando el Mac ha estado inactivo, es más complicada. Puede utilizar software de terceros para programar su AppleScript después de inactividad o puede utilizar una secuencia de comandos para extraer la información sobre el tiempo de inactividad del sistema:

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

Envolver 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;}'"

Dónde inactive_seconds contiene el número de segundos inactivos.

Montaje

El montaje depende de tu enfoque del bucle. Considera un bucle while que compruebe si Terminal.app se está ejecutando. El artículo de John Gruber será útil para esto, Cómo determinar si una determinada aplicación se está ejecutando utilizando AppleScript y Perl :

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

El bucle while mayor 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

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