Windows-style clipboard manager for Ubuntu
Project description
ClipVault — Windows-style Clipboard Manager for Ubuntu
A pixel-perfect recreation of Windows Win+V clipboard history for Ubuntu Linux, built with PyQt5.
Features
| Feature | Windows Win+V | ClipVault |
|---|---|---|
| Clipboard History | Yes | Yes |
| Text support | Yes | Yes |
| Image support | Yes | Yes |
| Pin items | Yes | Yes |
| Search history | Yes | Yes |
| Global hotkey | Win+V | Super+V |
| One-click paste | Yes | Yes |
| Dark UI | Yes | Yes |
| System tray | Yes | Yes |
| Auto-start on login | Yes | Yes |
| Tabs (All/Pinned/Text/Images) | Yes | Yes |
| Cross-device sync | Yes (MS account) | No |
Project structure
clipboard_manager/
├── app/ # Application package
│ ├── main.py # Entry point
│ ├── shared/
│ │ └── constants.py # Colors, file paths, limits
│ ├── models/
│ │ └── clip_item.py # ClipItem data model
│ ├── core/
│ │ ├── history_manager.py # Load/save/search clipboard history
│ │ └── clipboard_watcher.py# QThread — polls system clipboard
│ ├── workers/
│ │ └── hotkey_listener.py # Daemon thread — global Super+V hotkey
│ └── ui/
│ ├── main_window.py # ClipVaultWindow (main UI)
│ ├── tray_icon.py # System tray icon + context menu
│ └── widgets/
│ └── clip_item_widget.py # Per-item card widget
├── installation/
│ ├── install.sh # One-shot installer for Ubuntu/Debian
│ ├── uninstall.sh # Removes all installed files
│ └── README.md # Installation guide
├── pyproject.toml # Project metadata, deps, pytest config
└── README.md
Quick install
chmod +x installation/install.sh
./installation/install.sh
Then launch:
clipvault
See installation/README.md for the full installation guide and manual install instructions.
To uninstall:
chmod +x installation/uninstall.sh
./installation/uninstall.sh
Running without installing
# From the project root
python3 app/main.py
Keyboard shortcuts
| Shortcut | Action |
|---|---|
Super+V |
Toggle clipboard window |
Escape |
Close window |
| Click item | Paste immediately |
| Pin button | Pin / Unpin item |
| X button | Delete item |
Configuration
History is stored at ~/.clipvault_history.json.
To change the max history size, edit app/shared/constants.py:
MAX_HISTORY = 50 # change this number
Compatibility
- Ubuntu 20.04+
- Debian 11+
- Any GNOME / KDE / XFCE desktop on X11
Wayland limitations
ClipVault is built on PyQt5 + X11. On Wayland sessions some features are restricted:
| Feature | X11 | Wayland |
|---|---|---|
| Clipboard history | Yes | Yes |
Super+V global hotkey |
Yes | No |
| Auto-paste on item click | Yes | Partial |
| System tray icon | Yes | Yes (via XWayland) |
Why the hotkey does not work on Wayland:
pynput uses X11 APIs (python-xlib) to intercept global key events. Wayland's security model blocks applications from listening to input outside their own window, so the Super+V hotkey cannot be registered.
Workarounds on Wayland:
- Click the system tray icon to toggle the window
- Run the session in X11 mode: log out → on the login screen click the gear icon → select Ubuntu on Xorg → log back in
- Set the environment variable before launching:
QT_QPA_PLATFORM=xcb clipvault
Check which session you are on:
echo $XDG_SESSION_TYPE # prints "x11" or "wayland"
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file clipvault-1.0.6.tar.gz.
File metadata
- Download URL: clipvault-1.0.6.tar.gz
- Upload date:
- Size: 17.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6a8de16159c9138d5e68df8da908a625d1d7a46eb4f4158b03b9dced66e8b359
|
|
| MD5 |
3675436256ff98f41d1242489105a0a2
|
|
| BLAKE2b-256 |
b0da4bbe858e39ae5ac34a83d83a5411343c8c3665f4b2e9db8d272b5a8f18b2
|
Provenance
The following attestation bundles were made for clipvault-1.0.6.tar.gz:
Publisher:
publish.yml on jinshah0322/ClipVault
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
clipvault-1.0.6.tar.gz -
Subject digest:
6a8de16159c9138d5e68df8da908a625d1d7a46eb4f4158b03b9dced66e8b359 - Sigstore transparency entry: 1189087301
- Sigstore integration time:
-
Permalink:
jinshah0322/ClipVault@8c57c264799f5109d3b97fc126cb715b3ededdec -
Branch / Tag:
refs/tags/v1.0.6 - Owner: https://github.com/jinshah0322
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8c57c264799f5109d3b97fc126cb715b3ededdec -
Trigger Event:
push
-
Statement type:
File details
Details for the file clipvault-1.0.6-py3-none-any.whl.
File metadata
- Download URL: clipvault-1.0.6-py3-none-any.whl
- Upload date:
- Size: 20.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fdde3dccbe0361c354fa92af5c6290724394b601756c24a723574f922a3490b4
|
|
| MD5 |
bc8927c0ede72358eaf383ead192d662
|
|
| BLAKE2b-256 |
d3b9f8879e05b702ee00e90322e36b03f66fa4e429a80229033f795cfd8f0973
|
Provenance
The following attestation bundles were made for clipvault-1.0.6-py3-none-any.whl:
Publisher:
publish.yml on jinshah0322/ClipVault
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
clipvault-1.0.6-py3-none-any.whl -
Subject digest:
fdde3dccbe0361c354fa92af5c6290724394b601756c24a723574f922a3490b4 - Sigstore transparency entry: 1189087346
- Sigstore integration time:
-
Permalink:
jinshah0322/ClipVault@8c57c264799f5109d3b97fc126cb715b3ededdec -
Branch / Tag:
refs/tags/v1.0.6 - Owner: https://github.com/jinshah0322
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8c57c264799f5109d3b97fc126cb715b3ededdec -
Trigger Event:
push
-
Statement type: