クリップボードの中身を消去する

Recipe ID: sys-010

クリップボードの内容(テキストや画像)を消去する方法を解説します。
セキュリティ上の理由でコピー履歴を削除したい場合などに使用します。

前提条件

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

npm run tauri add clipboard-manager

Permissions (権限) の設定

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

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

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

@tauri-apps/plugin-clipboard-managerclear() 関数を呼び出すだけで、テキスト・画像を含むクリップボードの内容がクリアされます。

1. クリップボードの消去

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

async function clearClipboard() {
  try {
    await clear();
    console.log('クリップボードをクリアしました');
  } catch (error) {
    console.error('クリアに失敗しました', error);
  }
}

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

Rust 側でも tauri_plugin_clipboard_manager::ClipboardExt を使用してクリップボードをクリアできます。

Rust 実装

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

#[command]
fn clear_clipboard_from_rust(app: tauri::AppHandle) -> Result<(), String> {
    app.clipboard()
        .clear()
        .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![clear_clipboard_from_rust])
        .run(tauri::generate_context!())
        .expect("error while running tauri application");
}

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

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

invoke('clear_clipboard_from_rust')
  .then(() => console.log('Clipboard cleared from Rust!'))
  .catch(console.error);