Skip to content

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

macodoro

A tiny Pomodoro timer that lives in the macOS menu bar. No dock icon, no clutter, just a focus timer with Liquid Glass styling.

What it does

  • Sits in the menu bar with a timer icon.
  • Shows a live MM:SS countdown 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.

Requirements

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

Build and run

git clone https://github.com/xevrion/macodoro.git
cd macodoro
open Pomodoro.xcodeproj

In Xcode:

  1. Pick the macodoro scheme (already shared, should be selected by default).
  2. Press Run (Cmd + R).
  3. The app has no dock icon, so look for the timer symbol in the menu bar at the top right.
  4. On first launch it asks for notification permission. Allow it to test the end-of-phase alerts.

How to test it quickly

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.

Project layout

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

Not in this version

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

About

A tiny Pomodoro timer in the macOS menu bar, built with SwiftUI and Liquid Glass

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages