A tiny macOS menu bar app that walks you through sit → stand → move loops throughout the day. It lives in your top bar, counts down the current phase, and when time's up it pops open a little panel with an animated figure doing the next action and a single button to start it.
| Sit | Stand | Move |
|---|---|---|
![]() |
![]() |
![]() |
- Click the menu bar icon to open the panel. It shows the first phase (Sit), how long it will last, and a Start button. Tap any of the Sit / Stand / Move tiles at the top to choose which phase to begin with.
- Press Start. The panel closes and the menu bar shows a live countdown.
- When the phase ends, a chime plays and the panel pops back open showing the next action (e.g. "Time to stand") with its little actor and duration.
- Press Start to begin it. The loop keeps cycling: sit → stand → move → sit…
While a phase is running you can Pause or Skip from the panel.
Right-click (or Control-click) the menu bar icon for the menu:
- Settings… — set how many minutes each of Sit, Stand, and Move lasts.
- Reset Loop — stop and return to the start of the loop.
- Quit.
Durations are the only setting, and they persist between launches.
The defaults — 20 min sit · 8 min stand · 2 min move — follow the widely-cited 20-8-2 rule from office-ergonomics research (Cornell University Ergonomics / Prof. Alan Hedge): for every half hour at a desk, sit for about 20 minutes, stand for 8, then move for 2.
Requires macOS 13+ and a Swift toolchain (Xcode or the Command Line Tools).
# Run it directly (great for development; Ctrl-C to quit):
make run
# Build a release .app bundle and launch it from dist/:
make open
# Install it into /Applications (no longer tied to this source tree):
make installAfter make install, launch SitStandMove from Launchpad/Spotlight, then
right-click the menu bar icon and choose Launch at Login so it starts
automatically each time you log in (toggle it off there or in System Settings ›
General › Login Items to disable).
Sources/SitStandMove/
main.swift # NSApplication entry point (menu-bar-only)
AppDelegate.swift # Status item, popover, right-click menu, settings window
TimerManager.swift # The sit/stand/move loop state machine + countdown
SettingsStore.swift # Persisted per-phase durations
Phase.swift # The three phases (titles, icons, colors)
PopoverView.swift # The pop-out panel UI + tappable phase selectors
FigureView.swift # The animated actor (white SF Symbol on a color tile)
SettingsView.swift # Duration settings
scripts/bundle.sh # Wraps the binary into a .app bundle



