This feature would allow desktop users to set up FocusMe plans to automatically open an external app or file at different hook points and conditions in the lifecycle of a plan.
Some example scenarios for how the hooks are used (but by no means limited to these):
1. User configures a FocusMe pomodoro plan to run a custom script at the end of each 25 minute pomodoro so that they can log the number of completed pomodoros. Also the user has set FocusMe to play a very loud and annoying sound every time the user does an action that is blocked during the pomodoros.
2. User configures a FocusMe pomodoro plan to open an encouraging audio file (e.g. applause.mp3) or image at the beginning of each pomodoro.
3. User configures a plan with the “Just block” rule type and “Quick” schedule mode for an hour, where it will run their custom script (maybe a custom script that notifies an accountability partner) if the user opens up an app/site that is blocked.
4. User configures a daily plan that limits social media to 5 minutes per hour, but with some custom hooks that make it even more effective. When the user opens up one of the limited social media sites, FocusMe opens up a dangerous sounding mp3 file that the user has configured, and runs the user’s custom script that tints the screen red. If the user closes that social media file, then FocusMe runs the user’s custom script that removes the red tint. If the user reaches the limit, FocusMe runs the user’s custom script that shuts down the computer.
Some events/hooks/trigger points where the user can place these actions:
1. For Pomodoro schedule mode: at the start/end of each pomodoro, start/end of each break, start/end of long break, when the plan is started, when the plan is completed (all pomodoros completed), when the plan is manually stopped, when manually paused, at the end of a manual pause, when a whitelist item is added
2. For Quick schedule mode: at the start/end of the focus time, the time limit is reached, when manually stopped, when manually paused, at the end of a manual pause, when a whitelist item is added
3. For daily/weekly schedule mode: when the plan is manually started, when the plan is manually stopped, when the plan has reached it’s end date (if any), when the plan is auto enabled again (auto enable plan daily), when manually paused, at the end of a manual pause, when a whitelist item is added
3. For Just Block rule type: each time when something is blocked
4. For the Time Limit rule type: each time when a limited item is opened, when the limited item has reached the limited time
5. For Launch Limit: each time when a limited item is launched, when a limited item has reached the limit
6. Computer Breaks: break start, break ended
For the launching of a file, just let the operating system handle things. So if it is an MP3 file, the operating system would open up that MP3 file with whatever is the default app that normally opens an MP3 file. A PNG file would be opened by whatever default app opens up PNGs. There could be a little link in FocusMe that opens up the operating system’s Default Apps settings for convenience. Same with a URL too.
Also add to this the opening of a URL instead of a file at any of the custom events.
Ideally, the user would be able to set up multiple files/apps/urls to run for each custom event.