@nickitakhy/worktimer
v0.2.1
Published
CLI installer for the WorkTimer macOS menu bar app
Maintainers
Readme
WorkTimer
Small macOS menu bar timer for tracking work time from the top-right of the screen.
What It Does
- Starts counting up as soon as the app launches.
- Lives in the macOS menu bar.
- Also appears in the Dock while running.
- Tries to register itself to launch at login.
- Single click pauses or resumes.
- Double click opens the panel.
- Right click opens the panel.
- Resets automatically each day and keeps a daily log.
- Can show timer, money, typing stats, mouse distance, or an icon in the menu bar.
- Saves the current day session locally, so relaunching the app does not wipe the timer.
- Tracks typing time, chars, CPM, WPM, and estimated on-screen mouse travel.
Quick Start For Someone Downloading The App
If you are just receiving WorkTimer.app or WorkTimer-macOS.zip, do this:
- Unzip it
- Drag
WorkTimer.appinto/Applicationsor~/Applications - Open it
- The setup panel should open automatically on first launch
- If you want typing and mouse stats, press the in-app
Grant Accessbutton and enable WorkTimer in:System Settings > Privacy & Security > AccessibilitySystem Settings > Privacy & Security > Input Monitoring
If the menu bar item is missing, check the hidden section in Ice/Bartender first.
Easiest Install
If you already have Node installed on macOS, the fastest install is:
npx @nickitakhy/worktimerThat downloads the matching signed WorkTimer.app from GitHub releases, installs it into ~/Applications, and opens it.
Useful commands:
npx @nickitakhy/worktimer open
npx @nickitakhy/worktimer doctor
npx @nickitakhy/worktimer install --app-dir=/ApplicationsRequirements
- macOS 14 or newer
- Xcode 16 or current Swift 6 toolchain
Developer Install
cd apps/worktimer
./scripts/install-app.shThat builds a release app, installs it to ~/Applications/WorkTimer.app, and opens it.
If you want a different install location, set:
WORKTIMER_INSTALL_DIR=/Applications ./scripts/install-app.shThe installer will use your personal Developer ID Application certificate if one is available in Keychain. Otherwise it falls back to ad hoc signing for local use.
Setup For Full Stats
Timer and pay tracking work right away.
AI usage is optional and only appears when WorkTimer can find local Codex/Claude logs or compatible usage snapshot files.
Wispr Flow stats are optional and only appear when Wispr Flow is installed locally.
Typing and mouse stats need macOS privacy approval:
System Settings > Privacy & Security > AccessibilitySystem Settings > Privacy & Security > Input Monitoring- move
WorkTimer.appinto/Applicationsor~/Applicationsbefore granting permissions - WorkTimer retries automatically after both switches are on, but if stats still look stuck, reopen
WorkTimeronce
You can jump straight there with:
cd apps/worktimer
./scripts/open-permissions.shIf permissions get stuck and you want to re-grant them cleanly:
cd apps/worktimer
./scripts/reset-permissions.sh
./scripts/open-permissions.shTo inspect the installed app’s trust state and path:
cd apps/worktimer
./scripts/doctor.shLaunch Again Later
cd apps/worktimer
./scripts/open-app.shor:
open -na ~/Applications/WorkTimer.appMake A Sendable Build
cd apps/worktimer
./scripts/package-app.shThat creates:
dist/WorkTimer-macOS.zipdist/README-SEND-TO-FRIENDS.txt
That is the preferred non-developer onboarding path for another person.
To build a notarized zip with your personal ASC auth profile:
cd apps/worktimer
./scripts/package-app.sh --notarize --profile=PersonalFirst-Run Behavior
- The app should appear in the top-right menu bar area.
- The app should also appear in the Dock while it is running.
- On first launch, the setup panel should open automatically.
- The app also attempts to turn on launch-at-login automatically.
- If macOS asks for approval, check
System Settings > General > Login Items. - If you want typing stats or mouse travel, approve
WorkTimerin bothAccessibilityandInput Monitoring. - If you use Ice, Bartender, or another menu bar organizer, it may appear in the hidden section first.
- The default panel is simple black/white, with:
- current timer
- small reset button
- hourly pay input
- top-bar mode switch
- typing stats
- mouse travel stats
- daily history
- action log
Development
Run directly from SwiftPM:
cd apps/worktimer
swift run WorkTimerRun tests:
cd apps/worktimer
swift testNotes
- WorkTimer data now lives in
~/Library/Application Support/WorkTimer/worktimer.sqlite. - Older
typing.sqliteinstalls are migrated automatically the first time the new build launches. - Updating or reinstalling the app should preserve the current day timer and history.
- Mouse distance is an estimate of cursor travel on the display surface, based on display size reported by macOS.
- Wispr Flow stats are detected automatically from the local
flow.sqlitedatabase when Wispr Flow is installed.
