如何在 Mac OS X Lion 上每 15 分钟将应用程序置于最前面?

如何在 Mac OS X Lion 上每 15 分钟将应用程序置于最前面?

我有一款免费或便宜的小应用程序,名为 Desktop Task Timer LE,我一直用它来跟踪我从事各种项目的时间。我希望它每 15 分钟作为前台应用程序弹出一次,以防止我在转到其他任务后忘记停止/更改计时器。我知道我可以使用 Automator 或 AppleScript 中的脚本启动应用程序,但我不知道如何让该脚本每 15 分钟启动一次。我读过关于使用 Launchd 和 iCal 的文章,但我仍然不确定如何使用它。(实际上,iCal 可能很简单,但我不想用它来做这件事。)有什么想法吗?

此外,还有一个功能是,当电脑 5 分钟(或 x 分钟)不活动时,它会弹出。不确定这是否能满足我的需求,但如果可能的话,我想测试一下。

答案1

〜/库/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或注销并重新登录。

crontab -e

*/15 * * * * open -a "Desktop Task Timer LE"
  • 您可以使用其他编辑器,例如EDITOR=nano crontab -e
  • crontab -l列出当前计划的任务
  • crontab /path/to/file从外部文件更新表格

答案2

我看到了 Lri 的答案,您已将其选为正确答案。我想向您展示一种不同的方法,该方法也可以处理您请求的第二个“功能”。此方法也使用 launchd,但它运行一个 applescript。这是 applescript。请注意,我使用 TextEdit 检查了它,因此只需将其更改为您的应用程序名称即可。

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

这是 launchd plist。请注意,它每 5 分钟运行一次,applescript 会检查您的 5 分钟标准或 15 分钟标准。从中您可以看到,我将 applescript 命名为“FiveMinuteRunner.scpt”,并将其放在我的桌面上。祝你好运 :)

<?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>

答案3

为什么不使用 Growl 进行通知呢?你不觉得这是更好的解决方案吗?
你甚至可以添加声音。
http://growl.info/

在此处输入图片描述

相关内容