| Crates.io | cli-clipboard |
| lib.rs | cli-clipboard |
| version | 0.4.0 |
| created_at | 2020-07-20 04:21:25.625045+00 |
| updated_at | 2022-12-13 01:31:14.055268+00 |
| 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.