OS(Windows/Mac/Linux)の起動時に、アプリを自動的に起動させる方法を解説します。
Tauri v2 では @tauri-apps/plugin-autostart を使用します。
前提条件
プラグインのインストールが必要です。
npm run tauri add autostart
Permissions (権限) の設定
src-tauri/capabilities/default.json に以下の権限を追加します。
{
"permissions": [
"autostart:allow-enable",
"autostart:allow-disable",
"autostart:allow-is-enabled",
...
]
}
1. フロントエンドから作成する (TypeScript)
@tauri-apps/plugin-autostart の enable(), disable(), isEnabled() 関数を使用します。
通常はアプリの設定画面などでユーザーがトグルスイッチを操作したタイミングで呼び出します。
import { enable, disable, isEnabled } from '@tauri-apps/plugin-autostart';
// 自動起動を有効にする
async function enableAutoStart() {
try {
await enable();
console.log('自動起動を有効にしました');
} catch (e) {
console.error('有効化に失敗:', e);
}
}
// 自動起動を無効にする
async function disableAutoStart() {
try {
await disable();
console.log('自動起動を無効にしました');
} catch (e) {
console.error('無効化に失敗:', e);
}
}
// 現在の状態を確認する
async function checkAutoStartStatus() {
const active = await isEnabled();
console.log(`現在の自動起動設定: ${active ? '有効' : '無効'}`);
}
// 使用例: HTML のボタンなどに割り当て
/*
<button id="enable-btn">Enable</button>
<button id="disable-btn">Disable</button>
*/
document.getElementById('enable-btn')?.addEventListener('click', enableAutoStart);
document.getElementById('disable-btn')?.addEventListener('click', disableAutoStart);
// 初期チェック
checkAutoStartStatus();
2. バックエンドから作成する (Rust)
Rust 側で自動起動の制御を行うには、ManagerExt トレイトを使用します。
lib.rs での初期化時に MacosLauncher の設定が必要です。
Rust 実装
src-tauri/Cargo.toml に tauri-plugin-autostart が追加されていることを確認してください。
use tauri::{command, AppHandle};
use tauri_plugin_autostart::MacosLauncher;
use tauri_plugin_autostart::ManagerExt;
#[command]
fn toggle_autostart(app: AppHandle, enable: bool) -> Result<(), String> {
let autostart_manager = app.autostart();
if enable {
autostart_manager.enable().map_err(|e| e.to_string())?;
} else {
autostart_manager.disable().map_err(|e| e.to_string())?;
}
Ok(())
}
#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
tauri::Builder::default()
.plugin(tauri_plugin_autostart::init(MacosLauncher::LaunchAgent, Some(vec!["--flag"])))
.invoke_handler(tauri::generate_handler![toggle_autostart])
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
フロントエンドからの呼び出し
import { invoke } from '@tauri-apps/api/core';
// 有効化
invoke('toggle_autostart', { enable: true });
// 無効化
invoke('toggle_autostart', { enable: false });