タスクバー上のプリアイコンを点滅させ、ユーザーに注意を促す(User Attention Request)方法を紹介します。
長時間実行していた処理が完了した際や、緊急の通知がある場合など、ウィンドウが非アクティブな状態でもユーザーに気付いてもらうために有効です。
フロントエンド、バックエンドそれぞれから、点滅の種類(Critical/Informational)を指定して実行する手順を解説します。
:::warning 注意
ウィンドウの点滅は、ウィンドウにフォーカスが当たっていない(アクティブでない)場合のみ有効です。
すでにウィンドウがアクティブな状態でこの機能を実行しても、視覚的な効果は発生しませんのでご注意ください。
:::
前提条件
Permissions (権限) の設定
src-tauri/capabilities/default.json に以下の権限を追加します。
{
"permissions": [
...,
"core:window:default",
"core:window:allow-request-user-attention"
]
}
1. フロントエンドから変更する (TypeScript)
requestUserAttention を使用します。
サンプルコード
import { getCurrentWindow } from '@tauri-apps/api/window';
const appWindow = getCurrentWindow();
// タスクバーでウィンドウを点滅させる (注意を引く)
await appWindow.requestUserAttention(1); // 1 = Critical
// 点滅を止める
await appWindow.requestUserAttention(null);
パラメータ説明
1(Critical): 強い点滅 (Windowsでは継続的に点滅)2(Informational): 軽い点滅 (Windowsでは数回点滅して停止)null: 点滅を停止
2. バックエンドから変更する (Rust)
request_user_attention メソッドを使用します。
use tauri::{Manager, UserAttentionType};
#[tauri::command]
fn flash_window(app_handle: tauri::AppHandle) {
if let Some(window) = app_handle.get_webview_window("main") {
// Critical な点滅を開始
window.request_user_attention(Some(UserAttentionType::Critical)).unwrap();
}
}
#[tauri::command]
fn stop_flash(app_handle: tauri::AppHandle) {
if let Some(window) = app_handle.get_webview_window("main") {
// 点滅を停止
window.request_user_attention(None).unwrap();
}
}