Giter VIP home page Giter VIP logo

stretchly's Introduction

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

Stretchly logo

The 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! Become a Sponsor!

Table of contents

Install GitHub All Releases Packaging status

The latest official installers and portable versions for macOS, Windows, Linux and FreeBSD can be found at Github Releases page.

macOS

You can also install Stretchly with Homebrew by running brew update && brew cask install stretchly. When upgrading, run brew update && brew cask upgrade.

Stretchly is not signed (due to its costs) so you will need to use this workaround for the first run: Open a Mac app from an unidentified developer.

Windows

You can install Stretchly for all users silently by running this as administrator: installer.exe /S /allusers.

You can also install Stretchly with Chocolatey by running the following command from the command line or from PowerShell: choco install stretchly. Upgrade with choco upgrade stretchly.

Stretchly is also available in Microsoft's winget.

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.

Running from source

To run Stretchly from source you will need Node.js, ideally the one specified in package.json. Clone the repo, run npm install and then simply run npm start to start Stretchly.

Custom installer

You can create a custom installer by running npm run pack or npm run dist after npm install --no-save.

Default behavior

When you run Stretchly for the first time, you are presented with a Welcome window that allows you to change the language, review the settings, view the online tutorial or simply continue with the default settings.

Stretchly itself lives in your tray, only displaying a reminder window from time to time, which contains an idea for a break.

By default, there is a 20 second Mini Break every 10 minutes and a 5 minute Long Break every 30 minutes (after 2 Mini Breaks).

You'll be notified 10 seconds before a Mini Break (and 30 seconds before a Long Break) so that you can prepare to pause your work.

When a break starts, you can postpone it once for 2 minutes (Mini Breaks) or 5 minutes (Long Breaks). Then, after a specific time interval passes, you can skip the break. Both actions are available by clicking on the link at the bottom of window or by using the Ctrl/Cmd + X keyboard shortcut.

Clicking the Stretchly icon in your tray area will display the current status of breaks, provide menu items with extra functionality, and link to the Preferences.

Stretchly is monitoring your idle time, so when you are idle for 5 minutes, breaks will be reset until you return.

Stretchly is also monitoring Do Not Disturb mode, so breaks are paused when DnD mode is On.

Stretchly follows the theme of your system and is also available in dark mode.

Preferences

Most of the preferences can be customized by clicking on the "Preferences" item in the tray menu.

Preferences are divided into multiple categories and you are encouraged to take some time to make Stretchly your own by customizing them.

You can also Restore the defaults to return to the default preferences state.

Advanced preferences

All preferences are saved in a JSON file. Use the Ctrl/Cmd + D shortcut while viewing the About section of Preferences, to show debug info and display a clickable link to the file.

It's recommended to Quit Stretchly before editing the preferences file.

To make sure that all works as expected, it's always good idea to check that format of the preferences file is correct, ie. by using jsonformatter.

Some of the extra settings are available in Contributor Preferences for Contributors. Those are marked by GitHub All Releases badge.

Note: Before 1.0, Mini Breaks and Long Breaks were called Microbreaks and Breaks, respectively. To keep the upgrade smooth they still use that name in preferences file and in code.

Editing Break ideas

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

Note that when a new Stretchly version with new break ideas is out, your custom ideas will not be overwritten.

Editing Break notification interval GitHub All Releases

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

Editing sunrise time to pause breaks until morning

In the preferences file you can set the morningHour setting to pause until that hour today or the 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 GitHub All Releases

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

New version notification GitHub All Releases

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

Play sound at the start of the Break GitHub All Releases

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

Natural breaks inactivity time GitHub All Releases

In the preferences file, set naturalBreaksInactivityResetTime to your preferred value (in milliseconds greater than than 20000ms). This is an idle time length, after which Stretchly timers will be cleared and will stay at 0 until the user resumes activity.

Volume for break sounds GitHub All Releases

In the preferences 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.

Postpone/Finish Break Shortcut

In the preferences file, set endBreakShortcut to your preferred value. We do not validate this input, so please check Electron's documentation for available values for key and modifier.

Appearance GitHub All Releases

In the preferences file, change themeSource: 'system' to either 'light' or 'dark' to always use the specified theme.

Welcome window GitHub All Releases

To show the Welcome window again on the next start, change "isFirstRun" to true.

Contributor Preferences

Stretchly is free but you can support it by contributing code or money.

Become a Patron! Become a Sponsor!

You will be rewarded by getting access to extra preferences (+ other perks) available only to Contributors. You can access the extra preferences after authenticating with Patreon or Github in the "Love Stretchly" section of Preferences.

Development

Feel free to join in the 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.

Debugging

If you start Stretchly in development mode with the npm run dev command, it makes it possible to debug the application in your browser on http://localhost:9222.

Also, you can use Stretchly's built-in debug shortcut by pressing Ctrl/Cmd + D in the About section to show information such as:

  • Location of the preferences file (Clicking on preferences file location will open it.)
  • Debug information for break planner

You can copy debug information to the clipboard.

Known issues

Contributors

  • Jan Hovancik, @hovancik, hovancik.net
  • Martina Mocinecova, (pre-1.0 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
  • Balazs Nasz, @balazsnasz

Also see Github's list of contributors.

Humans and Tools

Sounds credits

Sounds used in this application are listed here.

Fonts credits

This app uses Open Sans fonts licensed under the Apache License, Version 2.0.

License

See LICENSE file.

stretchly's People

Contributors

hovancik avatar jcbarry avatar aleuca avatar asterite avatar balazsnasz avatar gowee avatar bramborman avatar fizvlad avatar hum4n01d avatar unholyhub avatar p-bo avatar alexalekseyenko avatar stothew avatar purva98 avatar pan93412 avatar cgand avatar whiver avatar shericodes avatar sveijk avatar mfyz avatar jackymancs4 avatar rahmeen14 avatar sxmanton avatar tl-sjoerdoptland avatar sunn-e avatar valarmarkhulis avatar jakub-mikolajczyk-pl avatar gogoogle avatar cloo avatar emahfuz 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.