#clipboard #cross-platform #paste #copy #system #content #wayland

cli-clipboard

cli-clipboard是一个用于获取和设置操作系统级剪贴板内容的跨平台库

5 个版本 (3 个重大更新)

0.4.0 2022年12月13日
0.3.0 2022年10月12日
0.2.1 2022年2月28日
0.2.0 2020年7月31日
0.1.0 2020年7月20日

#74 in 操作系统

Download history 4633/week @ 2024-03-14 6716/week @ 2024-03-21 4535/week @ 2024-03-28 6599/week @ 2024-04-04 5356/week @ 2024-04-11 7725/week @ 2024-04-18 5310/week @ 2024-04-25 5338/week @ 2024-05-02 6977/week @ 2024-05-09 11449/week @ 2024-05-16 6981/week @ 2024-05-23 6674/week @ 2024-05-30 7507/week @ 2024-06-06 7224/week @ 2024-06-13 6456/week @ 2024-06-20 2990/week @ 2024-06-27

每月25,686次下载
39 个crate中使用 (34 个直接使用)

MIT/Apache

26KB
347 代码行

CLI Clipboard

Rust

cli-clipboard是rust-clipboard的分支,通过wl-clipboard-rs为终端和无需窗口的应用程序添加了wayland支持。对于终端应用程序,它支持wayland和X11 Linux环境、macOS和Windows的复制和粘贴。

在Linux上,它将首先尝试设置一个Wayland剪贴板提供者。如果失败,它将回退到X11剪贴板提供者。

注意:在Linux上,您需要安装xorg-dev和libxcb-composite0-dev才能编译。在Debian和Ubuntu上,您可以使用以下命令安装它们:

sudo apt install xorg-dev libxcb-composite0-dev

示例

使用ClipboardContext创建剪贴板提供者

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(), "");
}

使用辅助函数

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);

API

ClipboardProvider

ClipboardProvider trait具有以下函数

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

  • ClipboardContext是一个类型别名,代表WindowsClipboardContextOSXClipboardContextLinuxClipboardContext之一,它们都实现了ClipboardProvider。为ClipboardContext选择的具体类型取决于操作系统(通过条件编译)。
  • WaylandClipboardContextX11ClipboardContext也可用,但通常正确的选择将由LinuxClipboardContext决定。

便利函数

get_contentsset_contents是便利函数,它们为您创建一个上下文并在其上调用相应的函数。

替代方案

  1. copypasta - rust-clipboard分支,为窗口应用程序添加wayland支持
  2. 原始的rust-clipboard

许可证

cli-clipboard根据MIT和Apache2双重许可。

依赖关系

~0–11MB
~116K SLoC