When I'm in the middle of work I often tend to overlook how long I've already worked on any given day, especially when working from home during Covid where I mostly don't have fixed start or end dates, like so many of us.
To avoid having my overtime balance increase unintentionally by working half an hour here and there I've created a script for myself based on the excellent Timing to see when I've worked about 7.5h to allow me to begin to shut down my work for the day.
You can do that with a small Applescript by looking for the total time tracked today in seconds and then creating a notification. There's probably a more efficient way than running this command every minute and just comparing number of seconds, but it seems to do the trick.
In addition to the notification I also force dark mode to nudge myself a bit more proactively.
tell application "TimingHelper" if not scripting support available then error "Scripting support requires a Timing Expert license. Please contact support via https://timingapp.com/contact to upgrade." end if end tell tell application "TimingHelper" set usageData to get time summary between current date and current date set total to overall total of usageData # work day 8 * 60 * 60: 28'800s # threshold 7.5 * 60 * 60: 27'000s if total ≥ 27000 and total < 27060 then display notification "You have worked 7.5h, begin shutting down." with title "Timing alert" sound name "Frog" tell application "System Events" tell appearance preferences set dark mode to true end tell end tell end if delete usageData end tell
Now add an agent to ~/Library/LaunchAgent such as the one shown below like
com.example.timing_monitor.plist and enable it with
launchctl load com.example.timing_monitor.plist and you should be good to go.
<?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>com.example.timing_monitor</string> <key>Program</key> <string>/usr/bin/osascript</string> <key>ProgramArguments</key> <array> <string>osascript</string> <string>/your/path/your script.scpt</string> </array> <key>StartInterval</key> <integer>60</integer> </dict> </plist>