ABAshish Bisht
Resume
ESC
Back to projects

Case study · 2026

Copyshelf

Clipboard history for Linux, open source

I missed Windows' Win+V on Linux, so I built it: press Super+V, pick an earlier copy, and it's pasted into the app you're using. It runs on GNOME, KDE, Sway, Hyprland and X11, installs with one command without root, and is tested in CI on several Ubuntu versions.

My role
Solo: design, code, packaging and docs
Stack
  • Python
  • GTK · PyGObject
  • GNOME Shell extension
  • D‑Bus
  • Wayland / X11
  • GitHub Actions

Challenges

  1. 01

    Wayland doesn't let apps watch the clipboard

    Problem
    On Wayland, an app can't read the clipboard unless it has focus, which is exactly what a clipboard manager needs to do.
    Approach
    I pick a method per desktop. On GNOME, Copyshelf runs through XWayland, where GNOME shares every copy. On KDE and wlroots desktops it uses the data‑control protocol via wl‑paste.
    Outcome
    Clipboard history works on every major desktop, not just one.
  2. 02

    Pasting into other apps

    Problem
    Wayland also blocks apps from pressing keys in other apps, so 'auto‑paste' is not allowed by default.
    Approach
    On GNOME I wrote a small GNOME Shell extension that presses Ctrl+V when Copyshelf asks over D‑Bus. Elsewhere it uses xdotool, wtype or the RemoteDesktop portal. Terminals get Ctrl+Shift+V. Where nothing works, it copies the item and tells you to press Ctrl+V, so it never fails silently.
    Outcome
    Auto‑paste works across desktops and terminals, with a clear fallback.
  3. 03

    Not leaking passwords

    Problem
    A clipboard history that records passwords is a security problem.
    Approach
    Copyshelf skips copies that password managers mark as secret, using the hint KeePassXC and KDE apps attach to sensitive copies.
    Outcome
    Passwords copied from password managers never land in the history.

What I took away