arboard
arboard
クレートに関する個人的メモ
This is a cross-platform library for interacting with the clipboard. It allows to copy and paste both text and image data in a platform independent way on Linux, Mac, and Windows.
arboardはクロスプラットフォームな、クリップボードを扱うライブラリである。これを使うことで、プラットフォームに依存せず、テキストと画像、両方のデータをクリップボードを通じてコピー、ペーストすることができる。
Arboard (Arthur's Clipboard)より引用, 筆者訳
rust_clipboard
クレートがメンテナンスされていないために生まれたらしい
難しくなくてよい
使い方
テキスト
use arboard::Clipboard
fn main() {
let mut clipboard = Clipboard::new().unwrap();
// クリップボードのテキストを取得
let clipboard_text = clipboard.get_text().unwrap();
// クリップボードにテキストを貼り付け
let the_string = "Hello, world!";
clipboard.set_text(the_string).unwrap();
}
画像
ImageData
という構造体を使用する
定義は以下のようになっている
pub struct ImageData<'a> {
pub width: usize,
pub height: usize,
pub bytes: Cow<'a, [u8]>,
}
以下のように使用可能
use arboard::ImageData;
use std::borrow::Cow;
fn main() {
let bytes = [
// 赤のピクセル
255, 0, 0, 255,
// 青のピクセル
0, 255, 0, 255,
];
let img = ImageData {
width: 2,
height: 1,
bytes: Cow::from(bytes.as_ref())
};
}
Struct arboard::ImageDataより引用 コメントのみ筆者が日本語訳
クリップボードにコピー、ペーストする例
use arboard::{Clipboard, ImageData};
fn main() {
let mut clipboard = Clipboard::new().unwrap();
// クリップボードから画像を取得
let image = clipboard.get_image().unwarp();
// クリップボードに画像を貼り付け
#[rustfmt::skip]
let bytes = [
255, 000, 000, 255,
000, 255, 000, 100,
000, 000, 255, 100,
0, 0, 0, 255,
];
let img_data = ImageData { width: 2, height: 2, bytes: bytes.as_ref().into() };
clipboard.set_image(img_data).unwrap();
}