A tiny Pomodoro timer that lives in the macOS menu bar. No dock icon, no clutter, just a focus timer with Liquid Glass styling.
- Sits in the menu bar with a
timericon. - Shows a live
MM:SScountdown next to the icon while a session runs. - Click the icon to open a small panel with a circular progress ring, the time left, the current phase, four session dots, and Start / Reset / Skip buttons.
- Runs the classic cycle: 25 min focus, 5 min break, and a 15 min long break after every fourth focus session.
- Chains phases automatically. You can turn that off with the toggle so it waits for you at each boundary.
- Sends a notification when a phase ends, even if the panel is closed.
- macOS 26 (Tahoe) or later.
- Xcode 26 or later.
The Liquid Glass material (.glassEffect()) and the deployment target are both set for macOS 26, so it will not build on older systems.
git clone https://github.com/xevrion/macodoro.git
cd macodoro
open Pomodoro.xcodeprojIn Xcode:
- Pick the
macodoroscheme (already shared, should be selected by default). - Press Run (Cmd + R).
- The app has no dock icon, so look for the
timersymbol in the menu bar at the top right. - On first launch it asks for notification permission. Allow it to test the end-of-phase alerts.
The default durations are long, so to check behavior fast:
- Open the panel and hit Skip a few times to watch it move through focus, break, focus, and then a long break after the fourth focus session.
- Watch the session dots fill in as focus sessions complete.
- Hit Start and confirm the menu bar countdown ticks down every second.
- Let a phase reach zero (or skip right before it) and confirm a notification fires.
- Toggle Auto off and confirm the timer stops and waits at the next boundary.
Pomodoro/
MacodoroApp.swift app entry, MenuBarExtra, menu bar label
Models/
Phase.swift the three phases and their durations
PomodoroTimer.swift the state machine and countdown
NotificationManager.swift permission and end-of-phase alerts
Views/
ProgressRing.swift circular ring plus centered time
SessionDots.swift four cycle dots
ControlButtons.swift Start/Pause, Reset, Skip
PomodoroPanel.swift the Liquid Glass panel
Resources/
Info.plist LSUIElement, no dock icon
Pomodoro.entitlements app sandbox
- No custom durations (25 / 5 / 15 are fixed).
- No sounds beyond the notification.
- No launch at login.
- No app icon yet.
- Timer resets to a fresh cycle when the app quits.