Skip to content

Not another pomodoro

A timer doesn't know you're on a call.

That's the whole thing. One of these reads a clock. The other reads a room.

14:02, nineteen minutes into a Slack huddle

A traditional timer

Pomodoronow

Time's up

Take a break.

It read a clock. That is everything it read.

Fires mid-sentence in your standup. You dismiss it. You dismiss the next one out of habit. You uninstall it on Thursday.

sigstop

Nothing arrives.

  • clock45 min continuous. A break is due.
  • signalSlack is frontmost.
  • vetoThe microphone is live.
  • outcomeWithheld. Not queued, not counted against you.

It read the clock too. Then it read the room.

Meetings

Nothing lands in your Slack huddle.

Or your Google Meet, your Zoom, your Teams call, or the standup you are already halfway through. While a microphone or a camera is live, nothing is drawn on your screen, and nothing is waiting in a queue for the second you hang up. Here is a whole call, minute by minute.

  • microphonein use by anything
  • camerain use by anything
  • fullscreena shared window

A yes or no bit on the device. Reading one is not opening a stream, so macOS asks you for nothing and neither does this.

one call, as the app sees it0 prompts delivered during the call
  1. Call starts

    prompt withheld

    Microphone goes live.

  2. A break comes due

    prompt withheld

    It is not delivered, and it is not queued. A prompt already on screen when the call started would have been withdrawn.

  3. You mute

    still withheld

    Muting and leaving look identical from here, so the app does not guess between them. The hold continues.

  4. Call ends

    grace, still withheld

    The meeting app is still open, so the hold runs on rather than stopping the instant the device goes quiet. Never longer than twenty minutes.

  5. Released

    prompt allowed

    The work clock was paused for the whole call, so none of it counted towards a break you had not taken.

The case it misses, said out loud

A screen share with the microphone muted and the camera off. Knowing a display is being captured needs the Screen Recording permission, which is the one permission that would let this app read your screen, and it is not going to ask for it. The menu has a line for that: I'm in a meeting.

Same work, redistributed

It's the same eight hours.

This isn't a productivity claim and it isn't a health claim. It's a shape. The work gets done either way, one version just has seams in it.

Without

One block.

span
9h 00mspan
unbroken
9h 00munbroken
  1. 09:00Start
  2. 10:00, Still going
  3. 11:30, Deep in the debugger
  4. 13:00Notice your back5h 00m unbroken
  5. 14:00Keep going anyway7h 00m unbroken
  6. 16:00Reading the same line8h 30m unbroken
  7. 17:30Diminishing returns9h 00m unbroken

18:00

With sigstop

The same block, with seams cut into it, and two it deliberately refused to cut.

span
9h 00mspan
seams
7seams
away from the desk
1h 10maway from the desk
held back
2held back
  1. 09:00Start
  2. 09:45SIGTSTP, a good seam5m
  3. 09:50, SIGCONT
  4. 10:35SIGTSTP5m
  5. 10:40, SIGCONT
  6. 11:25Skipped, you're on a call25m
  7. 11:50SIGTSTP, call ended5m
  8. 11:55, SIGCONT
  9. 12:40Lunch. Away from the desk.40m
  10. 13:20, SIGCONT
  11. 14:05SIGTSTP5m
  12. 14:10, SIGCONT
  13. 14:55Held, your camera is on35m
  14. 15:30SIGTSTP, the camera went off5m
  15. 15:35, SIGCONT
  16. 16:20SIGTSTP5m
  17. 16:25, SIGCONT

18:00

Running
A process doing what it is supposed to be doing.
Still running
The same work, hours later. Nothing in the loop notices the difference.
Seam
SIGTSTP, then SIGCONT. The stack is still there when you get back.
Held
A break came due and was deliberately not fired. This is the feature, not a miss.

Where this sits

We are not the first thing that tells you to take a break.

Here is the honest version, including the parts we lose.

Feature comparison between sigstop, Pomodoro timers, wellness apps and using nothing
sigstoptimerswellnessnothing
Knows which app you are inyesnosometimesno
Knows you are on a call and shuts upyesnonoyes
Tells you why it believes thatyes·not applicableno·not applicable
Admits when it does not knowyes·not applicableno·not applicable
Works with zero permissions grantedyesyesnoyes
Its only connection is an update check you triggeredyessometimesno·not applicable
Verifies every update against a key inside the appyessometimessometimes·not applicable
Source you can read and forkyessometimesno·not applicable
Free, no account, no tieryessometimesnoyes
Escalates instead of nagging identicallyyesnonono
Runs on Windows and Linuxnoyesyesyes
Keeps a streak you can losenonoyesno
Tracks anything for your managernonosometimesno