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
This commit is contained in:
robyn-dressler 2024-10-10 09:53:18 -05:00 committed by GitHub
parent 87f8f3a59e
commit ab6901ae6a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -95,6 +95,18 @@ static auto UserPaths = [] {
user_dir = user_dir =
std::filesystem::path(getenv("HOME")) / "Library" / "Application Support" / "shadPS4"; 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 #else
const auto user_dir = std::filesystem::current_path() / PORTABLE_DIR; const auto user_dir = std::filesystem::current_path() / PORTABLE_DIR;
#endif #endif