Coder Social home page Coder Social logo

tomatobar's Introduction

TomatoBar

Screenshot

Overview

Have you ever heard of Pomodoro? It’s a great technique to help you keep track of time and stay on task during your studies or work. Read more about it on Wikipedia.

TomatoBar is world's neatest Pomodoro timer for the macOS menu bar. All the essential features are here - configurable work and rest intervals, optional sounds, discreet actionable notifications, global hotkey.

TomatoBar is fully sandboxed with no entitlements.

Download the latest release here or install using Homebrew:

$ brew install --cask tomatobar

If the app doesn't start, install using the --no-quarantine flag:

$ brew install --cask --no-quarantine tomatobar

Integration with other tools

Event log

TomatoBar logs state transitions in JSON format to ~/Library/Containers/com.github.ivoronin.TomatoBar/Data/Library/Caches/TomatoBar.log. Use this data to analyze your productivity and enrich other data sources.

Starting and stopping the timer

TomatoBar can be controlled using tomatobar:// URLs. To start or stop the timer from the command line, use open tomatobar://startStop.

Older versions

Touch bar integration and older macOS versions (earlier than Big Sur) are supported by TomatoBar versions prior to 3.0

Licenses

  • Timer sounds are licensed from buddhabeats

tomatobar's People

Contributors

gliptak avatar ivoronin avatar jerry23011 avatar mash-a avatar scrodde avatar swaysway avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tomatobar's Issues

The sounds are way too loud!

It's great that the menubar utility portion of the app allows me to disable the ticking and ringing sounds, but the wind-up sound is obnoxiously loud. Please add a means to mute that sound as well (or at least to control the volume of the included sounds). Thanks!

Localization for TomatoBar

Hi, I really like this awesome app, would you like to create the Localizable.string file and make TomatoBar localizable?

Allow user to type in the interval time instead of just clicking the up and down arrows

Clicking the arrows to increase the timer to something like 50 mins from 25 mins requires 25 clicks of the up arrow. It would require the same number of clicks of the down arrow to go back down to 25 mins. This is not a great experience for users who want to switch their interval times frequently depending on the kind of work they do.

It would be better if the user could also place the cursor in the number area and type in the number of minutes that they want. So the user can use the arrows for small changes in the interval time, but can type for bigger changes in the interval time.

BetterTouchTool

Hi, this Is an awesome little app.
Is there a way to integrate it with the better touch tool?

Adopt String Catalog for localization

Xcode 15 introduced a new way to localize apps: String Catalog just build the app in Xcode and the strings in the code will be automatically synced into the code. This simplifies the localization process and makes it less possible for issues like #58 to happen.

I can start a PR and migrate it

Add a sound to mark the end of the rest interval

Total non-coder here, very much a Pomodoro fan. TomatoBar might be the nicest menu bar timer I’ve seen. I esp. like the plain white icon (like everything else in the menu bar) and the way the time doesn’t shift around slightly as the digits change.

The one thing I think is missing: a sound when the rest interval is over. It’d be nice to be able to close my eyes or step away from the desk and hear that the two minutes are up, without having to check the menu bar. For me, having to watch the time kinda defeats the idea of taking a break.

Add short/long break intervals

In Pomodoro its usually 2-3 short 5 minute breaks followed by a 10-15 minute break. I added this functionality in a WIP commit denizt@337704f

I don't do swift(ui), so I am not sure if there is a better way to do this. I just did a straight forward implementation, it seems to work. Let me know what you think.

Ticking sound throughout Pomodoro

Thank you for a very useful app! Is there a way to add ticking sound throughout 25 min pomodoro? (not just in the beginning)? This was the recommendation in the original Pomodoro book by Francesco Cirillo (chapter 3) and I would appreciate this option in TomatoBar. Thanks!

Feature Request: Add ability to pause timer

Currently, there is no way to pause the pomodoro timer. It would be a useful feature.

By "pause" I don't mean stop, I mean temporarily pause the timer with the ability to start the timer again at the paused time.

Currently when you stop the timer and press it again it resets to the specified work time.

Allow users to create, save and load presets of intervals

This would allow users to create presets and switch easily depending on the kind of work they do. The presets can be like:

  • Standard Pomodoro
    Work: 25 mins; Short rest: 5 mins; Long rest: 15 mins; Work intervals in a set: 4
  • Longer Pomodoro
    Work: 50 mins; Short rest: 10 mins; Long rest: 30 mins; Work intervals in a set: 3
  • 52/17 Productivity Rule
    Work: 52 mins; Short rest: 17 mins; Long rest: N/A; Work intervals in a set: N/A

I think the Standard Pomodoro preset and the 52/17 Productivity Rule preset can be pre-delivered as presets that come along with the app by default. Users can either edit those presets, or create new custom ones like, for example, the longer Pomodoro one.

notarize in github actions

It's now possible to sign and notarize in github actions through rust crate

You need to install rust, cargo install apple-codesign and look at the documentation to the crate

You don't need to know any Rust for that

menu bar display abnormally.

Hello, thank you for sharing.

I encountered the following bugs during use:

image

More information:

  • macOS Big Sur 11.0.1
  • Tomato V2.0.2
  • My menu bar is set to automatically hide.

Thank you.

Pause timer

I can only stop the timer. A way to pause the timer would be really cool.

Hide timer + app icon

Hi folks,
is it possible to add a switch to hide the timer? It's a bit distracting.

And while I'm here, I've redone the app icon to blend better with other apps on BigSur/Monterey:

Feel free to use it if you like it.

PNG + ICNS: TomatoBar.zip

Any plans to add stats ?

It would be really cool to know how many pomodora was done on some particular day. Is it something this app will consider ?

Break timer gets paused when MacBook goes to sleep

Steps to Reproduce

Device: MacBook Pro (2021)

  1. Start timer.
    Optional: Reduce work interval timer to reach next step faster
  2. Wait for break to start
  3. Once the break timer starts, leave the system on idle without being connected to a power adaptor, and let the MacBook go to sleep automatically
    Note: Your MacBook's sleep timer must be less than the break timer so that the MacBook goes to sleep while the break timer is still active
  4. Come back after some duration that is way past the break timer duration

Observed Behaviour

Check the app's timer, and it will still be in break mode since the break timer got paused when the system when to sleep

Expected Behaviour

Break timer should not have been paused.

Note: A Similar issue does not happen when the work timer is running, since the MacBook does not go to sleep when the work timer is running.

Suggestions

  1. In my opinion, when the system wakes up, the app should not just resume the break timer from where it got paused when the system went to sleep. The app should check how much time had elapsed since the break originally started and see if the break timer is already over. If over, the app should stop the break timer immediately. A new work interval timer should be started if the Stop after break is disabled.
  2. Another option would be to prevent the system from going to sleep during the breaks, just like how the app works in work intervals. Not sure if this is a good idea and whether it would be a concern for power efficiency. Maybe play a beep sound (or a subtle tick sound) every 1 minute in the break interval to remind the user that the system is still running? If playing the sound keeps the system awake, then it can serve two purposes -- keeping the system awake and reminding the user as well.

Is it possible to use a URI scheme to start the timer?

Hi! Thanks for the app :) I am using it daily by now, and I don't think I could use anything else.

I was wondering if there is built-in support (or you would consider adding support) for custom URI scheme to control the app from the command line. Something along the lines of what KeepingYouAwake did (newmarcel/KeepingYouAwake#16).

e.g.

open tomatobar://start
open tomatobar://stop

In this way, one could also control the app from things like Alfred or Raycast, which could be a big plus.
Of course, I have no idea how complicated it is to implement something like this or if it is feasible at all for the app :)

Allow checking and exporting session logs

It would be nice if users could check how many sessions they did and when they started and finished them. Also, it will be beneficial if users can export them for some data analysis.

Popup arrow is getting mispositioned

Popup arrow is getting mispositioned after a few show/close cycles. No idea on the cause yet. I tend to blame macOS.

Relevant source code fragment:

popover.show(relativeTo: button.bounds, of: button, preferredEdge: NSRectEdge.minY)

Screenshot:
Screenshot 2022-05-09 at 13 44 05

OS version:

% sw_vers
ProductName:	macOS
ProductVersion:	12.3.1
BuildVersion:	21E258

Add visual effect

Sometimes I just missed the sound to have a rest. Is there any plan to add a visual effect?

Option to disable short rest interval

It would be nice if there was an option to disable the short rest as I just need the reminder that time is up without having a new timer for the break. I mainly want to avoid having the notification that is sent when the short rest is over since I just need the initial notification for when the work interval has ended.

I was thinking this could maybe be implemented without adding another toggle by just allowing the short rest interval to be set to 0 min, so that in this case it will not start a timer or send a notification for the short rest and instead will either start the next work interval or stop (depending on what the user has set).

UI problem with localization

I'm sorry, should have built it myself before pushing request
It seems that it doens't work, and in settings, it says Tomatobar doesn't support any other languages
截屏2022-11-25 20 39 03
截屏2022-11-25 20 37 28

Add automation to enable/disable a Focus

I'd like TomatoBar to enable the work focus when the timer starts, and turn it off when it ends. I looked into Automator for this, but I'm not familiar enough with its tooling to do this.

an iOS/iPadOS version

Hi, your app is wonderful. I am a med student from China, preparing for an important exam and I am using your app everyday to stay focus.
I am just wondering if you would make/create/develop the same app on iOS/iPadOS platform.
If possible, would you please utilize the RealActivity feature on these two platforms to show the time for work/rest.

Much appreciated :-)
Thanks for your amazing work for creating such a simple yet wonderful app.
Sincerely

Add a 'skip' to next interval option, i.e. a shortcut / button [Feature request]

Hi, long time fan and user of the tomatobar (love the simplicity and straightforwardness of the design!). Surprised this hasn't been requested yet but to explain the need of the feature with an example - I find myself sometimes stopping the counter when I want to take longer breaks outside of the usual interval, or when something unexpected happens that forces me to stop altogether, i.e. meetings, friends showing up, to go for a spontaneous walk or to just break out of the countdown for a while.

In these instances, when I resume I would sometimes like to skip (i.e. fast forward) to the short rest interval part or maybe to the 3rd interval in a set but I can't seem to see a shortcut or feature for this. Having a skip feature would allow the flexibility for those users that often stop (for reasons) and for those typical use cases where the user does stop, but would like to resume where they stopped in the set, i.e. allow fast-forwarding and move along intervals.

Thank you, and thanks for creating the app!

Menu bar bug

If you stop the break timer, the time that was counting before still apear behind the tomato:
Screen Shot 2021-11-29 at 5 45 29 PM
Screen Shot 2021-11-29 at 5 45 34 PM

Bug with the version 2.2.1 of the App running on macOS Monterey 12.0.1.

Can the progress be shown visually in the icon instead of timer text ?

Currently, when the settings "Show timer in menu bar" is on, the remaining pomodoro or break time is displayed in minutes/seconds.

Would it be possible / hard to show the progress by changing the color / visual of the icon itself, to give something more discrete ? (Typically, some other apps show progress by progressively "filling" the icon with a given color, which gives a more subtle clue than the actual timing.)

Stepper text is aligned vertically instead of horizontally

Just an observation about how the stepper view aligns its text fields in IntervalsView.

Originally the text fields are aligned horizontally but when I compiled the code again with today's Xcode the text fields somehow got aligned vertically.

Vertically aligned.
Unexpected

Adding horizontal stacking.

VStack {
    Stepper(value: $timer.workIntervalLength, in: 1 ... 60) {
        HStack {
            Text(NSLocalizedString("IntervalsView.workIntervalLength.label", comment: "Work interval label"))
                .frame(maxWidth: .infinity, alignment: .leading)
            Text(String.localizedStringWithFormat(minStr, timer.workIntervalLength))

        }
    }
}

Corrected horizontal alignment.
Corrected

An invisible TomatoBar window appears in Mission Control

Steps to reproduce

  1. Make sure Group windows by application is enabled in System Preferences > Mission Control
  2. Make sure TomatoBar is running
  3. Open Mission Control

Observed Behaviour

An invisible TomatoBar window is shown alongside the other windows. A text label TomatoBar indicates where the window is in Mission Control

Screenshot

image

Expected Behaviour

Such windows, even though invisible, should not appear for menubar apps like TomatoBar

Allow selecting own audio files for notifications

Would it be possible to use our own custom audio files? I use the wind up option so I know when my break is over, but it scares the living daylights out of me every time it sounds, would be great if we could choose a different audio for the three notifications!

PS. Great app!

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.