Window State プラグインで位置を記憶する

Recipe ID: plugin-005

アプリを再起動したときに、前回のウィンドウサイズや表示位置、最大化状態を復元するためのプラグイン tauri-plugin-window-state です。

前提条件

Permissions (権限) の設定

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

{
    "permissions": [
        ...,
        "window-state:default"
    ]
}

1. セットアップ

このプラグインは主に Rust 側だけで完結しますが、状態保存ファイルをディスクに書き込むために tauri-plugin-fs 等は不要です(内部で処理されます)。

npm run tauri add window-state

src-tauri/src/lib.rs:

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

3. 動作確認

これだけで、アプリ終了時のウィンドウ状態が自動的に保存され、次回起動時に復元されます。
- ウィンドウ位置 (x, y)
- ウィンドウサイズ (width, height)
- 最大化状態 (maximized)
- フルスクリーン状態 (fullscreen)

4. 高度な設定

特定のウィンドウのみ対象外にしたり、保存する状態ファイル名を変更したりできます。

use tauri_plugin_window_state::Builder;
// use tauri_plugin_window_state::StateFlags; // 保存項目を細かく制御する場合に使用

#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
    tauri::Builder::default()
        .plugin(
            Builder::default()
                .with_filename("window-state.json") // 保存ファイル名
                .with_denylist(&["splashscreen"]) // "splashscreen" というラベルのウィンドウは無視
                // .with_state_flags(StateFlags::SIZE | StateFlags::POSITION) // 例: サイズと位置のみ保存
                .build(),
        )
        // ...
        .run(tauri::generate_context!())
        .expect("error while running tauri application");
}

注意点

  • マルチモニター環境でモニター構成が変わった場合(例:外部ディスプレイを外した)、ウィンドウが画面外に配置されてしまう問題を防ぐため、プラグインは画面内への自動調整機能を持っています。
  • 開発中、ウィンドウが小さすぎる状態で保存されてしまった場合は、保存ファイル(AppData 内)を削除してリセットしてください。