RClipboard is a Rust desktop clipboard-history viewer and manager. It watches the native clipboard, presents recent items in a Slint window, and lets you restore, search, filter, pin, or remove captured content.
The project is under active development. The desktop application currently keeps history in memory, so entries are removed when the application exits. An encrypted SQLCipher repository and key-management layer are implemented and tested, but are not yet connected to the desktop startup flow.
- Captures text, PNG images, and local file lists.
- Restores any captured item to the native clipboard with Copy.
- Deduplicates repeated content and promotes it to the newest position.
- Searches text and file paths and filters by content type or pinned state.
- Pins, unpins, deletes, and clears unpinned entries.
- Skips clipboard content marked as sensitive by supported password managers and operating systems.
- Provides tray actions to open history and settings, pause or resume capture, and quit.
- Offers a mouse-driven settings window for capture formats, scan rate, history limits, and material transparency.
- Opens as a centered floating window on Sway.
- Includes an encrypted SQLCipher storage crate with key-store and recovery- passphrase key wrapping.
- Rust 1.93 or newer.
- A standard native build toolchain (C compiler, linker,
make, andperl). - A supported desktop session with access to the system clipboard.
- On Linux, a StatusNotifierItem/AppIndicator host if you want to use the tray menu. Waybar is one compatible host.
swaymsgfor automatic floating and centering on Sway.
Build an optimized binary from the repository root:
make buildBuild and install it as /usr/local/bin/rclipboard:
sudo make installThe install target builds the release binary automatically. For an installation
that does not require administrator access, choose a writable prefix whose bin
directory is on your PATH:
make install PREFIX="$HOME/.local"Packagers can stage an installation without changing the final prefix:
make install DESTDIR=/tmp/rclipboard-package PREFIX=/usrThe build location can be changed with CARGO_TARGET_DIR. The installed command
name defaults to rclipboard and can be overridden with PROGRAM.
Run directly from the source tree with make run, or run the installed command:
rclipboardOnce RClipboard is running, copy text, an image, or files normally. New content appears in the history window. Select Copy on an entry to put it back on the clipboard.
The tray menu contains:
- Open History — restores the history window.
- Settings… — opens the floating settings window.
- Pause Capture / Resume Capture — controls monitoring without quitting.
- Quit RClipboard — stops monitoring and exits.
On Wayland, tray visibility is controlled by the desktop panel. If no tray icon is visible, keep the history window open or configure a StatusNotifierItem host.
Open Settings… from the tray menu. Every option is controlled with buttons or switches, applies immediately, and is saved automatically. The window provides:
- Capture switches for text, PNG images, and local file lists.
- Clipboard scan-rate presets of 200 ms, 350 ms, or 1 second.
- History limits of 100, 1,000, or 5,000 entries.
- Retention periods of 7, 30, or 90 days.
- In-memory content caps of 50, 250, or 1,000 MiB.
- Dark-material opacity choices of 92%, 96%, or solid.
Settings are stored at $XDG_CONFIG_HOME/rclipboard/settings.json. If
XDG_CONFIG_HOME is unset, RClipboard uses
$HOME/.config/rclipboard/settings.json. This file persists configuration only;
clipboard history itself remains in memory and is cleared when the application
exits.
RClipboard uses the Wayland application ID app.rclipboard.RClipboard. When the
SWAYSOCK environment variable is present, it asks Sway to float, resize, and
center the history window at 400×600 pixels. The settings window is independently
matched by title, floated, centered, and sized to 460×680 pixels. Other compositors
retain control of placement and may tile the windows according to their own rules.
The workspace is organized into three crates:
| Crate | Responsibility |
|---|---|
rclipboard-core |
Clipboard model, capture orchestration, queries, and retention rules |
rclipboard-storage |
SQLCipher repository and encrypted key envelope |
rclipboard-desktop |
Native clipboard adapter, Slint UI, tray, and window placement |
Changes are developed with a red-green-refactor TDD cycle: start with a failing behavioral test, implement the smallest passing change, then refactor while the suite stays green.
Run the complete verification suite with:
make checkThe individual make test, make lint, and make fmt targets are also
available. Run make help for a compact command summary.
- Desktop history is not persisted across restarts yet.
- The encrypted storage and recovery-passphrase flow do not yet have desktop UI integration.
- Automatic floating is currently implemented only for Sway.
- Tray icons require support from the active desktop panel.
- Global keyboard shortcuts, autostart, and packaged installers are not yet implemented.
See CHANGELOG.md for a chronological summary of changes.
The workspace metadata declares dual licensing under MIT or Apache-2.0.