feat(settings): add auto-launch on system startup feature
Implement auto-launch functionality with proper state synchronization and error handling across Windows, macOS, and Linux platforms. Key changes: - Add auto_launch module using auto-launch crate 0.5 - Define typed errors (AutoLaunchPathError, AutoLaunchEnableError, etc.) - Sync system state with settings.json on app startup - Only call system API when auto-launch state actually changes - Add UI toggle in Window Settings panel - Add i18n support for auto-launch settings (en/zh) Implementation details: - Settings file (settings.json) is the single source of truth - On startup, system state is synced to match settings.json - Error handling uses Rust type system with proper error propagation - Frontend optimized to avoid unnecessary system API calls Platform support: - Windows: HKEY_CURRENT_USER registry modification - macOS: AppleScript-based launch item (configurable to Launch Agent) - Linux: XDG autostart desktop file
This commit is contained in:
@@ -37,3 +37,20 @@ pub async fn set_app_config_dir_override(
|
||||
crate::app_store::set_app_config_dir_to_store(&app, path.as_deref())?;
|
||||
Ok(true)
|
||||
}
|
||||
|
||||
/// 设置开机自启
|
||||
#[tauri::command]
|
||||
pub async fn set_auto_launch(enabled: bool) -> Result<bool, String> {
|
||||
if enabled {
|
||||
crate::auto_launch::enable_auto_launch().map_err(|e| e.to_string())?;
|
||||
} else {
|
||||
crate::auto_launch::disable_auto_launch().map_err(|e| e.to_string())?;
|
||||
}
|
||||
Ok(true)
|
||||
}
|
||||
|
||||
/// 获取开机自启状态
|
||||
#[tauri::command]
|
||||
pub async fn get_auto_launch_status() -> Result<bool, String> {
|
||||
crate::auto_launch::is_auto_launch_enabled().map_err(|e| e.to_string())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user