From ab6901ae6a93c80ee864756f3a4f811dd73308c9 Mon Sep 17 00:00:00 2001 From: robyn-dressler Date: Thu, 10 Oct 2024 09:53:18 -0500 Subject: [PATCH] Using a more standard data directory for linux (#1227) * Using a more standard data directory for linux * Fixing format * Using XDG_DATA_HOME by default --- src/common/path_util.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/common/path_util.cpp b/src/common/path_util.cpp index 27098e2d..7551d3b0 100644 --- a/src/common/path_util.cpp +++ b/src/common/path_util.cpp @@ -95,6 +95,18 @@ static auto UserPaths = [] { user_dir = std::filesystem::path(getenv("HOME")) / "Library" / "Application Support" / "shadPS4"; } +#elif defined(__linux__) + auto user_dir = std::filesystem::current_path() / PORTABLE_DIR; + // Check if the "user" directory exists in the current path: + if (!std::filesystem::exists(user_dir)) { + // If it doesn't exist, use XDG_DATA_HOME if it is set, and provide a standard default + const char* xdg_data_home = getenv("XDG_DATA_HOME"); + if (xdg_data_home != nullptr && strlen(xdg_data_home) > 0) { + user_dir = std::filesystem::path(xdg_data_home) / "shadPS4"; + } else { + user_dir = std::filesystem::path(getenv("HOME")) / ".local" / "share" / "shadPS4"; + } + } #else const auto user_dir = std::filesystem::current_path() / PORTABLE_DIR; #endif