In regards of the WorkMonitor and WorkEnforcer apps you developed for me before, here are a few changes that I would need you to implement:
1) Do not count user's idle time (i.e. time with no keyboard input or no mouse movement) to break_interval. That is, with break_interval=60, only enforce the break after 60 seconds of non-idle time has passed.
2) Add support for scheduled breaks. A scheduled break starts at a defined time (defined in [url removed, login to view]) and lasts for a defined time. It must be possible to define any number of scheduled breaks, each with different duration. During a scheduled break, the break_interval break must not occur. The format in [url removed, login to view] could be for example:
scheduled_break_message_1=Take your lunch break! You may return to work in %s.
3) After Start button is clicked, make the Controller app ping both WorkEnforcer and WorkMonitor in regular intervals. If the apps are not responding, then kill the process and restart. To test this, add a debug feature to WorkEnforcer that sends the program to an eternal loop if it finds a string "CrashWorkEnforcer" from a window. When this happens, the Controller app should detect that Enforcer has crashed and restart it after a few seconds.