diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 3f071ba..9ba00d8 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -2940,7 +2940,7 @@ dependencies = [ [[package]] name = "openlist-desktop" -version = "0.6.1" +version = "0.7.0" dependencies = [ "anyhow", "base64 0.22.1", diff --git a/src-tauri/src/cmd/rclone_core.rs b/src-tauri/src/cmd/rclone_core.rs index ac10ccd..88a3fab 100644 --- a/src-tauri/src/cmd/rclone_core.rs +++ b/src-tauri/src/cmd/rclone_core.rs @@ -114,7 +114,7 @@ async fn is_rclone_running() -> bool { let mut system = System::new_all(); system.refresh_processes(sysinfo::ProcessesToUpdate::All, true); - for (_pid, process) in system.processes() { + for process in system.processes().values() { let process_name = process.name().to_string_lossy().to_lowercase(); if process_name.contains("rclone") { diff --git a/src-tauri/src/utils/path.rs b/src-tauri/src/utils/path.rs index 3a59547..ef371ed 100644 --- a/src-tauri/src/utils/path.rs +++ b/src-tauri/src/utils/path.rs @@ -17,43 +17,61 @@ fn get_app_dir() -> Result { } fn get_user_data_dir() -> Result { - #[cfg(target_os = "macos")] - { - let home = env::var("HOME").map_err(|_| "Failed to get HOME environment variable")?; - let data_dir = PathBuf::from(home) - .join("Library") - .join("Application Support") - .join("OpenList Desktop"); - fs::create_dir_all(&data_dir) - .map_err(|e| format!("Failed to create data directory: {e}"))?; - Ok(data_dir) - } - - #[cfg(not(target_os = "macos"))] - { - get_app_dir() - } + let data_dir = { + #[cfg(target_os = "macos")] + { + let home = env::var("HOME").map_err(|_| "Failed to get HOME environment variable")?; + PathBuf::from(home) + .join("Library") + .join("Application Support") + .join("OpenList Desktop") + } + + #[cfg(target_os = "linux")] + { + let home = env::var("HOME").map_err(|_| "Failed to get HOME environment variable")?; + PathBuf::from(home) + .join(".local") + .join("share") + .join("OpenList Desktop") + } + + #[cfg(target_os = "windows")] + { + let appdata = + env::var("APPDATA").map_err(|_| "Failed to get APPDATA environment variable")?; + PathBuf::from(appdata).join("OpenList Desktop") + } + }; + + fs::create_dir_all(&data_dir).map_err(|e| format!("Failed to create data directory: {e}"))?; + + data_dir + .canonicalize() + .map_err(|e| format!("Failed to canonicalize data directory: {e}")) } fn get_user_logs_dir() -> Result { - #[cfg(target_os = "macos")] - { - let home = env::var("HOME").map_err(|_| "Failed to get HOME environment variable")?; - let logs_dir = PathBuf::from(home) - .join("Library") - .join("Logs") - .join("OpenList Desktop"); - fs::create_dir_all(&logs_dir) - .map_err(|e| format!("Failed to create logs directory: {e}"))?; - Ok(logs_dir) - } - - #[cfg(not(target_os = "macos"))] - { - let logs = get_app_dir()?.join("logs"); - fs::create_dir_all(&logs).map_err(|e| e.to_string())?; - Ok(logs) - } + let logs_dir = { + #[cfg(target_os = "macos")] + { + let home = env::var("HOME").map_err(|_| "Failed to get HOME environment variable")?; + PathBuf::from(home) + .join("Library") + .join("Logs") + .join("OpenList Desktop") + } + + #[cfg(not(target_os = "macos"))] + { + get_user_data_dir()?.join("logs") + } + }; + + fs::create_dir_all(&logs_dir).map_err(|e| format!("Failed to create logs directory: {e}"))?; + logs_dir + .canonicalize() + .map_err(|e| format!("Failed to canonicalize logs directory: {e}")) } fn get_binary_path(binary: &str, service_name: &str) -> Result { @@ -96,15 +114,7 @@ pub fn get_rclone_config_path() -> Result { } pub fn get_default_openlist_data_dir() -> Result { - #[cfg(target_os = "macos")] - { - Ok(get_user_data_dir()?.join("data")) - } - - #[cfg(not(target_os = "macos"))] - { - Ok(get_app_dir()?.join("data")) - } + Ok(get_user_data_dir()?.join("data")) } pub fn get_service_log_path() -> Result { @@ -123,6 +133,6 @@ pub fn get_service_log_path() -> Result { #[cfg(not(target_os = "macos"))] { - Ok(get_app_dir()?.join("openlist-desktop-service.log")) + Ok(get_user_data_dir()?.join("openlist-desktop-service.log")) } }