A clipboard library providing useful extensions for the
rust-clipboard
library.
Important note:
Because rust-clipboard
is not maintained
anymore, I highly recommend you to switch to copypasta-ext
(using copypasta
). These are forked, which essentially means its
the same but newer. Migrating should be simple.
I had a growing annoyance with rust-clipboard
, because the clipboard is
cleared on the Linux/X11 platform when your application exists as per X11
design. The crate maintainer didn't want to implement workarounds (for valid
reasons). This clipboard-ext
crate provides additional
clipboard contexts that solve this, along with a few other additions.
Here are some of these additions:
X11ForkClipboardProvider
: forks process and sets clipboard, keeps contents after exitX11BinClipboardProvider
: invokesxclip
/xsel
to set clipboard, keeps contents after exitOsc52ClipboardContext
: use OSC 52 escape sequence to set clipboard contentsCombinedClipboardProvider
: combine two providers, use different for getting/setting clipboard
Get and set clipboard contents. Keeps contents in X11 clipboard after exit by
forking the process. Falls back to standard clipboard provider on non X11 platforms.
See x11_fork
module for details.
use clipboard_ext::prelude::*;
use clipboard_ext::x11_fork::ClipboardContext;
fn main() {
let mut ctx = ClipboardContext::new().unwrap();
println!("{:?}", ctx.get_contents());
ctx.set_contents("some string".into()).unwrap();
}
Get and set clipboard contents. Keeps contents in X11 clipboard after exit by
invoking xclip
/xsel
. Falls back to standard clipboard provider on non X11
platforms. See x11_bin
module for details.
use clipboard_ext::prelude::*;
use clipboard_ext::x11_bin::ClipboardContext;
fn main() {
let mut ctx = ClipboardContext::new().unwrap();
println!("{:?}", ctx.get_contents());
ctx.set_contents("some string".into()).unwrap();
}
- Rust 1.40 or above
- Same requirements as
rust-clipboard
- Requirements noted in specific clipboard context modules
- to
aweinstock314
for buildingrust-clipboard
- to everyone involved in all crate dependencies used
This project is dual-licensed under the MIT and Apache2 license.