Como levar o aplicativo para frente a cada 15 minutos no Mac OS X Lion?

1

Eu tenho um pequeno aplicativo gratuito ou barato chamado Desktop Task Timer LE que venho usando para acompanhar meu tempo enquanto trabalho em vários projetos. Eu gostaria que ele aparecesse como o aplicativo de primeiro plano a cada 15 minutos para evitar que eu esquecesse de interromper / alterar o timer depois de passar para uma tarefa diferente. Eu sei que posso iniciar o aplicativo usando um script no Automator ou AppleScript, mas não sei como fazer com que o script seja disparado a cada 15 minutos. Li sobre o uso do Launchd e do iCal, mas ainda não sei como fazer isso. (Na verdade, o iCal é provavelmente simples, mas eu gostaria de evitar usá-lo para isso.) Alguma idéia?

Além disso, um outro recurso seria fazer com que ele aparecesse após 5 (ou x) minutos de inatividade no computador. Não tenho certeza se isso funcionaria para minhas necessidades, mas gostaria de testá-lo, se possível.

    
por johnnyb10 20.10.2011 / 17:17

3 respostas

3

~ / Library / LaunchAgents / com.stackoverflow.open.desktop.task.timer.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.stackoverflow.open.desktop.task.timer</string>
    <key>ProgramArguments</key>
    <array>
        <string>open</string>
        <string>-a</string>
        <string>Desktop Task Timer LE</string>
    </array>
    <key>StartInterval</key>
    <integer>900</integer> <!-- every 900 seconds -->
    <key>RunAtLoad</key> <!--run on the 0th second-->
    <true/>
</dict>
</plist>

launchctl load ~/Library/LaunchAgents/com.stackoverflow.open.desktop.task.timer.plist ou sair e voltar.

crontab -e

*/15 * * * * open -a "Desktop Task Timer LE"
  • Você pode usar um editor diferente, como EDITOR=nano crontab -e
  • crontab -l lista as tarefas atualmente agendadas
  • crontab /path/to/file atualiza a tabela de um arquivo externo
por 20.10.2011 / 18:33
1

Eu vejo a resposta de Lri e você a escolheu como sua resposta correta. Eu queria mostrar a você uma abordagem diferente que também lidaria com o segundo "recurso" que você solicitou. Esse método também usa o launchd, mas executa um applescript. Aqui está o applescript. Observe que eu verifiquei usando o TextEdit, então mude isso para o nome do seu aplicativo.

property lastRunDate : missing value

set currentDate to current date
if lastRunDate is missing value then set lastRunDate to currentDate
set idleTime to (do shell script "ioreg -c IOHIDSystem | awk '/HIDIdleTime/ {print $NF/1000000000; exit}'") as number

-- check if the computer has been idle for 5 minutes or if 15 minutes has passed
if idleTime is greater than or equal to (5 * 60) or (currentDate - lastRunDate) is greater than or equal to (15 * 60) then
    tell application "TextEdit" to activate
    set lastRunDate to currentDate
end if

Aqui está o lance inicial. Observe que isso ocorre a cada 5 minutos e o applescript faz a verificação dos seus critérios de 5 minutos ou dos seus critérios de 15 minutos. Você pode ver isso que eu chamei o applescript "FiveMinuteRunner.scpt" e coloquei na minha área de trabalho. Boa sorte:)

<?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>StartInterval</key>
    <integer>300</integer>
    <key>ProgramArguments</key>
    <array>
        <string>osascript</string>
        <string>/Users/hmcshane/Desktop/FiveMinuteRunner.scpt</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>Label</key>
    <string>com.HAMSoftEnginnering.FiveMinuteRunner</string>
</dict>
</plist>
    
por 20.10.2011 / 23:44
0

Por que você não usa Growl para notificação, é melhor solução, não é uma coisa?
Você pode até adicionar sons a ele.
link

    
por 20.10.2011 / 17:20