Giter Site home page Giter Site logo

kuan-li / stretchly Goto Github PK

View Code? Open in Web Editor NEW

This project forked from hovancik/stretchly

0.0 1.0 0.0 13.53 MB

break time reminder app

Home Page: https://hovancik.net/stretchly

License: BSD 2-Clause "Simplified" License

JavaScript 82.43% HTML 15.34% CSS 2.23%

stretchly's Introduction

stretchly Humane Tech Build Status Build status JavaScript Style Guide codecov Join the chat at https://gitter.im/stretchly/Lobby

break time reminder app

stretchly is a cross-platform electron app that reminds you to take breaks when working on your computer.

Become a Patron!

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.

User gets notified 30 seconds before break (and 10 seconds before microbreak) to be able to prepare to pause the work.

When break/microbreak starts, you can postpone it once for 5 and 2 minutes respectively. After a specific time interval passes, you can finish it early.

Both actions are available by clicking the link at the bottom of window or by using Ctrl/Cmd + x keyboard shortcut (except finishing early 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 enable/disable ability to postpone breaks

  • 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 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 monitoring of DND (Do Not Disturb) mode on MacOS and Windows (breaks are not shown in DND mode)
  • you can disable the display of breaks on all of your monitors
  • you can change the default monochrome tray icon to an inverted (Linux, Windows) or a colorful version
  • you can change the interface language

All settings can be reset to defaults.

On first 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.

Advanced settings

All settings are saved in a JSON file. To open it, use Ctrl/Cmd + d shortcut in About window and click on link to it.

Editing break/microbreak ideas

In the settings file, change useIdeasFromSettings: false, to useIdeasFromSettings: true, and edit breakIdeas and microbreakIdeas.

Editing break/microbreak notification interval

In the settings file, change breakNotificationInterval: 30000, to whatever value you want. 30000 is 30 seconds. Same goes for microbreak.

Editing sunrise time to pause breaks until morning

In the settings 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

Editing postpone functionality

In the settings file, you can edit microbreakPostpone and breakPostpone to enable or disable ability to postopne breaks, microbreakPostponeTime and breakPostponeTime to change postopone time in milliseconds, microbreakPostponesLimit and breakPostponesLimit to change number of allowed postpones per break, and finally, microbreakPostponableDurationPercent and breakPostponableDurationPercent to change percentage of break in which user can postpone the break.

New version notification

In the settings file, set notifyNewVersion: false, to disable new version notification.

Play sound at the start of the micro/break

In the settings file, set microbreakStartSoundPlaying: true, to start a microbreak with a sound (The same sounds will be played as at the end of the break). Same for breakStartSoundPlaying.

Natural breaks inactivity time

In the settings file, set naturalBreaksInactivityResetTime to your preferred value (in milliseconds, needs to be bigger than 20000ms). This is a idle time length, after which stretchly timers will be cleared and waiting for user to come back.

Volume for break sounds

In the settings file, set volume to your preferred value. Default value is 1, which is 100% volume. Set it, for example, to 0.61 for 61% volume.

Install Github All ReleasesPackaging status

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.

Running from source

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.

Linux note

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).

If stretchly is not starting, you might need to run sudo sysctl kernel.unprivileged_userns_clone=1. Read more here. Depending on your distro, you probably want to do something similar to this, so the settings are kept after reboot: Add kernel.unprivileged_userns_clone=1 to /etc/sysctl.d/00-local-userns.conf and reboot.

Development

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.

Debugging

One can use Ctrl/Cmd + d shortcut in About window to show debug information:

  • location of settings file (Clicking on settings file location will open it.)
  • debug information for break planner

You can copy debug information to clipboard.

Known issues

TODOs and Ideas

  • 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)

Contributors

(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
  • Jonatan Nyberg, @jony0008
  • Gowee @Gowee
  • William Lin, @FanciestW
  • Hisman Yosika, @dnjstlr555
  • Mehmet Fatih Yıldız, @mfyz
  • Sunny Dhoke, @sunn-e
  • Przemysław Rząd, @rzadp
  • Artūras Stifanovičius, @troyanas
  • pan93412, @pan93412
  • robot-5, robot-5
  • mfyz, mfyz
  • ValarMarkhulis ValarMarkhulis
  • Lucas Costi, @lucascosti
  • Luke Arms, lkrms
  • Chris Heyer, @cheyer
  • Sheri Richardson, @sheriallis
  • Felix W. Dekker, @FWDekker

Humans and Tools

Sounds credits

Sounds used in this application are listed here.

Fonts credits

This app uses Lato fonts under the OFL license. See OFL.txt file.

License

See LICENSE file.

stretchly's People

Contributors

hovancik avatar jcbarry avatar aleuca avatar asterite avatar gowee avatar fizvlad avatar hum4n01d avatar unholyhub avatar p-bo avatar alexalekseyenko avatar purva98 avatar cgand avatar sveijk avatar mfyz avatar bramborman avatar jackymancs4 avatar sxmanton avatar shericodes avatar tl-sjoerdoptland avatar sunn-e avatar valarmarkhulis avatar jakub-mikolajczyk-pl avatar cloo avatar greenkeeper[bot] avatar pan93412 avatar robot-5 avatar rzadp avatar stothew avatar troyanas avatar dbtek avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.