3 votes

AppleScript : Appuyez sur la touche Entrée toutes les X minutes si le terminal est ouvert et que l'application est restée inactive pendant X minutes.

Je suis novice en AppleScript et j'essaie de l'utiliser.

Si j'utilise un terminal et que je n'ai pas appuyé sur une touche pendant une période de trois mois, j'obtiendrai une réponse. x minutes, je veux que mon Mac appuie sur la touche retour. Il doit répéter ce processus toutes les y minutes. Je voudrais que ce processus se poursuive jusqu'à ce que je ferme Terminal ou que j'arrête l'AppleScript.

Ma tentative de programmation est ci-dessous :

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 Points 13802

Pourquoi ne pas le réparer dans le terminal ?

Je suggérerais quelque chose comme

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

Cela va tourner en boucle. Quand le programme sort, il saute à sleep 60. Ce qui le fera dormir pendant 60 secondes, puis revenir à la partie exécution.

Bien que ce ne soit pas spécifiquement ce que vous avez demandé, cela pourrait être une façon plus facile de régler le problème.

Un peu plus proche de ce que vous suggérez :

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

1voto

adayzdone Points 1798

Sauvegardez cette application comme une application qui reste ouverte :

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 Points 447

Quel problème essayez-vous de résoudre ?

Par exemple, c'est un comportement courant d'un client SSH, qui est plus facilement, et mieux, résolu en ajoutant ServerAliveInterval 60 à votre configuration ssh.

0voto

Graham Miln Points 39606

Votre AppleScript comporte deux parties essentielles : l'appui sur une touche et l'exécution d'une tâche après une période d'inactivité.

Appuyer sur une touche

Automatisation de l'appui sur une touche dans AppleScript est bien couvert ; la réponse acceptée à la question liée suggère :

tell application "System Events" to key code 36

Performant lorsqu'il est inactif

La deuxième partie, l'exécution d'une tâche lorsque votre Mac est inactif, est plus délicate. Vous pouvez utiliser un logiciel tiers pour programmer votre AppleScript après une période d'inactivité ou vous pouvez utiliser une approche scriptée pour extraire les informations sur le temps d'inactivité du système :

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

En résumé, cela devient un AppleScript :

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

inactive_seconds contient le nombre de secondes d'inactivité.

Mise en place

L'assemblage dépend de votre approche du bouclage. Envisagez une boucle while qui vérifie si le Terminal.app est en cours d'exécution. L'article de John Gruber vous sera utile à cet égard, Comment déterminer si une certaine application fonctionne à l'aide d'AppleScript et de Perl ? :

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

La plus grande boucle while pourrait être :

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

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X