|
|
|
@ -2847,6 +2847,13 @@ bool GMainWindow::CreateShortcutLink(const std::filesystem::path& shortcut_path,
|
|
|
|
|
const std::string& arguments, const std::string& categories,
|
|
|
|
|
const std::string& keywords, const std::string& name) try {
|
|
|
|
|
|
|
|
|
|
#if defined(__linux__) || defined(__FreeBSD__) || defined(_WIN32) // Linux, FreeBSD and Windows
|
|
|
|
|
// Plus 'name' is required
|
|
|
|
|
if (name.empty()) {
|
|
|
|
|
LOG_ERROR(Frontend, "Name is empty");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Copy characters if they are not illegal in Windows filenames
|
|
|
|
|
std::string filename = "";
|
|
|
|
|
const std::string illegal_chars = "<>:\"/\\|?*";
|
|
|
|
@ -2865,17 +2872,12 @@ bool GMainWindow::CreateShortcutLink(const std::filesystem::path& shortcut_path,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
std::filesystem::path shortcut_path_full = shortcut_path / filename;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#if defined(__linux__) || defined(__FreeBSD__) // Linux and FreeBSD
|
|
|
|
|
// Reference for the desktop file template:
|
|
|
|
|
// https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-1.0.html
|
|
|
|
|
|
|
|
|
|
// Plus 'Type' is required
|
|
|
|
|
if (name.empty()) {
|
|
|
|
|
LOG_ERROR(Frontend, "Name is empty");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Append .desktop extension
|
|
|
|
|
shortcut_path_full += ".desktop";
|
|
|
|
|
|
|
|
|
|