- Real-time capture — monitors your clipboard every 500 ms using native OS APIs (no external tools required)
- Text, URLs, code, HTML and images — automatically classifies every item by content type
- Smart deduplication — SHA-256 hashing ensures the same content is never stored twice
- Full-text search — debounced search across all stored items
- Favorites — star items to pin them and protect them from pruning
- One-click re-copy — hover any card and click Copy to restore it to the clipboard instantly
- System tray — lives in your tray, always out of your way
- Global shortcut — Ctrl+Shift+V (configurable) to summon the window from anywhere
- Glassmorphism UI — translucent dark interface with platform-native blur effects
- Platform-aware title bar — traffic lights on the left for macOS, slim controls on the right for Windows/Linux
- Persistent history — SQLite database survives restarts, stores up to 2 000 items (configurable)
| Feature | Windows 10/11 | macOS 12+ | Linux (X11) | Linux (Wayland) |
|---|---|---|---|---|
| Clipboard monitoring | ✅ | ✅ | ✅ | ✅ |
| Image capture | ✅ | ✅ | ✅ | ✅ |
| System tray | ✅ | ✅ | ✅ | ✅ |
| Global shortcut | ✅ | ✅ | ✅ | ✅ |
| Window blur / vibrancy | ✅ Acrylic | ✅ NSVisualEffect | CSS fallback | CSS fallback |
| Native title bar layout | Right-side controls | Left-side traffic lights | Right-side controls | Right-side controls |
Linux note: The app uses
arboardwhich communicates directly with X11 or Wayland — noxclip,xsel, orwl-clipboardinstallation required.
Windows
- Node.js 20+
- pnpm —
npm install -g pnpm - Rust stable
- WebView2 (pre-installed on Windows 11; installer available for Windows 10)
macOS
# Xcode Command Line Tools
xcode-select --install
# Homebrew (if needed)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Node.js and pnpm
brew install node
npm install -g pnpm
# Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shLinux — Debian / Ubuntu
sudo apt update
sudo apt install -y \
libwebkit2gtk-4.1-dev build-essential curl wget \
libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev
# Node.js via fnm
curl -fsSL https://fnm.vercel.app/install | bash
fnm use --install-if-missing 20
npm install -g pnpm
# Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shLinux — Arch / EndeavourOS / Manjaro
sudo pacman -S --needed \
webkit2gtk-4.1 base-devel curl wget openssl \
gtk3 libayatana-appindicator librsvg appmenu-gtk-module
sudo pacman -S nodejs npm
npm install -g pnpm
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shLinux — Fedora / RHEL
sudo dnf install -y \
webkit2gtk4.1-devel openssl-devel curl wget \
libappindicator-gtk3-devel librsvg2-devel
sudo dnf install nodejs
npm install -g pnpm
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh# 1 — Clone
git clone https://github.com/TheHolyOneZ/ZClipboardManager.git
cd ZClipboardManager
# 2 — Install JS dependencies (pnpm — NOT npm)
pnpm install
# 3 — Development mode (hot-reload frontend + Rust rebuild on change)
pnpm tauri dev
# 4 — Production build
pnpm tauri buildOutput locations after
pnpm tauri build:
Platform Location Format Linux src-tauri/target/release/bundle/.deb.rpm.AppImagemacOS src-tauri/target/release/bundle/.dmg.appWindows src-tauri/target/release/bundle/.exe(NSIS).msi
| Action | How |
|---|---|
| Open / close | Ctrl+Shift+V from anywhere, or click the tray icon |
| Search | Type in the search bar — results update as you type |
| Filter by type | Click a category in the left sidebar |
| Copy an item | Hover a card → click Copy |
| Favorite an item | Hover a card → click the ⭐ button |
| Delete an item | Hover a card → click the 🗑 button |
| Settings | Click ⚙ in the title bar |
| Quit | Right-click the tray icon → Quit |
Open Settings (⚙ in the title bar) to configure:
| Setting | Default | Description |
|---|---|---|
| Max items stored | 500 |
History size before oldest items are pruned (50–2000) |
| Global shortcut | Ctrl+Shift+V |
Keyboard combination to toggle the window |
| Start minimized | off | Launch silently into the tray on login |
| Sound on capture | off | Play a click sound when a new item is saved |
Database location:
| Platform | Path |
|---|---|
| Linux | ~/.local/share/clipboard-manager/history.db |
| macOS | ~/Library/Application Support/clipboard-manager/history.db |
| Windows | %APPDATA%\clipboard-manager\history.db |
clipboard-manager/
├── src/ # React + TypeScript frontend
│ ├── components/
│ │ ├── TitleBar.tsx # Platform-aware title bar
│ │ ├── Sidebar.tsx # Category filter navigation
│ │ ├── SearchBar.tsx # Debounced search input
│ │ ├── ClipboardList.tsx # Scrollable item list
│ │ ├── ClipboardCard.tsx # Item card with hover actions
│ │ └── SettingsPanel.tsx # Settings modal
│ ├── hooks/
│ │ ├── useClipboardHistory.ts # Tauri event listener + CRUD
│ │ └── useSearch.ts # Debounced search state
│ ├── styles/
│ │ ├── globals.css # CSS custom properties + Inter font
│ │ └── glass.css # Glassmorphism utility classes
│ └── types/clipboard.ts # Shared TypeScript types
└── src-tauri/ # Rust backend
└── src/
├── main.rs # Entry point
├── lib.rs # Tauri setup: tray, shortcuts, vibrancy
├── clipboard_monitor.rs # 500 ms polling → Tauri events
├── storage.rs # SQLite CRUD (fully parameterized)
└── commands.rs # IPC commands exposed to frontend
| Layer | Technology |
|---|---|
| Desktop runtime | Tauri v2 |
| Frontend | React 19 + TypeScript 5 |
| Build tool | Vite 7 |
| Package manager | pnpm |
| Styling | CSS Modules + custom glassmorphism design system |
| Icons | Lucide React |
| Font | Inter via @fontsource |
| Clipboard access | arboard — native X11 / Wayland / AppKit / WinAPI |
| Database | SQLite via rusqlite (bundled) |
| Hashing | SHA-256 via sha2 |
| Image encoding | image crate |
| Window effects | window-vibrancy |
GPL-3.0 — see LICENSE for details. © TheHolyOneZ
Built with Tauri, React, and Rust
