Header: sane-break

No break reminder works (for me)

2024-08-08

Break reminders often demand an immediate pause in my work, which can be quite annoying. I frequently find myself mindlessly skipping or postponing breaks, rendering all the reminders ineffective. This led me to create Sane Break, an alternative break reminder.

 

As the creators of RSIBreak aptly point out, whether it's the health of your wrist or your eyes that concerns you, you need to take short breaks and it's all too easy to forget when you are busy. I'm well aware of the popular 20-20-20 rule: after 20 minutes of work, look at something 20 feet away for 20 seconds. Yet, despite using break reminders, I struggle to take regular and meaningful breaks.

All too often, I'm deeply focused on a task when the break reminder appears. Almost instinctively, I click "skip" or "postpone" without a second thought. Before I know it, hours have passed without a single break.

Screenshot of Stretchly

Image copied from https://hovancik.net/stretchly/about/

The issue of mindless skips or postpones #

Many break reminders fail to serve their purpose due to mindless skipping or postponing as described above. Several ways are provided to prevent this, but none have worked for me.

For instance, some break reminders provide multiple notifications or warnings before the break, prompting the user to prepare. However, I've found that I tend to ignore these notifications and continue working regardless. If the notification appears too early, I want to finish more before the break and don't want to stop early. But if it comes too late, I don't have enough time to finish my task before the break. In either case, I end up mindlessly skipping breaks despite these notifications.

If it's a problem of mindless skipping or postponing, what about force breaks, pausing my work without a way to skip? But I think that force breaks can be even worse, even though paired with notifications. The sudden disruption can be frustrating, particularly when I'm in the middle of a complex task or a creative flow. Instead of encouraging me to take a break, these forceful reminders often lead to annoyance, and I often end up quitting the break reminder entirely. This again defeats the purpose of the reminder.

Screenshot of SafeEyes

Image copied from https://slgobinath.github.io/SafeEyes/

Avoid disruption, and break when ready #

After experimenting with various break reminders and settings, I've identified the root cause of mindless skipping is the sudden disruption. Many break reminders often demand an immediate break, regardless of my current work status. This abrupt interruption can be annoying, especially when I'm focused, and it tempts me to skip or postpone the break without a second thought.

Instead of fighting this instinctive reaction, an effective break reminder should provide a gentle initial nudge, allowing users to wrap up their current task, while also enforce the break if necessary. Additionally, the break countdown should start automatically when the user is away from the keyboard. This approach enables me to take breaks without mindless skips or frustration.

I appreciate the design of RSIBreak, which employs a two-phase system:

  1. Phase 1: A small, flashing window reminds me to take a break, but I can still continue working.
  2. Phase 2: If I ignore the reminder and keep working for too long, the window grows full-screen, forcing me to take a break.
Screenshot of RSIBreak

Image copied from https://docs.kde.org/trunk5/en/rsibreak/rsibreak/break-types.html

This design is almost aligned with my criteria of an effective break reminder. However, RSIBreak has some drawbacks. If I stop working during the first phase, RSIBreak does not automatically enter the second, full-screen phase. This means I can still look at the screen and think about the task, defeating the purpose of relaxing my eyes. It also has a limited platform support, working only on Linux with X11, not Linux with Wayland, nor Windows or macOS. This limited compatibility can be a deal-breaker for many users.

Why not make my own? #

To address these issues, I'm creating my own break reminder called Sane Break. I won't delve into the technical details here, but I learned a lot about building a C++ app during the process. Sane Break builds upon the strengths of RSIBreak sharing a similar design of RSIBreak with 2 phases. The key difference is that it automatically enter the second, full-screen phase when I stopped working, forcing me to look away. Additionally, Sane Break has no skip or postpone button. If I really want to postpone breaks, I have to do this via the menu in the system tray during the phase 1. This adds some friction to postponing breaks and further avoids mindless skips or postpones. This way, Sane Break strikes a balance between being considerate of your workflow and ensuring that you take breaks.

Screenshot of Sane Break

Conclusion #

Taking meaningful breaks without frustration is not an easy task. Sane Break is a cross-platform and polite break reminder, and I hope it can help more people take regular breaks without disruption or frustration, or serve as a base for future break reminder creations.

Leave your comments and reactions on GitHub