1

У меня есть бесплатное или дешевое небольшое приложение под названием Desktop Task Timer LE, которое я использую для отслеживания своего времени, когда я работаю над различными проектами. Мне бы хотелось, чтобы оно появлялось в качестве приложения переднего плана каждые 15 минут, чтобы я не мог забыть остановить / изменить таймер после перехода к другой задаче. Я знаю, что могу запустить приложение, используя скрипт в Automator или AppleScript, но я не знаю, как запускать этот скрипт каждые 15 минут. Я читал об использовании Launchd и iCal, но я все еще не уверен, как это сделать. (На самом деле, iCal, вероятно, прост, но я бы хотел не использовать его для этого.) Есть идеи?

Кроме того, еще одной особенностью будет его всплывающее окно после 5 (или x) минут бездействия на компьютере. Не уверен, что это будет работать для моих нужд, но я хотел бы проверить это, если это возможно.

3 ответа3

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 или выйдите и снова войдите в систему.

crontab -e

*/15 * * * * open -a "Desktop Task Timer LE"
  • Вы можете использовать другой редактор, такой как EDITOR=nano crontab -e
  • crontab -l перечисляет текущие запланированные задачи
  • crontab /path/to/file обновляет таблицу из внешнего файла
1

Я вижу ответ Лри, и вы выбрали его как правильный ответ. Я хотел показать вам другой подход, который также будет обрабатывать вторую "функцию", которую вы запросили. Этот метод также использует launchd, но он запускает яблочный скрипт. Вот яблочный скрипт. Обратите внимание, что я проверил это с помощью 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

Вот стартовый лист. Обратите внимание, что это запускается каждые 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>
0

Почему вы не используете Growl для уведомлений, это лучшее решение, не так ли?
Вы даже можете добавить звуки к нему.
http://growl.info/

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .