ウィンドウにフォーカスを当てる・外す

Recipe ID: win-012

ウィンドウを前面に呼び出し、キーボード入力などを受け付けられる状態(フォーカス状態)にする方法を紹介します。

通知を受け取った際にユーザーの注意を引く場合や、特定の操作時にウィンドウを前面に出したい場合に有効です。
tauri.conf.json での初期フォーカス設定、および動的にフォーカスを設定・解除する方法について解説します。

前提条件

Permissions (権限) の設定

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

{
  "permissions": [
    ...,
    "core:window:allow-set-focus",
    "core:window:default"
  ]
}

1. 静的な設定 (tauri.conf.json)

起動時にフォーカスを当てるかどうかは focus: true (デフォルト) で制御できます。

{
  "app": {
    "windows": [
      {
        "focus": true
      }
    ]
  }
}

2. フロントエンドから変更する (TypeScript)

サンプルコード

import { getCurrentWindow } from '@tauri-apps/api/window';

const appWindow = getCurrentWindow();

// フォーカスを当てる (他のウィンドウより手前に)
await appWindow.setFocus();

// フォーカス状態を確認
const isFocused = await appWindow.isFocused();
console.log('Focused:', isFocused);

3. バックエンドから変更する (Rust)

use tauri::Manager;

#[tauri::command]
fn focus_window(app_handle: tauri::AppHandle) {
    if let Some(window) = app_handle.get_webview_window("main") {
        window.set_focus().unwrap();
    }
}