Screen Sniper
Screen Sniper is a macOS screenshot toolbar app built with Tauri 2, Svelte 5, and TypeScript for fast capture (area/window/fullscreen), annotation, export, history, hotkeys, and optional OpenAI-powered OCR/prompt optimization.
Screen Sniper (Tauri + Svelte 5)
Screen Sniper is a macOS screenshot toolbar MVP with:
- Floating toolbar actions
- Screenshot capture modes (area/window/fullscreen)
- Annotation editor (text/arrow/rect/blur + undo/redo)
- Export (clipboard/file/share)
- Local history and custom actions
- OpenAI helper (prompt optimize + image-to-text)
- Local-only storage + OpenAI key in macOS Keychain
Tech Stack
- Tauri 2 + Rust backend (
/src-tauri)
- Svelte 5 + TypeScript frontend (
/src)
- shadcn-style UI component structure (
/src/lib/components/ui)
- Lucide icons via
lucide-svelte
Requirements
- Node.js 20+
- Rust toolchain (
cargo) installed for Tauri development
- macOS 14+
Commands
npm install
npm run check (Svelte/TS diagnostics)
npm test (unit tests)
npm run build (frontend build)
npm run tauri:dev (run desktop app)
npm run tauri:build (desktop build)
Notes
- Capture relies on macOS
screencapture utility.
- OpenAI key is stored using macOS Keychain via Rust
keyring crate.
- Hotkeys are loaded from settings and registered through Tauri global shortcuts.
Project Layout
/src/App.svelte: main app shell and orchestration
/src/lib/components/features: toolbar, editor, history, settings, AI panel, actions panel
/src/lib/components/ui: shadcn-style primitives (Dialog, Sheet, Popover, Tooltip, DropdownMenu, etc.)
/src/lib/services/desktop-api.ts: typed invoke wrappers
/src-tauri/src/commands.rs: backend command handlers
/src-tauri/src/openai.rs: OpenAI + keychain integration
/src-tauri/src/storage.rs: local DB/state and persistence