Quero que um alerta/caixa de diálogo seja acionado periodicamenteem primeiro planono meu Mac.
Tentei uma combinação de AppleScript e launchd
consegui que o script (na verdade convertido em um aplicativo) fosse acionado periodicamente por meio do launchd. No entanto, a caixa de alerta não aparece na frente de todas as outras janelas (em vez disso, totalmente oculta até eu acessá-la - emborafazcomece através de launchd
). Como posso colocá-lo na frente?
Meu roteiro é 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>
Responder1
Tenho uma resposta emPergunte 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 /usr/bin/open
e passar o aplicativo como argumento da seguinte forma 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
) na verdade é passado como argv[0]
e, portanto, não é relevante aqui. O primeiro argumento real é /Users/[...]/periodic.app
– o diretório do aplicativo em vez do binário real.