Spotlight alternative and shortcut toolkit for macOS
A SwiftUI-based application launcher that runs as a background service (LSUIElement) with global hotkey access. Features fuzzy search, window management, quick links, push-to-talk dictation, and system integration.
- Fast Search: Fuzzy search across all applications with intelligent ranking
- Window Management: Snap windows to halves, thirds, or custom positions instantly
- Quick Links: One-key access to your most-used files, folders, and websites
- Global Hotkeys: Customizable shortcuts for launching apps and managing windows
- Push-to-Talk Dictation: Hold a custom hotkey, speak, and release to paste on-device transcription into the active app
- Built-in Calculator: Perform calculations directly without opening a separate app
- Calendar Integration: Quick access to your calendar events without leaving the launcher
- Emoji Picker: Search and copy from 1550+ emojis with fuzzy search
- Native Design: Beautiful interface that respects your system preferences
- macOS: 26.0 or later
- Architecture: Apple Silicon or Intel
- Permissions: Accessibility API, Apple Events
brew install --cask arjunkomath/tap/traceDownload the latest release from GitHub Releases.
git clone https://github.com/arjunkomath/trace.git
cd trace
xcodebuild -project trace.xcodeproj -scheme trace -configuration Release buildGrant when prompted:
- Accessibility: For window management and app control
- Apple Events: For system command execution
- Microphone: For optional push-to-talk dictation
- Speech Recognition: For optional on-device transcription
Trace includes opt-in push-to-talk dictation. Enable it from Settings → Dictation, set a hotkey, download the on-device speech asset for your system language if prompted, then hold the shortcut to speak and release to paste the transcription into the active app.
Dictation is processed on your Mac using Apple's Speech framework. Trace does not save audio or transcripts.
Trace can back up and restore settings through a self-hosted sync server. Open Settings → General → Remote Settings Sync, enter your sync server URL and bearer token, then use Test, Download, or Upload.
For server setup, Docker, Docker Compose, API, and security details, see the Trace Sync Server README.
- Language: Swift 5.9+
- Framework: SwiftUI with AppKit integration
- APIs: Accessibility (AXUIElement), Carbon (EventHotKey), Core Graphics, EventKit (Calendar), AVFoundation and Speech (Dictation)
- Dependencies: Sparkle (auto-updates), SymbolPicker (UI icons)
AppDelegate: Main application controller, hotkey registrationLauncherWindow: 810x360 borderless search interfaceAppSearchManager: Concurrent app discovery with in-memory cachingWindowManager: AXUIElement-based window positioningHotkeyManager: Carbon EventHotKey wrapperToastManager: Non-intrusive notification systemCalendarManager: EventKit integration for calendar accessEmojiManager: Comprehensive emoji database with search functionalityDictationCoordinator: Push-to-talk dictation lifecycle, speech analysis, and text insertion
# Debug build
xcodebuild -project trace.xcodeproj -scheme trace -configuration Debug build
# Release build
xcodebuild -project trace.xcodeproj -scheme trace -configuration Release build
# Clean build
xcodebuild -project trace.xcodeproj -scheme trace clean buildtrace/
├── Core/ # Application lifecycle, logging
├── Views/ # SwiftUI interface components
├── Services/ # Business logic, managers
├── Models/ # Data structures, search results
├── Search/Providers/ # Pluggable search implementations
└── Windows/ # NSWindow subclasses
Settings stored in UserDefaults and ~/Library/Application Support/Trace/:
- Hotkey combinations (keyCode + modifiers)
- Quick links with custom hotkeys
- Dictation opt-in state and push-to-talk hotkey
- Launch at login preference
- Application cache and icons
# brew install create-dmg
create-dmg \
--volname "Trace" \
--window-pos 200 120 \
--window-size 800 400 \
--icon-size 100 \
--icon "trace.app" 200 170 \
--hide-extension "trace.app" \
--app-drop-link 600 170 \
--background "background.png" \
"Trace-1.3.0.dmg" \
"trace.app"Once the DMG is created, you can distribute it via your website or GitHub releases.
generate_appcast --download-url-prefix "https://trace.techulus.xyz/downloads/" \
--full-release-notes-url "https://github.com/arjunkomath/trace/releases" \
-o docs/appcast.xml \
docs/downloads- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Follow Swift/SwiftUI conventions in ARCHITECTURE.md
- Submit a pull request
- Website: trace.techulus.xyz
- Documentation: ARCHITECTURE.md