Native macOS clipboard manager — history, snippets and keep-awake in one menu bar icon
Читать по-русски · Landing page
ClipMouse is a native macOS 26 menu bar agent. It replaces ClipMenu 0.4.3, a mouse remapper rule and a keep-awake utility: deduplicated clipboard history, Spotlight-style search, snippets with placeholders, secret protection and caffeine timers. No network, no telemetry, no dependencies.
Everything three utilities used to do — in one native app:
| Before | With ClipMouse |
|---|---|
| ClipMenu 0.4.3 — x86_64 binary built in 2008–2009, running on Rosetta 2 | Native arm64 app written in Swift 6 |
| A Karabiner-Elements rule (middle button → right ⌘ for voice input) | Built-in remap — no extra config files |
| KeepingYouAwake | Awake timers live in the icon's right-click menu |
The original pain: the old ClipMenu stored its clipboard history (clips.data) in plain text, including passwords and API tokens. ClipMouse was built so secrets never linger on disk: a detected secret is stored as a temporary clip — usable for a configurable window (1 hour by default), then auto-deleted from the menu and the database.
Every competitor covers exactly one category; ClipMouse is the only one covering all four — for free. All 20 apps surveyed:
| App | Category | Clipboard history | Snippets | Keep-awake | Mouse remap | Secret protection | Local-only | Open source | Free |
|---|---|---|---|---|---|---|---|---|---|
| ClipMouse | all four | ✓ | ✓ | ✓ | ✓ | ✓ (automatic) | ✓ | ✓ | ✓ |
| Paste | clipboard | ✓ | — | — | — | — | — (iCloud sync) | — | — (subscription) |
| Maccy | clipboard | ✓ | — | — | — | ? | ✓ | ✓ | ✓ |
| CopyClip 2 | clipboard | ✓ | — | — | — | ? | ✓ | — | — ($7.99) |
| Flycut | clipboard | ✓ | — | — | — | ? | ✓ | ✓ | ✓ |
| Copied | clipboard | ✓ | — | — | — | ? | — (iCloud) | — | — (abandoned) |
| Unclutter | clipboard + files + notes | ✓ | — | — | — | ? | ✓ | — | — ($19.99) |
| Pastebot 3 | clipboard | ✓ | — | — | — | ? | ✓ | — | — (subscription) |
| Clipy | clipboard | ✓ | ✓ | — | — | ? | ✓ | ✓ | ✓ |
| TextExpander | snippets | — | ✓ | — | — | — | — (vendor servers) | — | — (~$50/year) |
| SnippetsLab | snippets | — | ✓ | — | — | ? | — (iCloud) | — | ✓ |
| aText | snippets | — | ✓ | — | — | ? | — (online activation) | — | — (subscription/lifetime) |
| Espanso | snippets | — | ✓ | — | — | ? | ✓ | ✓ | ✓ |
| Amphetamine | keep-awake | — | — | ✓ | — | n/a | ✓ | — | ✓ |
| KeepingYouAwake | keep-awake | — | — | ✓ | — | n/a | ✓ | ✓ | ✓ |
| Caffeine | keep-awake | — | — | ? | — | n/a | ✓ | ~ (forks only) | ✓ |
| Lungo | keep-awake | — | — | ✓ | — | n/a | ✓ | — | — (paid) |
| Karabiner-Elements | mouse remapper | — | — | — | ✓ | n/a | ✓ | ✓ | ✓ |
| SteerMouse | mouse remapper | — | — | — | ✓ | n/a | ✓ | — | — (paid upgrades) |
| BetterMouse | mouse remapper | — | — | — | ✓ | n/a | ✓ | — | — ($7.99) |
| LinearMouse | mouse remapper | — | — | — | ✓ | n/a | ✓ | ✓ | ✓ |
? = undocumented; ~ = broken on current macOS. Caffeine hasn't worked reliably since ~2014, Copied was abandoned in ~2020 and Flycut had no release since December 2020.
- Clipboard history — text, links, images, PDFs and files: up to 200 entries (configurable to 500). Duplicates collapse, storage is 30 days.
- Spotlight-style search — a panel that filters by content and by source app: query “Telegram” finds everything you copied from Telegram. Right-click a clip to save it as a snippet, delete it or block the source app.
- Smart paste — ⌥ pastes as plain text, ⌘ as a POSIX path. Synthetic-⌘V auto-paste is optional and off by default; it waits for the target app and for modifier keys to be released, and detects Secure Input.
- Snippets — categories and snippets are managed in Settings (a dedicated Snippets tab with inline editing); the bar menu stays insertion-only. Placeholders
{date:HH:mm},{clipboard}and{uuid}expand on paste. - Secret protection — tokens (
sk-,ghp_, PEM), card numbers and high-entropy strings are stored only as temporary clips: marked with a clock icon, usable for a configurable window (1 hour by default), then auto-deleted from menu and database. Bitwarden, Passwords and Terminal are blocked out of the box. Right-click any clip to keep it as a snippet. - Keep-awake — right-click the icon and your Mac stays up for an hour: timers from 5 minutes to indefinite, a battery threshold, remaining time glows in the orange rings. Scriptable via the
clipmouse://caffeine/activate?seconds=NURL scheme. - Middle button → right ⌘ — the middle mouse button becomes right Command, for voice input in Spokenly. CGEventTap with a stuck-key watchdog and a dictation suppression window; the mapping lives here, not in Karabiner.
- Native and light — pure AppKit on Swift 6, zero third-party dependencies, SQLite in WAL mode, launch-at-login, self-signed so Accessibility permission survives rebuilds. Around 0% CPU when idle.
| Action | Shortcut |
|---|---|
| Clipboard history menu | ⌘⇧V |
| Snippets menu | ⌘⇧B |
| Keep-awake (caffeine) | right-click the menu bar icon · the Awake row in the menu (1–5 h pills, stop) |
| Paste from search panel | Return · plain text ⌥ · POSIX path ⌘ · close Esc |
| Save a clip as snippet | right-click the clip (menu or search) |
| Settings | ⌘, |
The menu: history → the Awake row (1–5 h pills, stop, "Other durations ▸"; clicking keeps the menu open) → Snippets (insertion + "Manage Snippets…") → Search… → Settings → Quit.
ClipMouse never touches the network — at all. No telemetry, no analytics, no phone-home updates: there is nothing to count, so there are no counters.
| 1.3 MB | on disk |
| ~20 MB | in memory |
| 0.0% | CPU when idle |
| 0 | third-party dependencies |
Measured on a live process, not promised on someone's word.
- Database at 0600 — SQLite lives in
~/Library/Application Support: file 0600, directory 0700, excluded from backups. - Concealed types ignored —
Concealed,TransientandAutoGeneratedpasteboard types are skipped; password managers mark their copies themselves. - App blocklist — Bitwarden, Passwords and Terminal are blocked by default; manageable from the UI, per clip: “Never save from” that app.
- Backup before purge — Clear History writes a backup dump first; an accidental purge loses nothing.
- Prebuilt DMG — from GitHub Releases (on first launch, click “Open Anyway” in System Settings).
- Terminal one-liner (verifies SHA-256, strips Gatekeeper quarantine and launches):
curl -fsSL https://zeklop.github.io/clipmouse/install.sh | bash - Homebrew Cask:
brew tap zeklop/tap && brew install --cask clipmouse - Build from source:
git clone https://github.com/zeklop/clipmouse.git cd clipmouse make install # build → bundle → sign → /Applications make check # debug + release + selftest; warnings fail the build
- Clone the repository. You will need the Command Line Tools for Swift 6 — Xcode is not required.
make installbuilds a release binary, generates the icns, signs it (a personal certificate is auto-detected) and copies it to/Applications.- Permissions on first launch — a one-time setup of two toggles: First-launch permissions.
- Optional: keep Accessibility across rebuilds. With the default adhoc signature every rebuild resets the Accessibility permission. Create a personal certificate once:
bash scripts/make-cert.sh, then follow docs/codesign-and-tcc.md — rebuilds stop resetting permissions.
Diagnostic flags of the binary: --selftest, --paste-test (posts a synthetic ⌘V to the frontmost app), --spike-right-cmd. Deep links: clipmouse://caffeine/activate?seconds=N and clipmouse://settings/<tab>.
The real interface of the app — no design fiction.
| Search panel | History menu |
|---|---|
![]() |
![]() |
Settings — one window, four tabs:
| General — launch, history limits, Awake | Snippets — categories and snippet table |
|---|---|
![]() |
![]() |
| Security — blocklist and temporary secrets | About — version and shortcuts |
![]() |
![]() |
Sources/ClipMouseCore/ all logic (a library — also used by --selftest)
Core/ Prefs, Log, Permissions (TCC), SelfTest
Clipboard/ Clip + ClipboardIO, ClipStore (actor, SQLite), ClipboardMonitor,
SourceTracker, Paster, SecretHeuristics
Menu/ StatusItemController, StatusIcon, MenuBuilder
Search/ SearchPanel, SearchView
Hotkeys/ HotKeyCenter (Carbon, ⌃⌥ ↔ ⌘⇧ modes)
Mouse/ MouseRemapper (tap, watchdog, dictation suppression)
Awake/ AwakeController, PowerSource
Settings/ SettingsWindow (tabbed), SnippetsTab
Snippets/ SnippetStore, SnippetSaver, Placeholders
Sources/ClipMouse/main.swift guard, AppDelegate, diagnostics
scripts/ make-cert.sh, make-icon.swift, phase1-check.sh, spike-right-cmd.swift
docs/ landing page (GitHub Pages)
design/icons/ icon concept (SVG is the source of truth)
Settings live under dev.zeklop.clipmouse: the UI covers the common cases; rare keys (history.pollInterval, menu.titleLength, hotkey.*, security.dictationSuppressSeconds, …) are reachable via defaults write.
- macOS 26 or later
- Apple Silicon (arm64)
- Command Line Tools for Swift 6 (no Xcode needed)
What is ClipMouse? A native menu bar clipboard manager for macOS 26 that combines clipboard history, snippets, secret protection, keep-awake timers and a middle-button remap — replacing three separate utilities with one icon.
Is it a replacement for ClipMenu? Yes — a successor to ClipMenu 0.4.3, an x86_64 binary from 2008–2009 living on Rosetta 2. The ⌘⇧V / ⌘⇧B hotkeys carry over; old history is not migrated (it is a rolling buffer and refills in days; import is on the backlog). ClipMenu's JavaScript actions are intentionally not carried over.
Does it replace KeepingYouAwake?
Yes: right-click the ClipMouse icon toggles it, and the Awake row in the menu gives you 1–5 h pills in one click (the menu stays open, the countdown ticks right in the row), 5–30 minutes and indefinite under "Other durations", a battery threshold, and the countdown glows in the icon's orange rings. There is also a clipmouse://caffeine/activate?seconds=N URL scheme for scripts.
Does ClipMouse phone home? Never. No network access at all — no telemetry, no analytics, no update checks.
Where is my clipboard history stored?
In a local SQLite database in ~/Library/Application Support: file permissions 0600, directory 0700, excluded from backups. Secrets (tokens, PEM keys, card numbers, high-entropy strings) are stored only as temporary clips and auto-deleted after a configurable window (1 hour by default).
Are there prebuilt downloads or Homebrew? Yes — a DMG is attached to each GitHub Release, and Homebrew works via a tap:
brew tap zeklop/tap
brew trust zeklop/tap # newer Homebrew asks for explicit trust
brew install --cask clipmouseBuilding from source with make install always works too.
Which languages does the UI support? English and Russian — the UI follows your system language (System Settings → General → Language & Region).
Phases 0–6 implemented; version 0.2.0 shipped tabbed settings, inline snippet editing and temporary-secret protection; 0.2.1 added the Awake row with 1–5 h pills, a stop pill and a live countdown right in the menu.
ClipMouse 0.2.1 — successor to ClipMenu 0.4.3 · Swift 6 · AppKit · 2026





