hovancik / stretchly

The break time reminder app
https://hovancik.net/stretchly
BSD 2-Clause "Simplified" License
4.53k stars 437 forks source link

[Bug]: Mini breaks not working with long breaks #1011

Closed stilldg closed 3 years ago

stilldg commented 3 years ago

Version

Known issues

Existing issues

What operating system are you using?

Linux

Operating System Version

Linux box 5.10.53-1-MANJARO #1 SMP PREEMPT Mon Jul 26 07:18:28 UTC 2021 x86_64 GNU/Linux

Reproduction steps

  1. Wait for 3 mini breaks to pass
  2. It resets and goes back to mini break 1 ... Reproduces how often: 100% (unless i manually skip breaks)

Expected Behavior

Long breaks to start after x mini breaks

Actual Behavior

Long breaks never start unless manually skipping through them

Relevant log output

[2021-07-31 06:59:03.401] [info]  Stretchly: initializing...
[2021-07-31 06:59:03.409] [info]  Stretchly: loading preferences
[2021-07-31 06:59:03.419] [info]  Stretchly: starting Idle time monitoring
[2021-07-31 06:59:03.420] [info]  Stretchly: starting Do Not Disturb monitoring
[2021-07-31 07:28:43.322] [info]  Stretchly: showing Mini Break notification
[2021-07-31 07:28:53.597] [info]  Stretchly: showing window 1 of 2
[2021-07-31 07:28:53.598] [info]  Stretchly: starting Mini Break
[2021-07-31 07:28:53.625] [info]  Stretchly: showing window 2 of 2
[2021-07-31 07:28:55.937] [info]  Stretchly: postponing Mini Break
[2021-07-31 07:30:45.938] [info]  Stretchly: showing Mini Break notification
[2021-07-31 07:30:56.212] [info]  Stretchly: showing window 2 of 2
[2021-07-31 07:30:56.220] [info]  Stretchly: showing window 1 of 2
[2021-07-31 07:30:56.220] [info]  Stretchly: starting Mini Break
[2021-07-31 07:35:56.242] [info]  Stretchly: finishing Mini Break
[2021-07-31 07:35:56.304] [info]  Stretchly: pausing breaks because of idle time
[2021-07-31 07:36:02.313] [info]  Stretchly: resuming breaks after idle time
[2021-07-31 08:05:52.314] [info]  Stretchly: showing Mini Break notification
[2021-07-31 08:06:02.589] [info]  Stretchly: showing window 1 of 2
[2021-07-31 08:06:02.590] [info]  Stretchly: starting Mini Break
[2021-07-31 08:06:02.603] [info]  Stretchly: showing window 2 of 2
[2021-07-31 08:11:02.609] [info]  Stretchly: finishing Mini Break
[2021-07-31 08:11:04.000] [info]  Stretchly: pausing breaks because of idle time
[2021-07-31 08:11:08.004] [info]  Stretchly: resuming breaks after idle time
[2021-07-31 08:16:12.260] [info]  Stretchly: pausing breaks because of idle time
[2021-07-31 08:16:29.275] [info]  Stretchly: resuming breaks after idle time
[2021-07-31 08:46:19.278] [info]  Stretchly: showing Mini Break notification
[2021-07-31 08:46:29.552] [info]  Stretchly: showing window 1 of 2
[2021-07-31 08:46:29.553] [info]  Stretchly: starting Mini Break
[2021-07-31 08:46:29.579] [info]  Stretchly: showing window 2 of 2
[2021-07-31 08:46:31.016] [info]  Stretchly: postponing Mini Break
[2021-07-31 08:48:21.018] [info]  Stretchly: showing Mini Break notification
[2021-07-31 08:48:31.323] [info]  Stretchly: showing window 2 of 2
[2021-07-31 08:48:31.336] [info]  Stretchly: showing window 1 of 2
[2021-07-31 08:48:31.337] [info]  Stretchly: starting Mini Break
[2021-07-31 08:53:31.355] [info]  Stretchly: finishing Mini Break
[2021-07-31 08:53:32.096] [info]  Stretchly: pausing breaks because of idle time
[2021-07-31 08:53:37.100] [info]  Stretchly: resuming breaks after idle time

Preferences

{
    "microbreakDuration": 600000,
    "microbreakInterval": 2400000,
    "breakDuration": 1200000,
    "breakInterval": 3,
    "breakNotification": true,
    "microbreakNotification": true,
    "breakNotificationInterval": 30000,
    "microbreakNotificationInterval": 10000,
    "microbreak": true,
    "break": true,
    "microbreakStrictMode": false,
    "breakStrictMode": false,
    "morningHour": 6,
    "microbreakPostpone": true,
    "breakPostpone": true,
    "microbreakPostponeTime": 120000,
    "breakPostponeTime": 300000,
    "microbreakPostponesLimit": 1,
    "microbreakPostponableDurationPercent": 30,
    "breakPostponesLimit": 1,
    "breakPostponableDurationPercent": 30,
    "mainColor": "#ffffff",
    "transparentMode": true,
    "opacity": 0.9,
    "audio": "crystal-glass",
    "volume": 1,
    "fullscreen": true,
    "ideas": false,
    "naturalBreaks": true,
    "naturalBreaksInactivityResetTime": 300000,
    "allScreens": true,
    "useIdeasFromSettings": false,
    "language": "en",
    "notifyNewVersion": true,
    "isFirstRun": false,
    "posLatitude": 0,
    "posLongitude": 0,
    "useMonochromeTrayIcon": false,
    "useMonochromeInvertedTrayIcon": false,
    "silentNotifications": false,
    "monitorDnd": true,
    "microbreakStartSoundPlaying": false,
    "breakStartSoundPlaying": false,
    "themeSource": "system",
    "endBreakShortcut": "CmdOrCtrl+X",
    "breakWindowWidth": 0.85,
    "breakWindowHeight": 0.85,
    "checkNewVersion": true,
    "breakIdeas": [
        {
            "data": [
                "Not alone",
                "Do you find it hard to take a break alone? Try to do it with a co-worker. Aside from making it easier to stick to breaks, you will have a chance to get to know them better. Taking breaks together increases productivity."
            ],
            "enabled": true
        },
        {
            "data": [
                "Step away",
                "Do you ever notice how your brain can figure things out by itself? All it takes is to step away from the computer and take a break to think about something totally unrelated."
            ],
            "enabled": true
        },
        {
            "data": [
                "Microbreaks",
                "Rest is a key component in ensuring the performance of the musculoskeletal system. Frequent breaks can decrease the duration of a task and help lower the exposure to ergonomic injury risk."
            ],
            "enabled": true
        },
        {
            "data": [
                "Meditation",
                "Research studies suggest that mindfulness-based exercises help decrease anxiety, depression, stress, and pain, and help improve general health, mental health, and quality of life. Not sure how to start? There are numerous apps to help you out."
            ],
            "enabled": true
        },
        {
            "data": [
                "Blink",
                "Looking at screens for a long time causes you to blink less, thus exposing your eyes to the air. Blink rapidly for a few seconds to refresh the tear film and clear dust from the eye surface."
            ],
            "enabled": true
        },
        {
            "data": [
                "Ergonomics",
                "Improper height and angle of the keyboard, mouse, monitor or working surface can cause health problems. Take some time to read about desk ergonomics."
            ],
            "enabled": true
        },
        {
            "data": [
                "Move",
                "There are a lot of ways you can exercise within your office. Try marching in place or doing desk push-ups."
            ],
            "enabled": true
        },
        {
            "data": [
                "Change",
                "Do you have a stability ball or standing work desk? Consider replacing your desk chair with them for a while."
            ],
            "enabled": true
        },
        {
            "data": [
                "Notice",
                "Are you daydreaming or having trouble focusing? It is a sign that you need to take a break."
            ],
            "enabled": true
        },
        {
            "data": [
                "Tech",
                "How about taking a no-tech walk?"
            ],
            "enabled": true
        },
        {
            "data": [
                "Metabolism",
                "Emerging research shows that sitting for long periods of time contributes to risk of metabolic syndrome, heart attack and stroke risk and overall death risk, among others. Taking regular walking breaks can help your circulation, working to counteract some of those problems."
            ],
            "enabled": true
        },
        {
            "data": [
                "Active Meetings",
                "How about moving meetings from the conference room to the concourse? Walking not only burns calories but it may even foster a sense of collaboration."
            ],
            "enabled": true
        },
        {
            "data": [
                "Fruit",
                "Take your time and eat some fruit. Slowly. Notice the flavor, the texture, the freshness."
            ],
            "enabled": true
        },
        {
            "data": [
                "Bathrooms",
                "Walk to the farthest bathroom in the worksite facility when going to the restroom."
            ],
            "enabled": true
        },
        {
            "data": [
                "Coffee break",
                "Going on coffee break? Consider doing a 5-minute walk every time you go for one."
            ],
            "enabled": true
        },
        {
            "data": [
                "Colleagues",
                "Do not email or message office colleagues, walk to their desks to communicate with them."
            ],
            "enabled": true
        },
        {
            "data": [
                "Learning",
                "In a study of healthy volunteers, NIH researchers found that taking short breaks, early and often, may help our brains learn new skills."
            ],
            "enabled": true
        },
        {
            "data": [
                "Exercise",
                "Evidence suggests small amounts of regular exercise can bring dramatic health benefits, including measurably reducing stress."
            ],
            "enabled": true
        },
        {
            "data": [
                "Repeat",
                "Have you found your stretch-ly-routine? Do not forget to repeat it for more than once to better fight effects of prolonged sitting."
            ],
            "enabled": true
        },
        {
            "data": [
                "Wrist and forearm",
                "Extend your arms with the palms facing towards you, then slowly rotate the hands four times clockwise, then four times counter-clockwise."
            ],
            "enabled": true
        },
        {
            "data": [
                "Back stretching",
                "Join your hands behind your head, then lift them together up above your head ending with your palms facing upward."
            ],
            "enabled": true
        },
        {
            "data": [
                "Mobilize",
                "For every thirty minutes of stagnation, you should have at least one minute of stimulation."
            ],
            "enabled": true
        },
        {
            "data": [
                "7 Minute Workout",
                "This workout packs in a full-body exercise routine in a fraction of the time. But as with any exercise, be careful. There are numerous apps to get you started."
            ],
            "enabled": true
        },
        {
            "data": [
                "Pulse",
                " Raise your pulse rate to 120 beats per minute for 20 straight minutes four or five times a week doing anything you enjoy. Regularly raising your heart rate results in improved cardiovascular health."
            ],
            "enabled": true
        },
        {
            "data": [
                "Take the stairs ",
                "Studies have shown that stair climbing, which is considered vigorous-intensity physical activity, burns more calories per minute than jogging."
            ],
            "enabled": true
        },
        {
            "data": [
                "Make art",
                "Art therapy is known to have great mental health benefits, especially when it comes to stress management. How about writing a quick poem, taking a picture or painting something small?"
            ],
            "enabled": true
        },
        {
            "data": [
                "Declutter",
                "A clean space helps your focus at work and is often linked to positive emotions like happiness."
            ],
            "enabled": true
        },
        {
            "data": [
                "Lunch outside",
                "Nature is linked to positive emotions and decreased stress and anxiety. Whenever possible, try to take your daily lunch break outside, surrounded by some greenery."
            ],
            "enabled": true
        },
        {
            "data": [
                "Public transport",
                "If you use public transport regularly, you can stand instead of sitting. If it is possible, try to replace as many of your daily trips as possible with walking or cycling."
            ],
            "enabled": true
        },
        {
            "data": [
                "Yawning",
                "Yawning can be really helpful, as it produces tears to help moisten and lubricate the eyes."
            ],
            "enabled": true
        },
        {
            "data": [
                "Focus change",
                "Hold one finger close to the eye and focus on it. Slowly move the finger away, focus far into the distance and then back to the finger. Bring the finger back and focus on something far away."
            ],
            "enabled": true
        },
        {
            "data": [
                "Palming",
                "While seated, brace elbows on the desk and close to the desk edge. Let your weight fall forward and cup hands over eyes. Close your eyes and inhale slowly through nose and hold for few seconds. Continue deep breathing."
            ],
            "enabled": true
        },
        {
            "data": [
                "Hand squeezes",
                "Squeeze a pair of balled-up socks or a soft rubber ball, hold for 5 seconds. Repeat whole process few times."
            ],
            "enabled": true
        },
        {
            "data": [
                "Slow Breathing",
                "Emerging research suggests potential for use of controlled slow breathing techniques as a means of optimising physiological parameters that appear to be associated with health and longevity."
            ],
            "enabled": true
        }
    ],
    "microbreakIdeas": [
        {
            "data": "Go grab a glass of water.",
            "enabled": true
        },
        {
            "data": "Slowly look all the way left, then right.",
            "enabled": true
        },
        {
            "data": "Slowly look all the way up, then down.",
            "enabled": true
        },
        {
            "data": "Close your eyes and take few deep breaths.",
            "enabled": true
        },
        {
            "data": "Close your eyes and relax.",
            "enabled": true
        },
        {
            "data": "Stretch your legs.",
            "enabled": true
        },
        {
            "data": "Stretch your arms.",
            "enabled": true
        },
        {
            "data": "Is your sitting posture correct?",
            "enabled": true
        },
        {
            "data": "Slowly turn head to side and hold for 10 seconds.",
            "enabled": true
        },
        {
            "data": "Slowly tilt head to side and hold for 5-10 seconds.",
            "enabled": true
        },
        {
            "data": "Stand from your chair and stretch.",
            "enabled": true
        },
        {
            "data": "Refocus your eyes on an object at least 20 meters away.",
            "enabled": true
        },
        {
            "data": "Take a moment to think about something you appreciate.",
            "enabled": true
        },
        {
            "data": "Take a moment to smile at being alive.",
            "enabled": true
        },
        {
            "data": "A truly ergonomic workstation is one that you regularly push away from.",
            "enabled": true
        },
        {
            "data": "Close your eyes and count your breaths.",
            "enabled": true
        },
        {
            "data": "Close your eyes and name the things you hear.",
            "enabled": true
        },
        {
            "data": "Place your fingertips on your shoulders. Roll your shoulders forward for 10 seconds, then backward.",
            "enabled": true
        },
        {
            "data": "Raise your right arm, stretch it over your head to the left, and hold for 10 seconds. Repeat on the other side.",
            "enabled": true
        },
        {
            "data": "With your right hand, grab each finger of your left hand in turn and squeeze. Repeat on the other side.",
            "enabled": true
        },
        {
            "data": "Stand up and do a lunge. Hold for 10 seconds, then do the other leg.",
            "enabled": true
        },
        {
            "data": "Close your eyes and simply notice whatever arises in current moment, without judgement.",
            "enabled": true
        },
        {
            "data": "Focus every 20 minutes for 20 seconds on an object at 20 feet distance.",
            "enabled": true
        },
        {
            "data": "If you need help, ask for it.",
            "enabled": true
        },
        {
            "data": "Do one thing at a time.",
            "enabled": true
        },
        {
            "data": "Is your attention spent wisely?",
            "enabled": true
        },
        {
            "data": "Change your sitting posture.",
            "enabled": true
        },
        {
            "data": "Expose your eyes to natural light.",
            "enabled": true
        },
        {
            "data": "With your eyes closed, slowly and gently raise your eyes to the ceiling and back down to the floor.",
            "enabled": true
        },
        {
            "data": "With your eyes closed, slowly and gently move your eyes to the left, then slowly to the right.",
            "enabled": true
        },
        {
            "data": "Shake your hands out to get some relief.",
            "enabled": true
        },
        {
            "data": "One at a time, touch the tip of each finger to the tip of your thumb so they make an O-shape.",
            "enabled": true
        },
        {
            "data": "Make a fist and then slide your fingers up until they point toward the ceiling, like you're telling someone to stop.",
            "enabled": true
        },
        {
            "data": "Make a fist and then fan your fingers out and stretch them as far as you can.",
            "enabled": true
        },
        {
            "data": "Sit tall, arms hanging at your sides, and slowly rotate neck in one direction in a large circle.",
            "enabled": true
        },
        {
            "data": "Stand tall and slowly tilt your head toward the shoulder using the same hand until you feel a strech.",
            "enabled": true
        },
        {
            "data": "Stand tall with your arms by your side. Squeeze your solder blades together and hold.",
            "enabled": true
        },
        {
            "data": "Stand tall with your arms raised along your shoulders. Move hands slightly behind your back, hold for a second and return.",
            "enabled": true
        }
    ],
    "showBreaksAsRegularWindows": false,
    "appExclusions": [],
    "pauseForSuspendOrLock": true,
    "pauseBreaksShortcut": "",
    "resumeBreaksShortcut": "",
    "screen": "primary"
}

Additional information

No response

Code of Conduct

hovancik commented 3 years ago

Hi @stilldg ,

your breaks get reset because of idle time:

[2021-07-31 07:30:56.220] [info]  Stretchly: starting Mini Break
[2021-07-31 07:35:56.242] [info]  Stretchly: finishing Mini Break
[2021-07-31 07:35:56.304] [info]  Stretchly: pausing breaks because of idle time
[2021-07-31 07:36:02.313] [info]  Stretchly: resuming breaks after idle time

You can disable this behavior in Preferences: Monitor system idle time or change the time after which breaks are reset in idle time: https://github.com/hovancik/stretchly#natural-breaks-inactivity-time-

stilldg commented 3 years ago

Hi,

I assumed that it would pause on the current break, and as soon as it detects some action then it resumes in place. I think that this would make a lot more sense, since usually I leave my computer for longer than the break time, so would you ever consider adding an option for this in the future?

Thanks.

hovancik commented 3 years ago

Hi, what do you mean by "it"? Idle time detection? Or something else?

hovancik commented 3 years ago

To help with your issue, I think you could set "naturalBreaksInactivityResetTime": 300000, to let's say 600000 which is 10 minutes and idle time would reset breaks only after 10 minutes of idle time.

stilldg commented 2 years ago

By "it" I was indeed referring to the idle time detection. So for example, if I am away from my computer for say 5 minutes, I would like to pause the current timer in place, and then when I return to my computer it would start the timer again right where it left off, since otherwise I would rarely reach the long breaks as sometimes I am away from my computer for some time, so it would be a nice feature to have.

I understand this isn't may not be priority/desire for you to implement, and if that is the case then I would be willing to create a fork and attempt to add this, and then if it works well you can consider merging it. There's also some issues I have noticed in KDE Plasma where I had to add the following to my window settings: https://i.imgur.com/1INJb68.png or else it would show white background with barely visible text. None of the themes work but that is how I fixed the issue to get the text to display black on a white background. Here's some examples:

Before: https://i.imgur.com/SY7vl8E.png After: https://i.imgur.com/1vK4Epp.png

I have to use the Snow white theme to get the text to display with this method, but I would like to see if there's anything I can do to fix this as I prefer dark themes.

By the way, thank you for creating this. I will be donating soon as this project has done a lot for my productivity :) -- let me know what you think about my proposed idea + fixes.

hovancik commented 2 years ago

Hey, sorry for late reply, life gets in a way sometimes.

Some time ago, I tried to implement what you describe: when there is idle time, remember where you left of and continue there, but I had some issues. Don't remember what exactly. Stretchly is complicated. I think there are some issue where people asked for this functionality. You can try do it yourself :)

With white texts, there was issue in 1.8, that was fixed in 1.8.1, but not sure what version you are running. There are still some issues where people get empty break windows, but I did not manage to reproduce it.