4 votes

launchd : demander à l'utilisateur avant d'effectuer des tâches

Existe-t-il un moyen d'obtenir une tâche launchd définie par l'utilisateur (c'est-à-dire comme celle de cette page) ? question ) pour obtenir la confirmation de l'utilisateur avant d'exécuter la tâche ? Un popup comme celui pour le sommeil programmé (avec oui/non et une minuterie en cas d'absence d'entrée de l'utilisateur) serait génial, sinon un simple popup oui/non fonctionnerait.

4voto

LCC Points 672

Fais en sorte que launchd appelle cet AppleScript. Il affiche un dialogue avec un délai d'attente et appelle un shell script si l'utilisateur a sélectionné "Ok".

set timeoutInSeconds to 60
set abortOnTimeout to true

tell application (path to frontmost application as text)
    try
        set dialogResult to display dialog "Do you want to execute?" default button 2 giving up after timeoutInSeconds
        on error number -128
            return
    end try
end tell

if gave up of dialogResult and abortOnTimeout then
    return
end if

do shell script "/path/to/yourscript.sh"

1voto

Agents de lancement sont autorisés à interagir avec l'interface graphique, et même les démons peuvent utiliser osascript pour afficher des boîtes de dialogue.

Vous pourriez également utiliser quelque chose comme ceci dans un shell script :

osascript -e 'tell app (path to frontmost application as text)'
display dialog "Continue?"
end' || exit 0

Le script se termine par une erreur si l'utilisateur appuie sur le bouton d'annulation ou ferme la boîte de dialogue. Vous pourriez également demander à un processus d'arrière-plan comme SystemUIServer d'afficher la boîte de dialogue, mais vous devriez ajouter quelque chose comme activate application (path to frontmost application as text) pour ramener le focus sur la fenêtre précédemment focalisée.

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