diff --git a/ui/src/config.rs b/ui/src/config.rs index 896c1d3..2222007 100644 --- a/ui/src/config.rs +++ b/ui/src/config.rs @@ -31,6 +31,11 @@ static CONFIG_WRITER: OnceLock> = OnceLock::new(); pub fn load_config() -> Result<(), anyhow::Error> { // load the configuration file let path = find_config_file(); + if !std::path::Path::new(&path).exists() { + let default_config = TomlConfig::default(); + save_config(&default_config) + .context("Failed to create default configuration")?; + } let data = std::fs::read(path) .context("Failed to read conf.toml")?; let mut config: TomlConfig = toml::from_slice(&data) diff --git a/ui/src/config/structs.rs b/ui/src/config/structs.rs index d191dc6..6c973f4 100644 --- a/ui/src/config/structs.rs +++ b/ui/src/config/structs.rs @@ -60,7 +60,7 @@ impl Into for PresentMode { } /// Global configuration for the application -#[derive(Debug, Clone, Default, Deserialize, Serialize)] +#[derive(Debug, Default, Clone, Deserialize, Serialize)] pub struct TomlGlobal { pub dll: Option } @@ -83,7 +83,7 @@ pub struct TomlGame { } /// Main configuration structure -#[derive(Debug, Clone, Deserialize, Serialize)] +#[derive(Debug, Default, Clone, Deserialize, Serialize)] pub struct TomlConfig { pub version: i64, #[serde(default)]