Crates.io | cli-clipboard |
lib.rs | cli-clipboard |
version | 0.4.0 |
source | src |
created_at | 2020-07-20 04:21:25.625045 |
updated_at | 2022-12-13 01:31:14.055268 |
description | cli-clipboard is a cross-platform library for getting and setting the contents of the OS-level clipboard. |
homepage | |
repository | https://github.com/actuallyallie/cli-clipboard |
max_upload_size | |
id | 267106 |
size | 57,530 |
cli-clipboard is a fork of rust-clipboard that adds wayland support for terminal and window-less applications via wl-clipboard-rs. For terminal applications it supports copy and paste for both wayland and X11 linux environments, macOS and windows.
On Linux it will first attempt to setup a Wayland clipboard provider. If that fails it will then fallback to the X11 clipboard provider.
Note: On Linux, you'll need to have xorg-dev and libxcb-composite0-dev to compile. On Debian and Ubuntu you can install them with
sudo apt install xorg-dev libxcb-composite0-dev
Using ClipboardContext to create a clipboard provider:
use cli_clipboard::{ClipboardContext, ClipboardProvider};
let mut ctx = ClipboardContext::new().unwrap();
let the_string = "Hello, world!";
ctx.set_contents(the_string.to_owned()).unwrap();
assert_eq!(ctx.get_contents().unwrap(), the_string);
ctx.clear();
// clearing the clipboard causes get_contents to return Err on macos and windows
if cfg!(any(windows, target_os = "macos")) {
if ctx.get_contents().is_ok() {
panic!("Should be Err");
}
} else {
assert_eq!(ctx.get_contents(), "");
}
Using the helper functions:
use cli_clipboard;
let the_string = "Hello, world!";
cli_clipboard::set_contents(the_string.to_owned()).unwrap();
assert_eq!(cli_clipboard::get_contents().unwrap(), the_string);
The ClipboardProvider
trait has the following functions:
fn new() -> anyhow::Result<Self>;
fn get_contents(&mut self) -> anyhow::Result<String>;
fn set_contents(&mut self, String) -> anyhow::Result<()>;
fn clear(&mut self) -> anhow::Result<()>;
ClipboardContext
is a type alias for one of {WindowsClipboardContext
, OSXClipboardContext
, LinuxClipboardContext
}, all of which implement ClipboardProvider
. Which concrete type is chosen for ClipboardContext
depends on the OS (via conditional compilation).WaylandClipboardContext
and X11ClipboardContext
are also available but generally the correct one will be chosen by LinuxClipboardContext
.get_contents
and set_contents
are convenience functions that create a context for you and call the respective function on it.
cli-clipboard
is dual-licensed under MIT and Apache2.