break time reminder app
stretchly is cross-platform electron app that reminds you to take breaks when working with computer.
By default, it runs in your tray and shows reminder window every 10 minutes, that is open for 20 seconds, containing idea for microbreak.
Every 30 minutes, it shows window containing idea for longer 5 minute break.
User gets notified 30 seconds before breaks to be able to prepare to pause the work.
You can finish break or microbreak early, by clicking the link at the bottom
or by using Ctrl/Cmd + x
keyboard shortcut (when not in strict mode).
You can pause/resume reminding of breaks. On Windows and macOS, you can set app to start at login.
You can also skip to the next break or microbreak anytime from menu, or reset (restart) breaks.
Tray tooltip shows information about time left till next (micro)break, number of microbreaks until next break or time left in pause till breaks resume.
Microbreaks and breaks can be customized:
- you can set duration and interval of break
- you can enable/disable breaks
- you can enable/disable strict mode (breaks can't be finished early)
- you can choose from different color schemes
- you can pick a sound to be played at the end of the break
- you can set break window to be fullscreen
- you can disable showing of break ideas
- you can disable showing of break and microbreak notifications
- you can disable monitoring of system idle time for natural breaks (when user leaves and after return idle time is greater then break duration, stretchly will reset breaks)
- you can disable showing breaks on all of your monitors
- you can choose language for interface
All settings can be reset to defaults.
All settings are saved in JSON file. To learn more about how to find it, read this or use Ctrl/Cmd + d
shortcut in About window.
Related code looks like this:
const dir = app.getPath('userData')
const settingsFile = `${dir}/config.json`
In config file, change useIdeasFromSettings: false,
to useIdeasFromSettings: true,
and edit
breakIdeas
and microbreakIdeas
.
In config file, change breakNotificationInterval: 30000,
to whatever value you want. 30000 is 30 seconds. Sane goes for microbreak.
In config file, set notifyNewVersion: false,
to disable showing of new version's notification.
Latest installers for macOS, Windows, Linux and FreeBSD can be found here.
On macOS you can install it by running brew update && brew cask install stretchly
You can create installer by running npm run pack
or npm run dist
after npm install
.
To run app you will need nodejs. Clone the repo, run npm install
and then simply do npm start
to start stretchly.
It should run on any electron supported platform. Tested on OS X, Windows and Ubuntu Linux.
Please see http://electron.atom.io/docs/api/tray/ for Electron's Tray Linux specifics. Having libappindicator1
installed should be enough for stretchly.
For Natural breaks, you might need some packages too (libxss-dev
).
Feel free to join development of this app via Issues and Pull Requests. Before implementing a feature, please open an Issue first, so we can be sure that no-one else is working on it and that the changes will be accepted.
- one can use
Ctrl/Cmd + d
shortcut in About window to show debug information:- location of settings file
- time left and reference of break planner
- tray tooltip does not work correctly on macOS (electron/electron#9447)
- fullscreen does not work on Linux (electron/electron#11632)
- power monitoring not working properly (electron/electron#8560)
- notifications not working on the latest Win 10 (electron/electron#10864)
- tests
- PR tools
- make installers/executables
- create about page
- only one instance
- create longer breaks (5min every 30 minutes)
- create settings for breaks
- remember settings after restart
- autostart app
- start break anytime from menu
- sound notification at the end of the break
- strict mode (can't finish break early)
- information about when will be the next break
- create keyboard shortcuts
- color-picker for themes
- some kind of silent mode (see #44)
- history/timeline of breaks
- localization support (l12n, gettetxt via Crowdin, Weblate or so)
(by date of the first contribution)
- Jan Hovancik, @hovancik, hovancik.net
- Martina Mocinecova, (stretchly logo), color schemes
- Jason Barry, @JCBarry, jcbarry.com
- Alex Alekseyenko, @alexalekseyenko
- Sean Manton, @sxmanton
- Yuriy Gromchenko, @gromchen
- Mael, @laem
- Marian Dolinský, @bramborman
- midpoint, @midpoint
- stothew, @stothew
- Zhivko Kabaivanov, @unholyHub
- sergiopjf, @sergiopjf
- William Chang, @wilicw
- Purva, @purva98
- Riddhi, @riddhi99
- Fahim Dalvi, @fdalvi. fdalvi.github.io
- Nic Desjardins, @nicdesjardins
- https://github.com/typefoo/node-icns
- https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/
- http://web.stanford.edu/dept/EHS/prod/general/ergo/microbreaks.html
- https://www.spineuniverse.com/wellness/ergonomics/workstation-ergonomics-take-break
- http://www.lifehack.org/articles/productivity/21-counter-intuitive-break-ideas-to-boost-your-productivity-at-work.html
- http://www.latofonts.com/lato-free-fonts/
- http://www.huffingtonpost.com/2012/07/24/sitting-at-work-why-its-dangerous-alternatives_n_1695618.html
- http://www.unm.edu/~lkravitz/Article%20folder/sittingUNM.html
Sounds used in this application are listed here.
crystal glass
by mlteenie, available under the Attribution License.wind chime
by GnoteSoundz, available under the Creative Commons 0 License.tic toc
by magundah14, available under the Creative Commons 0 License.silence
by parcodeisuoni, available under the Attribution License.
See LICENSE file.