クリップボードからテキストを読み取る

Recipe ID: sys-008

クリップボードに保存されているテキストデータを読み取る方法を解説します。

前提条件

プラグインのインストールが必要です。

npm run tauri add clipboard-manager

Permissions (権限) の設定

src-tauri/capabilities/default.json に以下の権限を追加します。

{
    "permissions": [
        "clipboard-manager:default",
        "clipboard-manager:allow-read-text",
        ...
    ]
}

1. フロントエンドから作成する (TypeScript)

@tauri-apps/plugin-clipboard-managerreadText() 関数を使用します。クリップボードの中身がテキストでない場合(画像など)は null が返る可能性があります。

import { readText } from '@tauri-apps/plugin-clipboard-manager';

async function getClipboardContent() {
  try {
    const text = await readText();
    console.log('Clipboard content:', text);
    return text;
  } catch (error) {
    console.error('読み取りに失敗しました:', error);
    return null;
  }
}

2. バックエンドから作成する (Rust)

Rust 側でも tauri_plugin_clipboard_manager::ClipboardExt を使用してクリップボードを読み取ることができます。

Rust 実装

use tauri::command;
use tauri_plugin_clipboard_manager::ClipboardExt;

#[command]
fn read_clipboard_from_rust(app: tauri::AppHandle) -> Result<String, String> {
    app.clipboard()
        .read_text()
        .map_err(|e| e.to_string())
}

#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
    tauri::Builder::default()
        .plugin(tauri_plugin_clipboard_manager::init())
        .invoke_handler(tauri::generate_handler![read_clipboard_from_rust])
        .run(tauri::generate_context!())
        .expect("error while running tauri application");
}

フロントエンドからの呼び出し

import { invoke } from '@tauri-apps/api/core';

invoke<string>('read_clipboard_from_rust')
  .then(text => console.log('Clipboard from Rust:', text))
  .catch(console.error);