Como mostrar periodicamente a mensagem de alerta * em primeiro plano * no Mac OS X?

1

Eu quero ter um alerta / caixa de diálogo para acionar periodicamente em primeiro plano no meu Mac.

Eu tentei uma combinação de AppleScript e launchd e consegui que o script (de fato convertido em um aplicativo) fosse disparado periodicamente via launchd. No entanto, a caixa de alerta não aparece na frente de todas as outras janelas (um pouco totalmente oculta até que eu aborde para ela - embora faça começar por launchd ). Como posso conseguir isso na frente?

Meu script é o seguinte:

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

Meu launch.plist é (em /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>
    
por Bernhard Röttgers 22.05.2015 / 16:51

1 resposta

0

Tenho uma resposta em Pergunte diferente :

A solução é open o aplicativo, que parece mais um clique duplo no ícone do aplicativo. Ou seja, é preciso substituir o programa a ser chamado por /usr/bin/open e passar o aplicativo como um argumento da seguinte maneira dentro do launchd.plist:

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

O primeiro argumento (neste caso, open ) é passado como argv[0] e, portanto, não é relevante aqui. O primeiro argumento real, em seguida, é /Users/[...]/periodic.app - o diretório do aplicativo, em vez do binário real.

    
por 25.05.2015 / 14:38