A modern cross-platform clipboard manager for macOS, Windows, and Linux. Built with Electron, React, and SQLite.
Clippy runs in the system tray, captures clipboard history (text, images, file paths), and lets you search, pin, tag, and paste items back into any app — with global shortcuts and focus restoration.
- Clipboard history for text, images, and file paths
- Command-palette-style floating panel with search and keyboard navigation
- Global shortcuts: toggle panel, quick paste slots 1–9
- Pin clips, snippets, tags, regex search (
/pattern/), filter modes (type:image,pinned:true) - Rich preview panel, export/import history
- Auto-paste into the app you were using before opening Clippy
- Secure architecture:
contextIsolation, preload IPC bridge, main-process clipboard access - SQLite + file-backed image storage (fast startup, no JSON bloat)
- One-time migration from v1
electron-storedata - System tray with auto-paste toggle, clear history, launch at login
| Platform | Status | Auto-paste | Paste slots |
|---|---|---|---|
| macOS 12+ | Full | AppleScript (Accessibility required) | ⌘⌃1–9 |
| Windows 10+ | Full | PowerShell SendKeys | Ctrl+Alt+1–9 |
| Linux (X11) | Full* | xdotool required |
Ctrl+Alt+1–9 |
*On Linux, install xdotool. Wayland-only sessions may need XWayland or an X11 session for global paste simulation. See docs/PLATFORMS.md.
npm install
npm run devTypecheck and build:
npm run typecheck
npm run buildBuild on the target OS (or use CI) — better-sqlite3 is a native module.
| Command | Output |
|---|---|
npm run dist:mac |
macOS .dmg + .zip |
npm run dist:dir |
Unpacked macOS .app (testing) |
npm run dist:win |
Windows NSIS installer + portable |
npm run dist:dir:win |
Unpacked Windows build |
npm run dist:linux |
AppImage + .deb |
npm run dist:dir:linux |
Unpacked Linux build |
Unsigned macOS build (local testing):
CSC_IDENTITY_AUTO_DISCOVERY=false npm run dist:dirArtifacts are written to release/.
| Shortcut | Action |
|---|---|
↑ / ↓ |
Navigate list |
Enter / click row |
Paste selected clip |
Esc |
Hide panel |
Cmd+F / Ctrl+F |
Focus search |
Cmd+P / Ctrl+P |
Preview selected clip |
Cmd+K / Ctrl+K |
Focus search (footer hint) |
| Shortcut | macOS | Windows / Linux | Action |
|---|---|---|---|
| Toggle panel | Alt+Space (default, configurable) |
same | Show/hide Clippy |
| Paste slot N | ⌘⌃1–⌘⌃9 |
Ctrl+Alt+1–9 |
Paste Nth recent clip |
Paste slots always auto-paste, even when the in-app Auto paste toggle is off.
On macOS, slots use Command+Control (not Command+Option) because global ⌘⌥+digit shortcuts are unreliable on recent macOS versions.
Auto-paste and focus restoration require Accessibility permission:
System Settings → Privacy & Security → Accessibility → enable Clippy
Clippy prompts on first launch if permission is missing. You can also open settings from Settings → Accessibility → Open Settings.
No extra permission step. Auto-paste uses the standard Ctrl+V shortcut via PowerShell. Clippy stays in the system tray when the panel is closed.
Install xdotool:
# Debian / Ubuntu
sudo apt install xdotool
# Fedora
sudo dnf install xdotool
# Arch
sudo pacman -S xdotoolRestart Clippy after installing. A setup banner appears in the app until xdotool is detected.
Clippy stores data under Electron userData:
Contents:
clippy.db— SQLite database (clips, tags, settings)images/— full-size image clipsthumbs/— image thumbnails
Legacy v1 import reads from the old electron-clippy config path on each platform (see docs/V1_BASELINE.md).
- docs/PLATFORMS.md — per-platform behavior, troubleshooting, Wayland notes
- docs/V1_BASELINE.md — v1 archive and migration reference
legacy/v1/— v1 source code
GPL-3.0-or-later
