VoidClip keeps a searchable history of what you copy — plain text, HTML, and images — and brings it back with one keypress. It is a native C++23 app with a GTK4 + libadwaita UI, rewritten from an earlier Python/PyQt6 version.
The picker is designed for keyboard use: open it, type to search, move with the arrow keys, then copy or paste without reaching for the mouse. Clipboard history stays on your computer; VoidClip sends no install or usage telemetry.
Linux Mint 22 XFCE/X11 is a first-class target. VoidClip registers its global shortcut directly through Xfconf, while GNOME keeps its existing settings-daemon integration. Wayland support continues through XWayland where available.
| 🗂️ History | Captures text, rich text (HTML), and images or screenshots as you copy them, newest first. |
| 🖼️ Image thumbnails | Copied and pasted images render as thumbnails instead of raw byte counts. |
| 📌 Pinning | Pin the clips you reuse so they stay at the top. |
| 🔍 Fuzzy search | Start typing to filter the whole history. |
| ⌨️ Keyboard-first picker | Use arrows, Enter, number shortcuts, safe Alt+Delete, and pin controls without leaving the search field. |
| 🖥️ XFCE + GNOME shortcuts | A configurable shortcut (default Super+V) is registered automatically through Xfconf or GNOME Settings. |
| 📋 Click to paste | Click a clip to copy it, and optionally auto-paste it into the window you came from. |
| Shortcut and auto-paste failures stay visible, with the clip left safely on the clipboard. | |
| 🛡️ Privacy controls | Pause recording, ignore the next copy, or explicitly opt in to saving password-manager clips locally. |
| 🧹 Paste as plain text | Strip HTML formatting when pasting a rich-text entry. |
| 🌗 Themes | Dark, light, or follow the system. |
| 💾 SQLite storage | History lives in a WAL-mode SQLite database with de-duplication and a configurable size cap. |
| 🪶 Event-driven | Capture is signal-driven, not polled, so it idles cheaply in the background. |
For Linux Mint 22 on a typical Intel/AMD computer:
- Download the VoidClip
.deb. - Double-click the downloaded file.
- Select Install Package, then open VoidClip from the applications menu.
No terminal commands are required. Linux Mint 21.x cannot use the current Mint 22
binary release; do not install the Mint 22 .deb there.
curl -fsSL https://raw.githubusercontent.com/akashmahedy/VoidClip/main/scripts/install.sh | bashThe script detects your distro and architecture and installs a .deb or .rpm when it can, falls back to an AppImage, and builds from source if neither fits. Release downloads are verified against published SHA-256 checksums, and the script adds VoidClip to your login autostart.
Prebuilt packages currently target Ubuntu 24.04 / Linux Mint 22 or newer
(glibc 2.38+). Direct DEB/RPM installs include an XDG autostart entry, so they
behave the same way as the installer-script path.
To remove it:
curl -fsSL https://raw.githubusercontent.com/akashmahedy/VoidClip/main/scripts/install.sh | bash -s -- --uninstallThe uninstaller asks whether to keep or remove your saved history. To remove the
application and its local history/settings in one command, use --purge-data.
Prerequisites and build steps
You need CMake ≥ 3.28, Ninja, a C++23 compiler, and vcpkg with VCPKG_ROOT exported. GTK4, libadwaita, gtkmm-4.0, Qt6, and libX11 come from your system, not vcpkg.
# Debian / Ubuntu
sudo apt install cmake ninja-build qt6-base-dev qt6-tools-dev libgl-dev \
libx11-dev libgtkmm-4.0-dev libadwaita-1-devvcpkg pulls the rest (GoogleTest, spdlog, nlohmann-json, SQLiteCpp) from the manifest at configure time. Then:
git clone https://github.com/akashmahedy/VoidClip.git
cd VoidClip
cmake --preset release
cmake --build --preset releaseThe presets are debug, release, and asan.
VoidClip needs GTK4 and libadwaita at runtime. XFCE users do not need to replace their desktop or window manager; the application carries its own GTK UI.
Auto-paste writes to /dev/uinput, which on most systems means joining the input group:
sudo usermod -aG input $USER
# log out and back in for the group to take effectWithout /dev/uinput access, paste falls back to xdotool on X11, or
wtype/ydotool on Wayland. The Linux Mint .deb installs xdotool
automatically, so click-to-paste works after a normal package installation.
History capture and copy-only actions work either way; only paste-back depends on
input injection.
If every paste method fails, VoidClip reopens with a clear message. The selected clip remains on the clipboard, ready for a manual Ctrl+V.
Launch VoidClip once and it stays running in the background. Press your hotkey to toggle the window, type to fuzzy-search, and use the keyboard or mouse to choose a clip.
Open Settings to change the theme, rebind the hotkey, pause recording, toggle auto-paste and auto-hide-on-copy, choose whether password-manager clips are saved, control sign-in startup and the panel icon, check for updates, and set the maximum history size.
Opening Settings checks the latest stable GitHub release. For an existing DEB installation, Update now downloads the matching package, verifies its published SHA-256 checksum, and installs it after one system authentication prompt. AppImage and RPM installs keep a safe link to the release page instead.
Every history card has visible Copy, Paste, Plain text, Pin/Unpin, and delete controls. A deleted clip can be restored immediately with Undo.
To start hidden — for autostart entries — pass --background.
| Key | Action |
|---|---|
| Super+V | Toggle the VoidClip window (default; configurable) |
| Click | Copy the clip (and auto-paste if enabled) |
| Ctrl+Click | Pin / unpin a clip |
| Type | Fuzzy-search the history |
| ↑ / ↓ | Select the previous / next visible clip |
| Enter | Copy the selected clip |
| Alt+Enter | Copy and paste the selected clip |
| Alt+Shift+Enter | Paste the selected clip as plain text |
| Ctrl+1 … 9 | Copy one of the first nine visible clips |
| Ctrl+P | Pin / unpin the selected clip |
| Alt+Delete | Remove the selected clip (with Undo) |
| Ctrl+, | Open Settings |
| Esc | Hide the window |
VoidClip keeps its state under ~/.local/share/voidclip/:
settings.json— preferenceshistory.db— the SQLite history database
New files are created with user-only permissions. Clipboard de-duplication state is kept only in memory, not in a separate plaintext cache.
Keys in settings.json include theme, hotkey, max_history_items,
auto_hide_on_copy, auto_paste, capture_paused, save_confidential_clips,
start_at_login, and first_run_completed. The Settings dialog is the easier
way to change them.
On the first v0.3.1-or-newer launch, an existing ~/.local/share/copyclip/
profile is moved to the VoidClip directory only when the new directory does not
already exist. Existing VoidClip data is never overwritten. Individual
text/rich-text payloads are capped at 4 MiB and image payloads at 25 MiB before
they reach the database; oversized items now produce visible feedback.
The build is C++23 with CMake presets (debug/release/asan), Ninja, and vcpkg in manifest mode. clang-format and clang-tidy configs are committed, warnings are errors (-Wall -Wextra -Wpedantic -Wconversion -Wshadow -Werror), and a GoogleTest suite under an ASan+UBSan+LSan build gates merges. Read CONTRIBUTING.md for setup, the toolchain, and the commit conventions before opening a PR, and branch off main for feature work.
VoidClip is free and MIT-licensed. If it earns a spot in your workflow, a coffee or a ⭐ helps keep it maintained.
MIT © 2024 Walkercito. See LICENSE.
VoidClip is based on the original CopyClip project; the original copyright and MIT license are preserved.