Clippy is a lightweight clipboard history manager built natively in Rust using GTK4 and libadwaita. It follows the GNOME Human Interface Guidelines, stores everything locally, and runs quietly in the background.
| Feature | Description |
|---|---|
| Clipboard history | Captures text and images as you copy, stored locally in SQLite |
| Live search | Filters clipboard history in real time as you type |
| Pin items | Pinned entries survive "Clear All" |
| Image support | Captures and previews images alongside text entries |
| Global hotkey | Configurable system-wide shortcut to toggle the window (default: Super+V) |
| Drag and drop | Drag a clipboard entry directly into another app |
| Deletion with undo panel | Slide-out confirmation before removing an entry |
| Always on top | Optional window pin to keep Clippy above other windows |
| Theme aware | Follows your GNOME light/dark color scheme automatically |
| Settings panel | Configure history limit, hotkey, and autostart from within the app |
| Autostart | Optionally starts with your GNOME session |
| Local only | No cloud, no sync, no telemetry |
| Layer | Technology |
|---|---|
| Language | Rust |
| UI toolkit | GTK4 via gtk4-rs |
| Design system | libadwaita |
| Database | SQLite via rusqlite |
| Clipboard access | arboard |
| Image handling | image |
| Hashing | sha2 |
| Timestamps | chrono |
| Global shortcut | GNOME custom-keybinding gsettings schema |
Ubuntu / Debian:
sudo apt install libgtk-4-dev libadwaita-1-dev pkg-config build-essentialFedora:
sudo dnf install gtk4-devel libadwaita-devel pkg-configgit clone https://github.com/CharanMunur/Clippy.git
cd Clippy
./install.shThis builds a release binary, installs it to ~/.local/bin, and registers the app icon and .desktop launcher. To skip autostart:
./install.sh --no-autostartTo uninstall the source installation:
./uninstall.shDownload the .deb package from Releases and install it using:
sudo dpkg -i clippy_0.1.0_amd64.deb
# If there are missing dependencies:
sudo apt install -fTo uninstall:
sudo apt remove clippyDownload the .rpm package from Releases and install it using:
sudo dnf install clippy-0.1.0-1.x86_64.rpmTo uninstall:
sudo dnf remove clippycargo runRun as a background process with no window:
cargo run -- --backgroundToggle the window from a terminal or custom shortcut:
cargo run -- --toggleclippy/
├── src/
│ ├── main.rs # App entry point, window builder, CSS, menu actions
│ ├── ui.rs # Row layout, clipboard operations, list rendering
│ ├── settings.rs # Settings view, autostart toggle, hotkey config
│ ├── hotkey.rs # GNOME gsettings custom keybinding writer
│ ├── poller.rs # Background clipboard polling thread
│ └── db.rs # SQLite schema, CRUD, config store
├── icons/ # Custom symbolic SVG icons
├── assets/ # App icon
├── install.sh
├── uninstall.sh
└── clippy.desktop
| Action | Shortcut |
|---|---|
| Toggle Clippy window | Super + J (configurable in Settings) |
| Copy item | Left-click on an entry |
| Pin / unpin item | Click the pin icon on an entry |
| Open item actions | Click the menu icon on an entry |
| Delete item | Open actions, then click delete |
Configuration is stored in the local SQLite database at ~/.local/share/clippy/clippy.db, under a config table. From the Settings panel inside the app you can change:
- Global hotkey
- History limit
- Autostart on login
Available under the MIT License.


