ウィンドウを表示・非表示にする

Recipe ID: win-011

プログラムからウィンドウの表示・非表示を切り替える方法を紹介します。

バックグラウンドで処理を実行した後にウィンドウを表示したり、一時的にウィンドウを隠してシステムトレイのみで動作させたい場合などに使用します。
tauri.conf.json での初期設定、およびフロントエンド・バックエンドからの動的な制御について解説します。

前提条件

Permissions (権限) の設定

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

{
  "permissions": [
    ...,
    "core:window:allow-hide",
    "core:window:allow-show",
    "core:window:default"
  ]
}

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

アプリ起動時の表示状態を設定できます。visible: false にすると起動時は非表示になります。

{
  "app": {
    "windows": [
      {
        "visible": false
      }
    ]
  }
}

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

サンプルコード

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

const appWindow = getCurrentWindow();

// ウィンドウを非表示にする (タスクバーからも消える)
await appWindow.hide();

// 再度表示する
await appWindow.show();

// 表示状態を確認
const isVisible = await appWindow.isVisible();
console.log('Visible:', isVisible);

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

use tauri::Manager;

#[tauri::command]
fn toggle_visibility(app_handle: tauri::AppHandle) {
    if let Some(window) = app_handle.get_webview_window("main") {
        if window.is_visible().unwrap() {
            window.hide().unwrap();
        } else {
            window.show().unwrap();
        }
    }
}