Skip to content
akashmahedyPublic

About

A native, open-source clipboard manager for Linux, inspired by the Windows clipboard. Fast, lightweight, and keyboard-first — one hotkey on both X11 and Wayland.

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

 
 

Repository files navigation

What it is

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.


🚀 Features

🗂️ 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.
⚠️ Honest failure feedback 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.

📦 Install

Linux Mint XFCE (easiest)

For Linux Mint 22 on a typical Intel/AMD computer:

  1. Download the VoidClip .deb.
  2. Double-click the downloaded file.
  3. 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.

One-line installer

curl -fsSL https://raw.githubusercontent.com/akashmahedy/VoidClip/main/scripts/install.sh | bash

The 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 -- --uninstall

The 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.

Build from source

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-dev

vcpkg 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 release

The presets are debug, release, and asan.


🔑 Runtime requirements

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 effect

Without /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.


🛠️ Usage

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.

Shortcuts

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

🔧 Configuration

VoidClip keeps its state under ~/.local/share/voidclip/:

  • settings.json — preferences
  • history.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.


🤝 Contributing

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.


💖 Support

Buy Me a Coffee Ko-fi PayPal Crypto donations

VoidClip is free and MIT-licensed. If it earns a spot in your workflow, a coffee or a ⭐ helps keep it maintained.


📄 License

MIT © 2024 Walkercito. See LICENSE.

VoidClip is based on the original CopyClip project; the original copyright and MIT license are preserved.

About

A native, open-source clipboard manager for Linux, inspired by the Windows clipboard. Fast, lightweight, and keyboard-first — one hotkey on both X11 and Wayland.

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages