Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

iCopy — every copy, one shortcut away

写 — the iCopy mark

iCopy

A clipboard manager for macOS, built with Liquid Glass.
Native, tiny, and completely private.

CI Release macOS 26+ Zero dependencies MIT

Install · Features · Design · Performance · Privacy · Contributing


Copy anything, anywhere. Press ⌘⇧V and it's all there — searchable, pinnable, rendered in Apple's Liquid Glass design language on macOS Tahoe.

Features

📋 Keeps everything Text, links, images, and files — with thumbnails and previews
⌨️ ⌘⇧V anywhere Global hotkey via Carbon, so it needs no Accessibility permission
🔍 Search & filters Type to search, or flick between All · Text · Links · Images · Files
📌 Pinning Pinned clips survive history limits and "clear"
🏷 Source attribution Every clip remembers the app it came from
⚡️ Keyboard-first ↑↓ navigate · ⏎ copy · ⌘P pin · ⌘⌫ delete · Esc dismiss
🪄 Paste-on-select (optional) iCopy presses ⌘V into the app you came from
🔒 Private by design 100% local, sandboxed, skips password-manager content
🚀 Weightless 0% idle CPU, ~16 MB footprint, zero leaks — measured, see below

Install

Homebrew:

brew install --cask codewithinferno/tap/icopy

Download: grab iCopy.zip from Releases and drop iCopy.app into /Applications. Builds aren't notarized yet — on first launch, right-click iCopy.appOpen.

Build from source — requires macOS 26 (Tahoe) and Xcode 26:

git clone <this-repo>
cd iCopy
xcodebuild -project iCopy.xcodeproj -scheme iCopy -configuration Release build

iCopy lives in your menu bar — there's no Dock icon. Enable Launch at login in Settings.

Shortcuts

Key Action
⌘⇧V Open iCopy from anywhere
type Search
↑ ↓ Move selection
Copy selected clip (and optionally paste)
⌘P Pin / unpin
⌘⌫ Delete
Esc Dismiss

Right-click the menu bar icon for pause, settings, and quit.

Design

iCopy is a small showcase of the Liquid Glass design language introduced with macOS Tahoe:

  • The search field and filter chips are real glassEffect surfaces inside a GlassEffectContainer, so neighboring glass merges and morphs as the selection moves
  • Footer controls use the native .glass button style
  • Content stays content: rows highlight with plain materials, keeping glass for the controls layer, per the HIG
  • Motion uses SwiftUI spring animations (.snappy) throughout

No fake blurs, no screenshots of glass — it's the real API, which also means it adapts automatically to light/dark, accent color, and Reduce Transparency.

The mark is to copy, to transcribe — hand-brushed. The app icon sets it on a plain paper tile so it reads in both light and dark Docks; Tools/make-brand.swift derives the icon, the dark-mode logo, and the social preview from the same ink.

Performance

Measured on an Apple Silicon Mac running macOS 26.2, Release build:

Metric Value
Idle CPU 0.0% (30 ms of CPU over a 60 s sample)
Memory footprint at launch ~16 MB (footprint)
After 40 captures + 16 popover cycles ~41 MB, returns to 0.0% CPU
leaks after that stress 0 leaks, 0 bytes

How it stays that way:

  • The pasteboard has no change-notification API, so iCopy polls changeCount — a single integer compare — on a DispatchSourceTimer with 150 ms leeway so the kernel can coalesce wakeups
  • Images are stored on disk as PNG; the UI only ever decodes an ImageIO-downsampled thumbnail (≤512 px), cached in an NSCache
  • History is a JSON index written atomically with a debounce, off the main thread
  • Rows are LazyVStack-rendered; thumbnails load asynchronously

Privacy

  • Everything stays on your Mac: ~/Library/Containers/com.pratham.iCopy — nothing is ever sent anywhere
  • Content that password managers mark as concealed (org.nspasteboard.ConcealedType) is never recorded, and transient content is skipped
  • Copies larger than 1 MB of text are ignored rather than truncated, so a re-paste can never hand you corrupted data
  • The app is sandboxed

Architecture

iCopy/
├── iCopyApp.swift          App entry point
├── AppDelegate.swift       Status item, popover, settings window, auto-paste
├── ClipboardStore.swift    Capture pipeline, dedupe, pinning, eviction, persistence
├── PasteboardWatcher.swift changeCount polling with timer coalescing
├── HistoryStorage.swift    JSON index, image originals + thumbnails, RTF sidecars
├── HotKey.swift            Carbon ⌘⇧V hotkey (no Accessibility needed)
├── ClipboardItem.swift     Model
├── HistoryView.swift       Liquid Glass popover UI
├── HistoryRowView.swift    Rows, thumbnails, hover actions
├── SettingsView.swift      Launch at login, limits, auto-paste
└── TestHooks.swift         Distributed-notification hooks (only with --test-hooks)

Duplicate detection hashes content with SHA-256, so re-copying something old just promotes it to the top — including images. History from the pre-rewrite version of iCopy is migrated automatically on first launch.

Contributing

See CONTRIBUTING.md. Keep it lean: the whole app is ~1,500 lines with zero dependencies, and we'd like it to stay that way.

License

MIT © Pratham Patel

About

Every copy. One shortcut away. A Liquid Glass clipboard history manager for macOS.

Topics

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages