A minimal, functional, yet simple Pomodoro menubar app to help you stay focused. Built exclusively for macOS.
- π macOS Native - Built with SwiftUI for a seamless Mac experience
- π Menu Bar App - Always accessible from your menu bar
- β±οΈ Customizable Timers - Set your own work and break durations
- πͺ Detachable Timer Window - Pop out the timer when you need it visible
- π Audio Notifications - Get alerted when your timer completes
- βοΈ Configurable Settings - Customize to fit your workflow
- macOS 11.0 (Big Sur) or later
- Xcode 13.0 or later
- Bun for running build scripts (optional)
- Clone the repository
git clone https://github.com/stacksjs/pomodoro.git
cd pomodoro
- Open the project in Xcode
open src/Timer.xcodeproj
- Build and run the app
- Select the "Timer" scheme in Xcode
- Choose your Mac as the run destination
- Click the Run button (
βΆοΈ ) or press Cmd+R
If you prefer to build from the command line:
# Build the app
bun run build
# cd src && xcodebuild -project Timer.xcodeproj -scheme Timer -configuration Release
# The built app will be in src/build/Release/Timer.app
After building, you can install the app by:
- Locating the built
Timer.app
insrc/build/Release/
- Dragging it to your Applications folder
- Launch the app - The timer will appear in your menu bar
- Click the menu bar icon - Opens the timer interface
- Set your timer - Use the slider or preset buttons (25, 5, or 10 minutes)
- Start the timer - Click "Start" to begin your focus session
- Detach the timer - Click "Detach Timer" to open a floating window
- Configure settings - Click "Settings" to customize timer presets
This project uses:
- SwiftUI for the user interface
- Combine for reactive programming
- AVFoundation for audio playback
- AppKit for macOS-specific functionality
TimerApp.swift
- Main app entry pointAppDelegate.swift
- Handles menu bar integrationContentView.swift
- Main timer interfaceTimerViewModel.swift
- Core timer logicTimerState.swift
- Timer state managementsettingsView.swift
- Settings interfacetimerView.swift
- Detachable timer window
bun test
Please see our releases page for more information on what has changed recently.
Please see CONTRIBUTING for details.
For help, discussion about best practices, or any other conversation that would benefit from being searchable:
For casual chit-chat with others using this package:
Join the Stacks Discord Server
βSoftware that is free, but hopes for a postcard.β We love receiving postcards from around the world showing where Pomodoro.app
is being used! We showcase them on our website too.
Our address: Stacks.js, 12665 Village Ln #2306, Playa Vista, CA 90094, United States π
We would like to extend our thanks to the following sponsors for funding Stacks development. If you are interested in becoming a sponsor, please reach out to us.
The MIT License (MIT). Please see LICENSE for more information.
Made with π