Advanced Linux clipboard manager. Use your clip history as a library of things. Rust, Slint, and SQLite = small footprint and fast performance.
- Persistent History: SQLite FTS5 search with prefix matching.
- Fast Search: Real-time filtering with match highlighting.
- Virtualized Scrolling: only visible rows are rendered.
- Deduplication: SHA-256 hashing skips repeat copies.
- Capture: text, rich text, HTML, images, and file paths.
- Paste: Enter pastes via an
evdevvirtual keyboard; optional plain-text mode. - Global Hotkey: toggle the window via the XDG
GlobalShortcutsportal (defaultCtrl+Alt+Q). - Quick Paste: hold Right Alt and press
1–9.
- Filters: text, links, images, colors, bookmarks.
- Images: hover previews for PNG, JPEG, GIF, WebP, AVIF, JXL, SVG, ICO, BMP, and TIFF.
- Colors:
#hex,rgb(),hsl(),hwb(),lab()/lch(),oklab()/oklch()/okhsl(), with transparency. - URLs and Files: fetched titles and favicons; file size, mtime, and type.
- Tags:
##-prefixed search. - Code: monospace view toggle for code clips.
- Bookmarks: exempt from auto-cleanup.
- Reordering: move clips up/down or to the top/bottom.
- Transforms:
upper,lower,camel,kebab,snake,trim,timestamp, and more. - Send To / Compare: open clips in an external app or a diff tool.
- Cleanup: prune by age and/or count, clear caches, remove dead file clips, reclassify.
- Backup: JSON export/import, full history or bookmarks only.
- Statistics: DB size, clip count, copy/paste counts.
- Light/Dark/System theme, accent color, fonts, row padding, hover-preview delay and size.
- Tray and autostart.
- App blacklist: ignore selected applications.
| Component | Technology |
|---|---|
| Language | Rust (edition 2024) |
| UI Framework | Slint (Qt 6 backend) |
| Wayland | wl-clipboard-rs, wayland-client, wlr/ext data-control |
| Database | SQLite + FTS5 (rusqlite) |
| Async Runtime | Tokio |
| Image Processing | image, resvg (SVG), jxl-oxide (JXL) |
| Colour Science | palette (Oklab / Oklch / Okhsl) |
| D-Bus / Portals | zbus, ashpd (portal hotkeys) |
| System Tray | Slint SystemTrayIcon |
| Input Emulation | evdev virtual keyboard |
| HTTP Client | reqwest (rustls) |
Large Language Models (LLMs) were used to assist with code generation, refactoring, and documentation. All AI output was subject to human code review, automated testing, manual testing, and adversarial reviews.
Cliptoo runs on Wayland only (KDE Plasma 6); X11 sessions are not supported. Keep xdg-desktop-portal-kde installed so global shortcuts work.
Prebuilt bundles are on the releases page.
chmod +x cliptoo-*-x86_64.AppImage
./cliptoo-*-x86_64.AppImageUse AppImageLauncher or GearLever to add it to the menu.
| Distro | Install |
|---|---|
| Debian/Ubuntu | sudo apt install ./cliptoo_*_amd64.deb |
| Fedora/RHEL | sudo dnf install ./cliptoo-*.x86_64.rpm |
| Arch | sudo pacman -U cliptoo-*.pkg.tar.zst |
Local Arch build: make package && sudo pacman -U .pkg/cliptoo-*.pkg.tar.zst.
See Prerequisites. make install installs to /usr/local; make uninstall removes it.
Data lives in ~/.local/share/Cliptoo/ (DB, images), config in ~/.config/Cliptoo/, cache in ~/.cache/Cliptoo/, logs in ~/.local/state/Cliptoo/Logs/.
- Rust toolchain (stable, edition 2024):
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh - Qt 6, Wayland, dav1d, and fontconfig dev headers, plus the
clangandmoldlinkers (CI installs them and selects them withCARGO_TARGET_*env vars; for local builds putlinker = "clang"andrustflags = ["-C", "link-arg=-fuse-ld=mold"]under[target.x86_64-unknown-linux-gnu]in~/.cargo/config.toml):
| Distro | Command |
|---|---|
| Debian/Ubuntu | sudo apt install qt6-base-dev qt6-wayland libwayland-dev libxkbcommon-dev libfontconfig1-dev libdav1d-dev pkg-config clang mold |
| Fedora | sudo dnf install qt6-qtbase-devel qt6-qtwayland libwayland-devel libxkbcommon-devel fontconfig-devel dav1d-devel clang mold pkgconfig |
| Arch | sudo pacman -S qt6-base qt6-wayland wayland wayland-protocols libxkbcommon fontconfig dav1d clang mold pkgconf |
git clone https://github.com/dcog989/cliptoo.git && cd cliptoocargo install cargo-edit cargo-outdated cargo-sweep # optional
cargo run # debug build and run
cargo test --workspace
cargo clippy --workspace --all-targets -- -D warnings
cargo fmt --all -- --check
cargo fmt --all # apply formatting
slint-lsp format -i src/ui/ui/*.slint
make translations # rebuild PO catalogs from @tr()
cargo outdated -w
cargo upgrade && cargo update --verbose
cargo sweep --time 14
cargo cleanReleases use Cocogitto (cargo install cocogitto / sudo pacman -S cocogitto), configured in cog.toml.
cog bump --auto # bump version, sync manifests, write `CHANGELOG.md`, commit, tag, push
cog bump --version 1.23.4 # manual version
cog changelog # changelog previewCommits must use Conventional Commits — enforced on commit via cog verify.
