A minimal native macOS launcher base built with SwiftUI. Clone or fork it when you want a small, hackable launcher that you or a coding agent can customize into your own command palette.
This repository is intended as a starting point, not a finished product with someone else's personal workflow baked in. The base app includes app discovery, search, settings shortcuts, system actions, calculator results, a global hotkey, tests, and packaging. Add your own app aliases, website commands, URL schemes, ranking tweaks, or custom actions on top.
The repo includes AGENTS.md and REQUIREMENTS.md so coding agents have a clear map of how to build, test, package, and keep product behavior documented while they modify the app.
- Scans
/Applications,/System/Applications, and~/Applicationsfor installed.appbundles. - Includes currently running regular apps in launcher results.
- Watches application folders and refreshes results while the app is running.
- Searches app names, bundle identifiers, System Settings keywords, and system shortcut keywords.
- Ranks exact, prefix, substring, and fuzzy matches.
- Opens apps and selected System Settings panes.
- Includes Sleep, Dark Mode, and Light Mode system shortcuts.
- Evaluates arithmetic expressions and copies the result to the clipboard.
- Supports keyboard navigation with Up, Down, Return, Enter, and Escape.
- Shows a lightweight launcher panel over the active Space, including full-screen apps.
- Mirrors launcher panels across multiple connected displays.
- Runs in the background and toggles with
Command+Space. - Packages into a local
App Launcher.appbundle with a generated icon.
- macOS 26.5 or newer
- Xcode with Swift 6.3 or newer
- Swift 6.3 or newer
Check your Swift version:
swift --versionFork the repository on GitHub, then clone your fork:
git clone https://github.com/YOUR-USER/app-launcher-base.git
cd app-launcher-baseOr clone this repository directly if you only want a local copy:
git clone REPOSITORY-URL
cd app-launcher-baseAfter cloning, ask your coding agent to read AGENTS.md and REQUIREMENTS.md before making behavior changes.
swift run AppLauncherswift buildswift testBuild the Swift package first:
swift buildCreate the local macOS app bundle:
scripts/setup-app-bundle.shThis creates App Launcher.app in the repository root.
Install the locally built app into /Applications:
scripts/setup-app-bundle.sh --installBuild, install, and open it:
scripts/setup-app-bundle.sh --install --openOn first use, grant Accessibility permission in System Settings if you want Command + Space to override foreground apps that capture the same shortcut.
Good first modifications:
- Rename the app, bundle identifier, version, and icon in
scripts/setup-app-bundle.sh. - Add custom result types in
Sources/AppLauncher/LauncherResult.swift. - Add launch behavior in
Sources/AppLauncher/AppLauncher.swift. - Adjust search and ranking in
Sources/AppLauncher/AppLauncherViewModel.swift. - Update the SwiftUI surface in
Sources/AppLauncher/AppLauncherView.swift. - Add or update focused tests in
Tests/AppLauncherTests. - Keep product behavior current in
REQUIREMENTS.md.
When behavior changes, update tests and REQUIREMENTS.md, then run:
swift test
swift build
scripts/setup-app-bundle.shSources/AppLauncher/AppLauncherApp.swiftdefines the app entry point.Sources/AppLauncher/AppLauncherView.swiftcontains the main SwiftUI launcher UI.Sources/AppLauncher/AppLauncherViewModel.swifthandles search, ranking, selection, and launch state.Sources/AppLauncher/AppScanner.swiftdiscovers installed.appbundles.Sources/AppLauncher/AppLauncher.swiftopens apps, settings, shortcuts, and calculator results.Sources/AppLauncher/LauncherResult.swiftdefines searchable launcher result types.Tests/AppLauncherTestscontains focused scanner, view model, window, launcher, and packaging tests.
See REQUIREMENTS.md for product behavior, platform constraints, and quality expectations.
MIT. See LICENSE.
