mirror of github.com/Breadway/breadclip
Find a file
Breadway add5c6c8f1
All checks were successful
Mirror to GitHub / mirror (push) Successful in 1s
CI: migrate release workflow from GitHub Actions to Forgejo Actions
GitHub Actions self-hosted runners need per-repo registration on a
personal account; Forgejo Actions' runner already serves every repo
with zero setup. Moves release publishing there (dl.breadway.dev stays
the primary bakery target; GitHub release upload is kept as the
fallback via an explicit token, since Forgejo Actions has no ambient
GITHUB_TOKEN) and adds a mirror workflow to keep GitHub in sync
automatically.
2026-07-03 14:10:11 +08:00
.forgejo/workflows CI: migrate release workflow from GitHub Actions to Forgejo Actions 2026-07-03 14:10:11 +08:00
breadclip Initial commit 2026-07-02 20:59:21 +08:00
breadclip-core Initial commit 2026-07-02 20:59:21 +08:00
breadclipd Initial commit 2026-07-02 20:59:21 +08:00
contrib Initial commit 2026-07-02 20:59:21 +08:00
.gitignore Initial commit 2026-07-02 20:59:21 +08:00
bakery.toml Initial commit 2026-07-02 20:59:21 +08:00
Cargo.lock Initial commit 2026-07-02 20:59:21 +08:00
Cargo.toml Initial commit 2026-07-02 20:59:21 +08:00
LICENSE Initial commit 2026-07-02 20:59:21 +08:00
README.md Initial commit 2026-07-02 20:59:21 +08:00

breadclip

A Wayland clipboard history manager for Hyprland. It consists of two binaries:

  • breadclipd — a background daemon that watches the clipboard and persists entries to a local SQLite database.
  • breadclip — a GTK4 Layer Shell popup for browsing and recalling clipboard history.

Requirements

  • Rust toolchain (edition 2021)
  • GTK 4.12+
  • gtk4-layer-shell
  • wl-clipboard (wl-paste and wl-copy must be on $PATH)
  • Hyprland (or any Wayland compositor with Layer Shell support, though the panel-positioning logic is Hyprland-specific)

Build

git clone https://git.breadway.dev/breadway/breadclip
cd breadclip
cargo build --release

The compiled binaries are at target/release/breadclip and target/release/breadclipd.

Install

Copy the binaries to somewhere on your $PATH, e.g.:

cp target/release/breadclip target/release/breadclipd ~/.local/bin/

systemd user service

A unit file is provided in contrib/:

cp contrib/breadclipd.service ~/.config/systemd/user/
systemctl --user daemon-reload
systemctl --user enable --now breadclipd

Hyprland keybind

Add the contents of contrib/hyprland.conf to your hyprland.conf:

layerrule = blur, breadclip
layerrule = ignorezero, breadclip

bind = $mainMod, V, exec, breadclip

The layerrule lines enable the frosted-glass blur effect behind the panel.

Usage

Start the daemon (or let the systemd unit handle it):

breadclipd

Open the clipboard history popup:

breadclip

Running breadclip a second time while it is open closes it (toggle behaviour).

Keyboard shortcuts

Key Action
Up / Down Move selection
Enter Copy selected entry to clipboard and close
Delete Remove selected entry from history
Escape Close without copying

Clicking an entry copies it and closes the popup. Clicking outside the panel closes it.

The popup has three filter chips — All, Text, Images — and a search box. The search box filters text entries by content; image entries only appear under the Images filter.

Data storage

History is stored under $XDG_DATA_HOME/breadclip/ (typically ~/.local/share/breadclip/):

Path Contents
history.db SQLite database of all entries
images/ PNG files for image entries

The daemon keeps at most 200 text entries and 50 image entries, trimming oldest entries automatically.

Theming

breadclip inherits its colour palette from bread-theme. The panel renders with an 80% opaque background so Hyprland's layerrule = blur can show a frosted-glass effect behind it.