Skip to content
zeklopPublic

About

Native macOS 26 clipboard manager: deduplicated clipboard history, Spotlight-style search, snippets with placeholders, secret protection and keep-awake timers — one menu bar icon. Pure Swift 6 / AppKit, zero dependencies, no network, no telemetry.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

26 Commits

Folders and files

Repository files navigation

ClipMouse app icon — scissors with orange rings on a light squircle tile

ClipMouse

Native macOS clipboard manager — history, snippets and keep-awake in one menu bar icon

Читать по-русски · Landing page

Platform: macOS 26+ Architecture: Apple Silicon (arm64) Swift 6 Pure AppKit Zero third-party dependencies Selftest 39/39 MIT license

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.

Why ClipMouse

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.

ClipMouse vs the field

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.

Features

  • 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=N URL 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.

Shortcuts

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.

Privacy — your history never leaves your Mac

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, Transient and AutoGenerated pasteboard 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.

Install

  • 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
  1. Clone the repository. You will need the Command Line Tools for Swift 6 — Xcode is not required.
  2. make install builds a release binary, generates the icns, signs it (a personal certificate is auto-detected) and copies it to /Applications.
  3. Permissions on first launch — a one-time setup of two toggles: First-launch permissions.
  4. 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>.

Screenshots

The real interface of the app — no design fiction.

Search panel History menu
ClipMouse — Spotlight-style clipboard search panel with source-app filter ClipMouse — clipboard history menu with recent clips and snippets

Settings — one window, four tabs:

General — launch, history limits, Awake Snippets — categories and snippet table
ClipMouse Settings — General tab: launch at login, history limits, Awake timers ClipMouse Settings — Snippets tab: categories on the left, snippet table on the right
Security — blocklist and temporary secrets About — version and shortcuts
ClipMouse Settings — Security tab: blocked apps and temporary-secret lifetime ClipMouse Settings — About tab: version, GitHub link and shortcuts reference

Project layout

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.

Requirements

  • macOS 26 or later
  • Apple Silicon (arm64)
  • Command Line Tools for Swift 6 (no Xcode needed)

FAQ

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 clipmouse

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

Status

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

About

Native macOS 26 clipboard manager: deduplicated clipboard history, Spotlight-style search, snippets with placeholders, secret protection and keep-awake timers — one menu bar icon. Pure Swift 6 / AppKit, zero dependencies, no network, no telemetry.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages