¿Cómo mostrar periódicamente el mensaje de alerta * en primer plano *?

1

Quiero tener un cuadro de diálogo / alerta para que se active periódicamente en primer plano .

Probé una combinación de AppleScript y launchd y logré que el script (en realidad convertido en una aplicación) se activara periódicamente a través de launchd. Sin embargo, el cuadro de alerta no se muestra delante de todas las demás ventanas (en lugar de ocultarlo totalmente hasta que aparezca la pestaña, aunque se inició a través de launchd ). ¿Cómo puedo ponerlo en frente?

Mi script es el siguiente:

on run
    activate me --> tried to get alert in foreground
                --> didn't help, though
    display alert "Should show up in foreground..."
end run

Mi launch.plist es (en /Users/bernhard/Library/LaunchAgents/ ):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>bernhard.sitstraight.plist</string>

    <key>Program</key>
    <string>/Users/bernhard/programming/periodic.app/Contents/MacOS/applet</string>

    <key>RunAtLoad</key>  
    <true/>

    <key>StartInterval</key>
    <integer>1200</integer>
</dict>
</plist>
    
pregunta Bernhard Röttgers 22.05.2015 - 15:47

2 respuestas

1

Intente usar open en lugar de Lanzando el programa directamente. open coincide más al hacer doble clic para iniciar la aplicación AppleScript.

open su aplicación

Para hacer esto, reemplace el par de valores clave Program en su ticket de trabajo launchd con una matriz ProgramArguments para proporcionar la ruta a su aplicación AppleScript:

<key>ProgramArguments</key>
<array>
    <string>/usr/bin/open</string>
    <string>/Users/bernhard/programming/periodic.app</string>
</array>

De forma predeterminada, el comando open intenta llevar la aplicación iniciada a primer plano.

    
respondido por el Graham Miln 25.05.2015 - 13:38
0

Tu código parece funcionar bien en mi 10.6.8 (Snow Leopard), aunque no lo lancé desde launchd .

Hice algo muy similar para monitorear mi batería. La secuencia de comandos automáticamente hiberna mi sistema después de dar una cuenta regresiva de 60 segundos usando un cuadro de diálogo "intermitente".

Debido a que, como usted, el cuadro de diálogo a veces se enterró, le di un tiempo de espera al cuadro de diálogo y lo volví a mostrar.

Aquí está el código de AppleScript del código relevante de mi script de bash schell ...

   userResp="'/usr/bin/osascript 2>&1 <<-EOF
    tell application "System Events"
        activate
        display dialog \
            "Battery below min safe level of ${minBattLvl}%" \
            & "\n\nForcing hibernation in: ${cntDown} seconds." \
            as text buttons {"Cancel","$btntext"} \
            default button "$btntext" \
            with icon caution \
            with title "WARNING: Battery Monitor" \
            giving up after $dlgTimeout
    end tell
EOF'"
    
respondido por el Vic 24.05.2015 - 21:09

Lea otras preguntas en las etiquetas