Skip to content

panosAthDBX/photoncast

Repository files navigation

PhotonCast

A lightning-fast macOS launcher built in pure Rust using GPUI.

Features

  • 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.)

Download Latest Build

Requirements

  • macOS 12.0+
  • Rust stable toolchain (MSRV: 1.75)

Building

# Debug build
just build

# Release build
just build-release

# Run
cargo run

All just recipes are thin wrappers around Cargo or the existing scripts. The underlying ./scripts/*.sh entrypoints remain supported for CI and automation.

Local Install

# 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 install

If 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.

Project Structure

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

Architecture

See ARCHITECTURE.md for the full architecture overview including crate dependency graph, data flow, and key design decisions.

Testing

# Run all tests
cargo test

# Run with output
cargo test -- --nocapture

# Run specific test
cargo test test_name

# Run benchmarks
cargo bench

License

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages