Skip to main content
TypeSteps lives in your macOS menu bar, providing instant access to statistics and controls without cluttering your workspace. The menu bar shows real-time information:

Active tracking

Shows keyboard icon with today’s keystroke count

Paused

Shows keyboard.badge.ellipsis icon when tracking is paused
The count updates in real-time as you type, giving you instant feedback on your daily progress.
Click the menu bar icon to access the dropdown menu:

Quick statistics

Shows at-a-glance metrics for:
  • Today’s keystroke count
  • This week’s total
  • This month’s total

Pause/Resume tracking

The button label toggles between “Pause Tracking” and “Resume Tracking” based on current state.
Keyboard shortcut: ⌘⇧P (Command + Shift + P) When paused:
  • Keystroke counting stops immediately
  • Menu bar icon changes to paused state
  • Background tracking remains inactive until resumed

Open Dashboard

Keyboard shortcut: ⌘D (Command + D) Opens the main TypeSteps window with full statistics and visualizations.
The dashboard provides:
  • Interactive charts (hourly, daily, weekly, monthly)
  • Consistency heatmap
  • Top applications with icons
  • Productivity milestones
  • Theme customization
  • Data export/import
  • WakaTime integration

Open at Login

Configures whether TypeSteps launches automatically when you log into macOS. Implementation:
Uses macOS ServiceManagement framework to properly register as a login item. Changes take effect immediately.

Quit TypeSteps

Keyboard shortcut: ⌘Q (Command + Q) Completely exits TypeSteps. All statistics are saved automatically before quitting.

Keyboard shortcuts summary

Pause/Resume

⌘⇧P — Toggle tracking on/off

Open Dashboard

⌘D — Show main window

Quit

⌘Q — Exit application
All keyboard shortcuts work globally when TypeSteps is running, even if the menu isn’t open.
The complete menu hierarchy:
TypeSteps uses SwiftUI’s MenuBarExtra for native menu bar integration:

Real-time updates

The menu bar interface uses SwiftUI’s reactive properties:
All displayed statistics update automatically when:
  • New keystrokes are tracked
  • Tracking is paused/resumed
  • The day/week/month changes
StorageManager uses @Published properties, so any changes immediately reflect in the menu bar without manual refreshing.

Integration with Dashboard

The menu bar and dashboard window communicate seamlessly:

Opening the dashboard

  • Brings TypeSteps to the foreground
  • Opens or focuses the dashboard window
  • Maintains menu bar presence

Onboarding flow

When first launched, TypeSteps:
  1. Shows the menu bar immediately
  2. Opens the dashboard window
  3. Displays onboarding overlay
  4. Requests Accessibility permission
The menu bar is always accessible even when the dashboard is closed, making TypeSteps a true background utility.

Application activation policy

TypeSteps uses .regular activation policy, which:
  • Shows in the Dock when dashboard is open
  • Appears in Command-Tab switcher
  • Displays normal application windows
  • Maintains menu bar presence
While .accessory would hide TypeSteps from the Dock, using .regular provides better user experience:
  • Users can easily find and focus the dashboard
  • Standard window management works as expected
  • Command-Tab switching is more intuitive
  • About panel and menus work normally