1 个不稳定版本
0.1.2 | 2022年9月18日 |
---|---|
0.1.1 |
|
0.1.0 |
|
#1031 在 文本处理
68 每月下载次数
105KB
3K SLoC
由 clip
提供支持的跨平台剪切板管理库。
功能
- 从剪切板读取和写入 UTF-8 文本
- 从剪切板读取和写入 RGBA 图像
- 清除剪切板
平台支持
平台 | 清除 | 文本 (R) | 文本 (W) | 图像 (R) | 图像 (W) |
---|---|---|---|---|---|
Windows | ✅ | ✅ | ✅ | ✅ | ✅ |
macOS | ✅ | ✅ | ✅ | ✅ | ✅ |
Linux (X11) | ✅ | ✅ | ✅ | ✅ | ✅ |
Linux
需要安装 libx11-dev
/libX11-devel
和 libpng-dev
/libpng-devel
软件包。
线程安全
并非所有操作系统剪切板 API 都是线程安全的,因此虽然此包中的函数通过使用内部互斥锁进行同步来尽可能地实现线程安全,但使用其他剪切板库或直接调用操作系统剪切板 API 可能会导致未定义的行为。
示例
读取数据
let mut clipboard = clippers::Clipboard::get();
match clipboard.read() {
Some(clippers::ClipperData::Text(text)) => {
println!("Clipboard text: {:?}", text);
}
Some(clippers::ClipperData::Image(image)) => {
println!("Clipboard image: {}x{} RGBA", image.width(), image.height());
}
Some(data) => {
println!("Clipboard data is unknown: {data:?}");
}
None => {
println!("Clipboard is empty");
}
}
写入文本
let mut clipboard = clippers::Clipboard::get();
clipboard.write_text("Hello, world!").unwrap();
assert_eq!(clipboard.read().unwrap().into_text().unwrap(), "Hello, world!");
写入图像
let mut clipboard = clippers::Clipboard::get();
let image = image::ImageBuffer::from_fn(8, 8, |x, y| {
if (x * y) % 2 == 0 {
image::Rgba([255, 0, 0, 255])
} else {
image::Rgba([0, 255, 0, 255])
}
});
clipboard.write_image(image.width(), image.height(), image.as_raw()).unwrap();
let clipboard_image = clipboard.read().unwrap();
assert_eq!(clipboard_image.into_image().unwrap().as_raw(), image.as_ref());
依赖
~2–7.5MB
~60K SLoC