クリップボードにテキスト(文字列)をコピーする方法を解説します。
Tauri v2 では @tauri-apps/plugin-clipboard-manager を使用します。
前提条件
プラグインのインストールが必要です。
npm run tauri add clipboard-manager
Permissions (権限) の設定
src-tauri/capabilities/default.json に以下の権限を追加します。
{
"permissions": [
"clipboard-manager:default",
"clipboard-manager:allow-write-text",
...
]
}
1. フロントエンドから作成する (TypeScript)
@tauri-apps/plugin-clipboard-manager の writeText(text) 関数を使用します。非同期で実行されます。
import { writeText } from '@tauri-apps/plugin-clipboard-manager';
async function copyToClipboard(text: string) {
try {
await writeText(text);
console.log('クリップボードにコピーしました');
} catch (error) {
console.error('コピーに失敗しました:', error);
}
}
// 使用例
copyToClipboard("Hello, Tauri!");
2. バックエンドから作成する (Rust)
Rust 側(バックエンド)でクリップボードを操作するには tauri_plugin_clipboard_manager::ClipboardExt トレイトを使用します。
これを使うには、npm run tauri add clipboard-manager を実行した際に src-tauri/Cargo.toml にプラグインが追加され、lib.rs で初期化されている必要があります。
Rust 実装
use tauri::command;
use tauri_plugin_clipboard_manager::ClipboardExt;
#[command]
fn copy_to_clipboard_from_rust(app: tauri::AppHandle, text: String) {
// AppHandle または Window に対して .clipboard() メソッドが使えるようになります
app.clipboard().write_text(text).unwrap();
}
#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
tauri::Builder::default()
.plugin(tauri_plugin_clipboard_manager::init()) // プラグインの初期化が必要
.invoke_handler(tauri::generate_handler![copy_to_clipboard_from_rust])
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
フロントエンドからの呼び出し
import { invoke } from '@tauri-apps/api/core';
invoke('copy_to_clipboard_from_rust', { text: 'Message from Rust!' });