I thought wayland had some restrictions on global clipboard access and the last time I tried none of the well known clipboard managers worked as expected. (Also they all looked like shit).
This has been one of my pain points switching from macOS to linux or windows. Great job.
I actually went looking at the source code to see if this would work on Wayland and it doesn't. The clipboard snooping is implemented by listening for events using gdk.Clipboard, which is not an ext_data_control_v1 implementation. So on Wayland it'll only notice clipboard events if it's in focus (or if the compositor sends clipboard events to unfocused windows, which I'm not sure any do).
Edit: Yes, tested it now and it doesn't detect clipboard events from Wayland windows when it doesn't have focus. It only detects events from Xwayland windows when unfocused, or if I copy something from a Wayland window and then focus the clyp window then it detects the thing I copied.
It's almost as if a Wayland compositor should keep a list of trusted apps to broadcast clipboard events to, somehow similar to how screenshots are handled. (Not that Wayland is well-rounded in this regard.)
The ext_data_control_v1 protocol I mentioned is a protocol specifically for clipboard managers. So a client that wants to be a clipboard manager would implement that protocol. There are already implementations of it like wl-clipboard. There is no need for the compositor to broadcast regular clipboard events (wl_data_offer).
Now the compositor could certainly keep an additional list of trusted applications that are allowed to be clients of the ext_data_control_v1 protocol. Though identifying the client to enforce such a thing is a bigger problem than just maintaining a list of applications, because the protocol has no client identification. AFAIK every compositor that supports that protocol has no restrictions on clients requesting it, though something involving the security-context protocol might change this in the future.
That's interesting.. Never ran into this, been using various clipboard managers in wayland (swaywm at first, now niri) for years without issue. copyq is what I use these days and, while not quite as pretty as this one, its great!
One thing that I love about Windows (and there aren't many others) is that pressing Super+V (instead of Ctrl+V) shows a list of last N clipboard entries and you can select which one you wish to paste. Simple and very effective.
You can also pin some entries so that they are permanently available, but that's a bonus.
I haven't seen a clipboard manager behave like that in Linux - can this one be used in a similar way?
The "Clipboard History"[0] Gnome extension also does this quite well in my experience. I also recently switched from Windows 11 (to Ubuntu), very happy so far.
Edit:
Supports pinning and binding it to Super+V as well!
Congrats on the release, I went the other way around, osx first in my case https://github.com/fkhadra/xcp, I'll probably add support for linux and windows when I get the time. Funny that we both used golang for that.
Linux clipboards have been a pain point to me for decades. What I really want is a single unified clipboard daemon that works across different login sessions and covers console and graphical environments with the same keyboard shortcut. Bonus points if it's got a single-use-paste option for passwords, and also buffers to hold onto multiple selections.
For clarity, are you expecting a clipboard in full terminal sessions (including serial?) or are you just meaning pty sessions with a terminal emulator?
I'm not sure how a clipboard manager would know the text copied in was a password (or 2fa).
These clipboards are a privacy problem when you're sharing your screen. So many times a coworker has copy/pasted and a dialog with even passwords have been shown on screen...
I use CopyQ. Love it because it's so cross-platform, and consistently works across my Mac and Linux machines with minimal fuss; it handles images really well too.
Great work! does the CLI support clipboard operations like MacOS' `pbcopy` and `pbpaste` ? I've added it to my stars to keep and eye on the project, GTK4 and wayland support makes it rather futureproof IMO
It would be nice if you could pipe to it like pbcopy, with each invocation creating a new entry, and add support for automatically expiring old entries.
I thought wayland had some restrictions on global clipboard access and the last time I tried none of the well known clipboard managers worked as expected. (Also they all looked like shit).
This has been one of my pain points switching from macOS to linux or windows. Great job.
I actually went looking at the source code to see if this would work on Wayland and it doesn't. The clipboard snooping is implemented by listening for events using gdk.Clipboard, which is not an ext_data_control_v1 implementation. So on Wayland it'll only notice clipboard events if it's in focus (or if the compositor sends clipboard events to unfocused windows, which I'm not sure any do).
https://github.com/murat-cileli/clyp/blob/2c0ce6c33813c3f35f...
Edit: Yes, tested it now and it doesn't detect clipboard events from Wayland windows when it doesn't have focus. It only detects events from Xwayland windows when unfocused, or if I copy something from a Wayland window and then focus the clyp window then it detects the thing I copied.
It's almost as if a Wayland compositor should keep a list of trusted apps to broadcast clipboard events to, somehow similar to how screenshots are handled. (Not that Wayland is well-rounded in this regard.)
The ext_data_control_v1 protocol I mentioned is a protocol specifically for clipboard managers. So a client that wants to be a clipboard manager would implement that protocol. There are already implementations of it like wl-clipboard. There is no need for the compositor to broadcast regular clipboard events (wl_data_offer).
Now the compositor could certainly keep an additional list of trusted applications that are allowed to be clients of the ext_data_control_v1 protocol. Though identifying the client to enforce such a thing is a bigger problem than just maintaining a list of applications, because the protocol has no client identification. AFAIK every compositor that supports that protocol has no restrictions on clients requesting it, though something involving the security-context protocol might change this in the future.
Odd, why does the readme tout "Full Wayland support" then?
Because its easy to write it and most wont even verify?
That's interesting.. Never ran into this, been using various clipboard managers in wayland (swaywm at first, now niri) for years without issue. copyq is what I use these days and, while not quite as pretty as this one, its great!
One thing that I love about Windows (and there aren't many others) is that pressing Super+V (instead of Ctrl+V) shows a list of last N clipboard entries and you can select which one you wish to paste. Simple and very effective.
You can also pin some entries so that they are permanently available, but that's a bonus.
I haven't seen a clipboard manager behave like that in Linux - can this one be used in a similar way?
Yup as others have said, super+v for me invokes greenclip's rofi plugin which gives me a nice themable clipboard history overlay.
I use a popup like that myself a lot. Clipman on xfce supports that but no pinning.
The "Clipboard History"[0] Gnome extension also does this quite well in my experience. I also recently switched from Windows 11 (to Ubuntu), very happy so far.
Edit: Supports pinning and binding it to Super+V as well!
[0] https://extensions.gnome.org/extension/4839/clipboard-histor...
Yes, I this is the feature I miss most; I'm almost ready to try to remember how to write in C.
Tried it, and found out I had disabled it in the past, and it fortunately has stayed off trhough updates.
How does it deal with usernames/passwords/secrets in the clipboard? Do you clean it up periodically?
I looked at mine, and it only has entries from my current login session.
I configured copyq to work exactly like this, so it's doable.
Congrats on the release, I went the other way around, osx first in my case https://github.com/fkhadra/xcp, I'll probably add support for linux and windows when I get the time. Funny that we both used golang for that.
Linux clipboards have been a pain point to me for decades. What I really want is a single unified clipboard daemon that works across different login sessions and covers console and graphical environments with the same keyboard shortcut. Bonus points if it's got a single-use-paste option for passwords, and also buffers to hold onto multiple selections.
For clarity, are you expecting a clipboard in full terminal sessions (including serial?) or are you just meaning pty sessions with a terminal emulator?
I'm not sure how a clipboard manager would know the text copied in was a password (or 2fa).
These clipboards are a privacy problem when you're sharing your screen. So many times a coworker has copy/pasted and a dialog with even passwords have been shown on screen...
Why images are limited to 3 and are there plans to fix that?
I use CopyQ. Love it because it's so cross-platform, and consistently works across my Mac and Linux machines with minimal fuss; it handles images really well too.
Does it support indicators? If not, any plans to add it?
Great work! does the CLI support clipboard operations like MacOS' `pbcopy` and `pbpaste` ? I've added it to my stars to keep and eye on the project, GTK4 and wayland support makes it rather futureproof IMO
For Wayland I just use this:
I used to do the same thing on Xorg with xclip I thinkSwitching between macOS for job and linux for everything else, I’ve honestly never realized any difference.
There's wl-clipboard for this, has wl-copy and wl-paste commands. I've been using it on sway for years.
It would be nice if you could pipe to it like pbcopy, with each invocation creating a new entry, and add support for automatically expiring old entries.