launchd: pregunte al usuario antes de realizar tareas

4

¿Hay alguna forma de obtener una tarea de inicio definida por el usuario (es decir, como la que se encuentra en esta pregunta ) ¿Para obtener la confirmación del usuario antes de ejecutar la tarea? Una ventana emergente como la del sueño programado (con sí / no y un temporizador en caso de que el usuario no ingrese datos) sería excelente, de lo contrario funcionaría una simple ventana emergente de sí / no.

    
pregunta newenglander 28.04.2012 - 20:32

2 respuestas

4

Haz que launchd llame a este AppleScript. Muestra un cuadro de diálogo con un tiempo de espera y llama a un script de shell si el usuario seleccionó "Aceptar".

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"
    
respondido por el LCC 21.08.2013 - 04:40
1
Los

agentes de Launchd tienen permiso para interactuar con la GUI, e incluso los demonios pueden usar osascript para mostrar diálogos.

También puedes usar algo como esto en un script de shell:

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

El script sale con un error si el usuario presiona el botón de cancelar o cierra el cuadro de diálogo. También puede indicar a un proceso en segundo plano como SystemUIServer que muestre el cuadro de diálogo, pero tendría que agregar algo como activate application (path to frontmost application as text) para volver a enfocar a la ventana enfocada anteriormente.

    
respondido por el user495470 21.08.2013 - 14:40

Lea otras preguntas en las etiquetas