AiShot is a lightshot-style macOS menu bar screenshot tool built with Swift. It brings the familiar lightshot workflow to Mac: fast region capture, lightshot-style selection overlay, and optional AI-powered edits for selected areas.
- Menu bar app (no Dock icon)
- Lightshot-style fast region capture with a fixed overlay
- Move, resize, and re-select regions (lightshot workflow)
- Lightshot-inspired drawing tools: pen, line, arrow, rectangle, circle
- Copy, save, or cancel quickly
- Custom hotkey
- Optional AI edit for a selected area (API key required)βbeyond classic lightshot
- Update check notifications (optional)
- macOS 14.6 or later
- Screen Recording permission (requested on first run)
Install the latest release to /Applications:
curl -fsSL https://raw.githubusercontent.com/Icebitz/ai-screenshot/main/scripts/install.sh | bashThe script downloads the AiShot zip from GitHub releases, extracts it, installs to /Applications, removes Gatekeeper quarantine, and launches the app. Requires curl, unzip, and macOS.
- App version: 0.1.0
- Build: 1
To sync these values with AiShot/Info.plist, run:
scripts/update_readme_version.shOpen AiShot.xcodeproj, select the AiShot target.
Replace or update your Info.plist with the provided one. Key settings:
LSUIElement: true (hides dock icon)NSScreenCaptureDescription: Permission description
- Select your project in the navigator
- Select your target
- Go to "Frameworks, Libraries, and Embedded Content"
- Add the following frameworks:
ScreenCaptureKit.framework
- Select your target
- Go to "Signing & Capabilities"
- Enable "Hardened Runtime"
- Under Hardened Runtime, enable:
- "Disable Library Validation"
- "Allow DYLD Environment Variables" (for debugging)
- Ensure the entitlements file is set to
AiShot.entitlements
- Build the project (Cmd+B)
- Run the app (Cmd+R)
- On first run, grant Screen Recording permission when prompted
- Open Settings from the menu bar
- Add your OpenAI API key
- Pick an AI model
- If the permission dialog doesn't appear:
- Go to System Settings > Privacy & Security > Screen Recording
- Add your app manually
- Click the camera icon in the menu bar
- Select "Take Screenshot..."
- The screen is captured and displayed as a lightshot-style fixed overlay
- Click and drag to select a region (classic lightshot selection)
- Press ESC to cancel at any time
Once you've selected a region lightshot-style, you can:
- Re-select a region: Click and drag anywhere outside the current selection to create a new selection
- Move the region: Click and drag inside the selected area (when no tool is active)
- Resize: Click and drag the blue corner points
- Draw annotations:
- Click a tool button (pen, line, arrow, rectangle, circle)
- Draw on the screenshot
- Click the same tool again to deselect and return to move/resize mode
The lightshot-style toolbar appears below the selected region with:
Drawing Tools (lightshot-inspired):
- Pen - Freehand drawing
- Line - Straight lines
- Arrow - Arrows with arrowheads
- Rectangle - Rectangles
- Circle - Circles/ellipses
Action Buttons:
- Copy: Click "Copy" to copy to clipboard
- Save: Click "Save" to choose a save location
- Close: Click "Close" or press ESC to cancel and close the overlay
AiShot/
βββ AiShot.xcodeproj
βββ Assets.xcassets
βββ scripts/
β βββ install.sh # Install release to /Applications
β βββ update_readme_version.sh
βββ Modules/
βββ App
βββ Capture
βββ Overlay
βββ Settings
βββ AI
βββ Update
βββ Utils
- App: app entry and menu bar setup
- Capture: lightshot-style screen capture pipeline
- Overlay: lightshot-style selection UI, tools, and AI prompt
- Settings: hotkey and AI preferences
- AI: OpenAI image edit client
- Update: GitHub release checker (notifications)
- Utils: app paths, version utilities, defaults
- AiShot: Sets up the menu bar icon and handles app lifecycle (lightshot-style)
- ScreenshotManager: Manages lightshot-style screen capture using ScreenCaptureKit
- OverlayWindow: Displays a full-screen lightshot overlay with:
- Fixed background image (captured screen)
- Region selection (drag to select)
- Region editing (move, resize, re-select)
- Drawing tools (pen, line, arrow, rectangle, circle)
- Toolbar with tools and action buttons
- AI prompt for editing the selected region
- All editing happens in overlay mode without switching windows
- UpdateManager (optional): Checks GitHub releases and posts notifications
- ScreenCaptureKit: macOS framework for lightshot-style screen capture
- AppKit: Native macOS UI framework
- CGContext: Core Graphics for drawing and image manipulation
- UserNotifications: Update notifications
- Quit the app completely
- Go to System Settings > Privacy & Security > Screen Recording
- Remove the app from the list if present
- Run the app again to re-request permission
- Make sure
LSUIElementis set totruein Info.plist - Check that the app is running (look in Activity Monitor)
- Lightshot-style tools require clicking a tool button first
- Tools only work inside the captured image area
- Click the tool button again to deselect
- Check file system permissions
- Make sure you have write access to the selected directory
- Make sure notifications are enabled for AiShot in System Settings > Notifications
- The update checker polls hourly by default
- More lightshot-like shortcuts and workflows for power users.
- Better AI mask controls to refine edit regions with less manual cleanup.
- More AI models and presets to match different creative styles and use cases.
- Privacy tools (blur/pixelate) to quickly redact sensitive content.
- Manual editing tools to complement AI edits with precise touchups.
- Share to cloud to generate links and sync across devices.
- Capture history to browse, reuse, and manage past screenshots.
- Premium plan with extra AI credits and cloud history for power users.
This is a demonstration project. Feel free to modify and use as needed.
- AiShot offers a lightshot-like experience for macOS users
- The app uses
UserNotificationsfor quick feedback notifications - Screen capture requires ScreenCaptureKit
- The app sets itself as
.accessoryto hide from the dock - Window levels are set to
.screenSaverand.floatingfor proper overlay behavior
