A lightning-fast macOS launcher built in pure Rust using GPUI.
- Fuzzy search across applications, commands, files, and extensions
- Frecency-based ranking (frequency + recency) for personalized results
- Catppuccin theming with auto light/dark mode sync
- Smooth animations with reduce-motion support
- Global hotkey activation (Carbon RegisterEventHotKey)
- Clipboard history with AES-256-GCM encryption and full-text search
- Calculator & unit converter with currency conversion and datetime math
- Window management — halves, quarters, thirds, centering, maximize, restore, multi-display support, and layout cycling
- Calendar integration — next meeting display, conference link detection (EventKit)
- Native extension system — ABI-stable dynamic library extensions with code signing
- Quick links — bookmarks with placeholder-based URL expansion
- File search — Spotlight-powered live file index with browsing
- App management — auto-quit, force quit, uninstaller with leftover detection
- Sleep timer — configurable timer with system actions (sleep, shutdown, etc.)
- Latest DMG: PhotonCast.dmg
- Latest checksum: PhotonCast.dmg.sha256
- Latest release notes: GitHub Releases
- Latest main-branch CI artifacts: CI workflow runs (download
photoncast-dmgfrom the latest successful push run)
- macOS 12.0+
- Rust stable toolchain (MSRV: 1.75)
# Debug build
just build
# Release build
just build-release
# Run
cargo runAll just recipes are thin wrappers around Cargo or the existing scripts. The
underlying ./scripts/*.sh entrypoints remain supported for CI and automation.
# Create a stable local code-signing identity once
just dev-signing
# Build a signed-or-ad-hoc app bundle in build/PhotonCast.app
just release-build
# Replace the installed app in /Applications and relaunch it
just installIf PhotonCast is only ad-hoc signed, macOS tracks it by cdhash, so Accessibility
and Calendar permissions may need to be re-granted after rebuilds. A stable signing
identity avoids that churn. create-dev-signing-identity.sh provisions a local
PhotonCast Local Dev identity, and release-build.sh / sign.sh automatically
use it when ~/.config/photoncast/dev-signing.env is present.
photoncast/
├── crates/
│ ├── photoncast/ # Main binary (launcher UI, event loop)
│ ├── photoncast-core/ # Core library (search, indexing, extensions, platform)
│ ├── photoncast-apps/ # App management (uninstaller, force quit, auto quit, sleep)
│ ├── photoncast-calculator/ # Calculator (math, currency, units, datetime)
│ ├── photoncast-calendar/ # Calendar integration (EventKit, conference links)
│ ├── photoncast-clipboard/ # Clipboard history (encrypted storage, monitoring)
│ ├── photoncast-ext-github/ # GitHub search extension
│ ├── photoncast-ext-screenshots/ # Screenshot browser extension
│ ├── photoncast-ext-system-preferences/ # System preferences extension
│ ├── photoncast-extension-api/ # ABI-stable extension API
│ ├── photoncast-quicklinks/ # Quick links management
│ ├── photoncast-theme/ # Catppuccin theming
│ ├── photoncast-timer/ # Sleep timer
│ └── photoncast-window/ # Window management (layouts, multi-display, Accessibility API)
├── tests/ # Integration tests
└── droidz/ # Product specs and standards
See ARCHITECTURE.md for the full architecture overview including crate dependency graph, data flow, and key design decisions.
# Run all tests
cargo test
# Run with output
cargo test -- --nocapture
# Run specific test
cargo test test_name
# Run benchmarks
cargo benchMIT