2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Rustでクリップボードを扱う(arboard)

Posted at

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]>,
}

Struct arboard::ImageDataより引用

以下のように使用可能

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

参考文献

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?