diff --git a/engine/settings/src/directories.rs b/engine/settings/src/directories.rs
index 4a32128..ca7831a 100644
--- a/engine/settings/src/directories.rs
+++ b/engine/settings/src/directories.rs
@@ -11,16 +11,22 @@ impl Directories{
 	pub fn user_settings(&self)->UserSettings{
 		crate::settings::read_user_settings(&self.settings)
 	}
-}
-impl Default for Directories{
-	fn default()->Self{
-		let dirs=directories::ProjectDirs::from("net.strafes","StrafesNET","Strafe Client").unwrap();
-		Self{
+	pub fn installed()->Option<Self>{
+		let dirs=directories::ProjectDirs::from("net.strafes","StrafesNET","Strafe Client")?;
+		Some(Self{
 			settings:dirs.config_dir().join("settings.conf"),
 			maps:dirs.cache_dir().join("maps"),
 			// separate directory for remote downloaded replays (cache)
 			// bots:dirs.cache_dir().join("bots"),
 			replays:dirs.data_local_dir().join("replays"),
-		}
+		})
+	}
+	pub fn portable()->Result<Self,std::io::Error>{
+		let current_dir=std::env::current_dir()?;
+		Ok(Self{
+			settings:current_dir.join("settings.conf"),
+			maps:current_dir.join("maps"),
+			replays:current_dir.join("replays"),
+		})
 	}
 }
diff --git a/strafe-client/src/window.rs b/strafe-client/src/window.rs
index df62246..4bba3ed 100644
--- a/strafe-client/src/window.rs
+++ b/strafe-client/src/window.rs
@@ -211,7 +211,7 @@ pub fn worker<'a>(
 	setup_context:crate::setup::SetupContext<'a>,
 )->crate::compat_worker::QNWorker<'a,TimedInstruction<Instruction,SessionTimeInner>>{
 	// WindowContextSetup::new
-	let user_settings=directories::Directories::default().user_settings();
+	let user_settings=directories::Directories::portable().unwrap().user_settings();
 
 	let mut graphics=strafesnet_graphics::graphics::GraphicsState::new(&setup_context.device,&setup_context.queue,&setup_context.config);
 	graphics.load_user_settings(&user_settings);