Skip to main content
Skip to content
Back

PROJECT DOSSIER

Initials · Switch apps by letter

Independent design and development·2026·Native macOS apps
SwiftAppKitCGEventTapCLI
Initials · Switch apps by letter

The problem and the scope

I originally used a Hammerspoon script to switch apps by letter. I turned that workflow into Initials so it could have its own installer, permission guidance, and settings, without requiring users to set up an automation environment first.

The scope is deliberately small: open, switch, and hide apps, with a letter panel that makes mappings visible. It does not attempt to replace a complete launcher or window manager.

Engineering decisions

  • A pure key state machine decides whether an event passes through, is intercepted, or produces an action. Opening and switching apps happens outside the event callback.
  • Separate left and right Command settings control hold and double-tap behavior. Left Command only takes explicitly assigned letters; settings warn about mappings that overlap common shortcuts.
  • A panel that does not take focus closes on Escape or timeout. Regular key combinations, long presses, and intervening mouse input do not count as a double-tap.
  • One configuration source serves both the app and the initials CLI, with an importer for existing Hammerspoon rcmd mappings.

What you can verify

The public source includes tests for the key state machine, action selection, configuration, and import behavior. The build script runs tests before compilation. Interface screenshots come from the app's offscreen rendering mode, and demonstrations use sample app mappings.

On a supported Mac, assign one letter and check launching, switching, and hiding the app. Then try the independent Command-key settings, panel cancellation, and interactions with your existing shortcuts.

Availability and limits

  • macOS 14 or later on Apple Silicon; English and Chinese UI.
  • The installer is Developer ID signed and Apple notarized.
  • Accessibility permission is required. The app does not record or store typed input.
  • MIT-licensed source and a free download are available.

Website, installation guide, and demonstrations · Latest release