diff --git a/apps/app/src/main.rs b/apps/app/src/main.rs index 6d429ffb..f261561f 100644 --- a/apps/app/src/main.rs +++ b/apps/app/src/main.rs @@ -188,7 +188,20 @@ fn main() { .plugin(tauri_plugin_shell::init()) .plugin( tauri_plugin_window_state::Builder::default() - .with_filename("app-window-state.json") + .with_filename( + if std::env::current_dir() + .ok() + .map(|dir| dir.join("portable.txt").exists()) + .unwrap_or(false) + { + std::env::current_dir() + .ok() + .map(|dir| dir.join("UserData/app-window-state.json").to_string_lossy().into_owned()) + .unwrap() + } else { + "app-window-state.json".to_string() + }, + ) .build(), ) .setup(|app| { diff --git a/packages/app-lib/src/state/dirs.rs b/packages/app-lib/src/state/dirs.rs index 96148a91..038313d6 100644 --- a/packages/app-lib/src/state/dirs.rs +++ b/packages/app-lib/src/state/dirs.rs @@ -23,8 +23,13 @@ impl DirectoryInfo { // Get the settings directory // init() is not needed for this function pub fn get_initial_settings_dir() -> Option { - Self::env_path("THESEUS_CONFIG_DIR") - .or_else(|| Some(dirs::data_dir()?.join("AstralRinthApp"))) + Self::env_path("THESEUS_CONFIG_DIR").or_else(|| { + if std::env::current_dir().ok()?.join("portable.txt").exists() { + Some(std::path::Path::new("UserData").to_path_buf()) + } else { + Some(dirs::data_dir()?.join("AstralRinthApp")) + } + }) } /// Get all paths needed for Theseus to operate properly