|
|
@ -348,76 +348,6 @@ fs::path GetBundleDirectory() { |
|
|
|
|
|
|
|
|
#endif
|
|
|
#endif
|
|
|
|
|
|
|
|
|
fs::path GetDesktopPath() { |
|
|
|
|
|
#if defined(_WIN32)
|
|
|
|
|
|
PWSTR DesktopPath = nullptr; |
|
|
|
|
|
|
|
|
|
|
|
if (SUCCEEDED(SHGetKnownFolderPath(FOLDERID_Desktop, 0, NULL, &DesktopPath))) { |
|
|
|
|
|
std::wstring wideDesktopPath(DesktopPath); |
|
|
|
|
|
CoTaskMemFree(DesktopPath); |
|
|
|
|
|
|
|
|
|
|
|
// UTF-16 filesystem lib to UTF-8 is broken, so we need to convert to UTF-8 with the with
|
|
|
|
|
|
// the Windows library (Filesystem converts the strings literally).
|
|
|
|
|
|
return fs::path{Common::UTF16ToUTF8(wideDesktopPath)}; |
|
|
|
|
|
} else { |
|
|
|
|
|
LOG_ERROR(Common_Filesystem, |
|
|
|
|
|
"[GetDesktopPath] Failed to get the path to the desktop directory"); |
|
|
|
|
|
} |
|
|
|
|
|
return fs::path{}; |
|
|
|
|
|
#else
|
|
|
|
|
|
fs::path shortcut_path{}; |
|
|
|
|
|
|
|
|
|
|
|
// Array of possible desktop
|
|
|
|
|
|
std::vector<std::string> desktop_paths = { |
|
|
|
|
|
"Desktop", "Escritorio", "Bureau", "Skrivebord", "Plocha", |
|
|
|
|
|
"Skrivbord", "Desktop", "Рабочий стол", "Pulpit", "Área de Trabalho", |
|
|
|
|
|
"Робочий стіл", "Bureaublad", "デスクトップ", "桌面", "Pöytä", |
|
|
|
|
|
"바탕 화면", "바탕 화면", "سطح المكتب", "دسکتاپ", "שולחן עבודה"}; |
|
|
|
|
|
|
|
|
|
|
|
for (auto& path : desktop_paths) { |
|
|
|
|
|
if (fs::exists(GetHomeDirectory() / path)) { |
|
|
|
|
|
return path; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
LOG_ERROR(Common_Filesystem, |
|
|
|
|
|
"[GetDesktopPath] Failed to get the path to the desktop directory"); |
|
|
|
|
|
|
|
|
|
|
|
return shortcut_path; |
|
|
|
|
|
#endif
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
fs::path GetAppsShortcutsPath() { |
|
|
|
|
|
#if defined(_WIN32)
|
|
|
|
|
|
PWSTR AppShortcutsPath = nullptr; |
|
|
|
|
|
|
|
|
|
|
|
if (SUCCEEDED(SHGetKnownFolderPath(FOLDERID_CommonPrograms, 0, NULL, &AppShortcutsPath))) { |
|
|
|
|
|
std::wstring wideAppShortcutsPath(AppShortcutsPath); |
|
|
|
|
|
CoTaskMemFree(AppShortcutsPath); |
|
|
|
|
|
|
|
|
|
|
|
// UTF-16 filesystem lib to UTF-8 is broken, so we need to convert to UTF-8 with the with
|
|
|
|
|
|
// the Windows library (Filesystem converts the strings literally).
|
|
|
|
|
|
return fs::path{Common::UTF16ToUTF8(wideAppShortcutsPath)}; |
|
|
|
|
|
} else { |
|
|
|
|
|
LOG_ERROR(Common_Filesystem, |
|
|
|
|
|
"[GetAppsShortcutsPath] Failed to get the path to the App Shortcuts directory"); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return fs::path{}; |
|
|
|
|
|
#else
|
|
|
|
|
|
fs::path shortcut_path = GetHomeDirectory() / ".local/share/applications"; |
|
|
|
|
|
if (!fs::exists(shortcut_path)) { |
|
|
|
|
|
shortcut_path = std::filesystem::path("/usr/share/applications"); |
|
|
|
|
|
if (!fs::exists(shortcut_path)) { |
|
|
|
|
|
LOG_ERROR(Common_Filesystem, |
|
|
|
|
|
"[GetAppsShortcutsPath] Failed to get the path to the App Shortcuts " |
|
|
|
|
|
"directory"); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
return fs::path{}; |
|
|
|
|
|
#endif
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// vvvvvvvvvv Deprecated vvvvvvvvvv //
|
|
|
// vvvvvvvvvv Deprecated vvvvvvvvvv //
|
|
|
|
|
|
|
|
|
std::string_view RemoveTrailingSlash(std::string_view path) { |
|
|
std::string_view RemoveTrailingSlash(std::string_view path) { |
|
|
|