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 操作系统
每月25,686次下载
在 39 个crate中使用 (34 个直接使用)
26KB
347 代码行
CLI Clipboard
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
是一个类型别名,代表WindowsClipboardContext
、OSXClipboardContext
或LinuxClipboardContext
之一,它们都实现了ClipboardProvider
。为ClipboardContext
选择的具体类型取决于操作系统(通过条件编译)。WaylandClipboardContext
和X11ClipboardContext
也可用,但通常正确的选择将由LinuxClipboardContext
决定。
便利函数
get_contents
和set_contents
是便利函数,它们为您创建一个上下文并在其上调用相应的函数。
替代方案
许可证
cli-clipboard
根据MIT和Apache2双重许可。
依赖关系
~0–11MB
~116K SLoC