break time reminder app
stretchly is a cross-platform electron app that reminds you to take breaks when working on your computer.
By default, it runs in your tray and displays a reminder window containing an idea for a microbreak for 20 seconds every 10 minutes.
Every 30 minutes, it displays a window containing an idea for a longer 5 minute break.
The user gets notified 30 seconds before each break to be able to prepare to pause the work.
You can close the break or microbreak window 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 stretchly's break reminders. On Windows and macOS, you can set the app to start at login. Also, Do Not Disturb mode is respected on those platforms.
You can also skip to the next break or microbreak anytime from the menu, or reset (restart) breaks.
The tray tooltip shows information about how much time is left till the next (micro)break, the number of microbreaks until the next break, or the time remaining in pause till breaks resume.
Tray menu displays the time and type of next break as well.
Microbreaks and breaks can be customized:
- you can set the duration and interval of breaks
- 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 the break window to be fullscreen
- you can disable (micro)break ideas
- you can disable pre-(micro)break notifications
- you can disable (micro)break notification sounds
- 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 the display of breaks on all of your monitors
- you can change the default monochrome tray icon to a colorful version
- you can change the interface language
All settings can be reset to defaults.
On firts run, stretchly will present you with Welcome window, where you can set your locale and read Tutorial.
You can view Tutorial again anytime from About window.
All settings are saved in a 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 the config file, change useIdeasFromSettings: false,
to useIdeasFromSettings: true,
and edit
breakIdeas
and microbreakIdeas
.
In the config file, change breakNotificationInterval: 30000,
to whatever value you want. 30000 is 30 seconds. Same goes for microbreak.
In the config file you can set the morningHour
setting to pause until that hour this or next day
Otherwise, you can set morningHour: "sunrise"
and set posLatitude
, posLongitude
in
settings to pause until the actual sunrise in your area.
E.g. if you live in Boston you would set:
morningHour: "sunrise",
posLatitude: 42.3,
posLongitude: 71
In the config file, set notifyNewVersion: false,
to disable new version notification.
Latest installers for macOS, Windows, Linux and FreeBSD can be found here.
On macOS you can install stretchly by running brew update && brew cask install stretchly
.
On Windows, you can install stretchly for all users silently by running this as administrator: installer.exe /S /allusers
.
You can create an installer by running npm run pack
or npm run dist
after npm install --no-save
.
To run app you will need nodejs. Clone the repo, run npm install
and then simply run npm start
to start stretchly.
It should run on any electron supported platform. Tested on macOS, 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 so 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)
- tray icon is not rendered correctly on Linux (electron/electron#12791)
- 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 and #327)
- 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
- Vladislav Kuznecov, @fizvlad
- Oleg V., @neooleg
- Manuel Jesús Aguilera Castro, @manueljaguilera
- Ciprian Rusen, www.digitalcitizen.life
- Carlo Gandolfi, @cgand
- Kavya Jain, @kavya-jain
- Denys Otrishko, @lundibundi
- p-bo, @p-bo
- Alina Leuca, @alinaleuca
- Sabine van der Eijk, @Sabin_E
- JavaScript Joe, @jsjoeio
- Ismail Demirbilek, @dbtek
- Giacomo Rossetto, @jackymancs4
- Hum4n01d, @hum4n01d
- Ary Borenszweig, @asterite
- 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.
This app uses Lato fonts under the OFL license. See OFL.txt file.
See LICENSE file.