Skip to content

Latest commit

 

History

20 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RClipboard

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.

Features

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

Requirements

  • Rust 1.93 or newer.
  • A standard native build toolchain (C compiler, linker, make, and perl).
  • 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.
  • swaymsg for automatic floating and centering on Sway.

Build and install

Build an optimized binary from the repository root:

make build

Build and install it as /usr/local/bin/rclipboard:

sudo make install

The 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=/usr

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

rclipboard

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

Settings

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.

Window behavior

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.

Development

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 check

The individual make test, make lint, and make fmt targets are also available. Run make help for a compact command summary.

Current limitations

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

License

The workspace metadata declares dual licensing under MIT or Apache-2.0.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages