diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp index 0c1066291..5238f9dd1 100644 --- a/src/config/ConfigManager.cpp +++ b/src/config/ConfigManager.cpp @@ -36,12 +36,6 @@ bool Config::initConfigManager() { Log::logger->log(Log::CRIT, "Couldn't load config: {}", ec.message()); return false; } - - // generate default - if (const auto v = g_mgr->generateDefaultConfig(filePath); !v) { - Log::logger->log(Log::CRIT, "Couldn't generate default config: {}", v.error()); - return false; - } } return true; diff --git a/src/config/legacy/ConfigManager.cpp b/src/config/legacy/ConfigManager.cpp index a1ab4e1cf..ffc5cea54 100644 --- a/src/config/legacy/ConfigManager.cpp +++ b/src/config/legacy/ConfigManager.cpp @@ -987,8 +987,19 @@ void CConfigManager::reloadRuleConfigs() { std::optional CConfigManager::verifyConfigExists() { auto mainConfigPath = Supplementary::Jeremy::getMainConfigPath(); - if (!mainConfigPath || !std::filesystem::exists(*mainConfigPath)) - return "broken config dir?"; + if (!mainConfigPath) + return "Broken config directory"; + + std::error_code ec; + const bool VALID_CFG = std::filesystem::exists(*mainConfigPath, ec) && !ec; + + if (!VALID_CFG && !g_pCompositor->m_explicitConfigPath.empty()) + return "Invalid config file provided as explicit"; + + if (!VALID_CFG) { + if (const auto res = generateDefaultConfig(*mainConfigPath, g_pCompositor->m_safeMode); !res) + return res.error(); + } return {}; }