terminal-clipboard

Crates.ioterminal-clipboard
lib.rsterminal-clipboard
version0.4.1
sourcesrc
created_at2020-09-08 13:42:31.923193
updated_at2023-10-31 09:33:26.916261
descriptiona minimal cross-platform clipboard
homepage
repositoryhttps://github.com/Canop/terminal-clipboard
max_upload_size
id286142
size26,729
Denys Séguret (Canop)

documentation

README

terminal-clipboard

CI MIT Latest Version Chat on Miaou

terminal-clipboard is a cross-platform clipboard library focused on strings copying and pasting for terminal applications:

  • it's tested on linux, windows and Android (Termux)
  • it doesn't handle other types of objects than strings
  • it doesn't handle non UTF8 strings

Usage

terminal_clipboard::set_string("test").unwrap();
assert_eq!("test", terminal_clipboard::get_string().unwrap());

Supported platforms

The implementation is currently chosen from the "target_os" part of the compilation target.

Android (Termux)

The current implementation will defer to Termux API facilities to access the Android clipboard, and won't work if the Termux API isn't available at runtime.

If you know of solutions to access the Android clipboard without Termux, please open an issue.

Linux

If a unix-like target is detected and the "termux" feature isn't enabled, terminal-clipboard uses the x11-clipboard crate.

You'll need to have libxcb to compile.

On Debian and Ubuntu you can install them with

sudo apt install libxcb1-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev -y

Fedora, Centos, Red Hat

sudo dnf install libxcb -y

openSUSE

sudo zypper --non-interactive install xorg-x11-util-devel libxcb-composite0 libxcb-render0 libxcb-shape0 libxcb-xfixes0

Arch Linux

sudo pacman -Syu --noconfirm libxcb

Alpine is not supported. For alpine you have to use musl instead of gnu and have to provide alternative behaviour.

#[cfg(not(target_env = "musl"))]
{
  terminal_clipboard::set_string(answer_text).unwrap();
  assert_eq!(*answer_text, terminal_clipboard::get_string().unwrap());
  println!("Text '{answer_text}' was copied to your clipboard")
}
#[cfg(target_env = "musl")]
{
  println!("{}", answer_text);
}

Windows

If the compilation target is "windows", terminal-clipboard uses the clipboard-win crate. If you're only interested in this platform, you should use this crate directly.

Commit count: 16

cargo fmt