aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>2022-11-12 20:36:49 +0200
committerADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>2022-11-12 20:36:49 +0200
commitf7d7d76ee879c3bdd539e5c8c956cbd2c7328bf0 (patch)
treefc29fceba46d77bf93ba407ef9840648df442e8f
parent7e5076b06891f28c1b2e27befd33005d400c49c9 (diff)
downloadPrismLauncher-f7d7d76ee879c3bdd539e5c8c956cbd2c7328bf0.tar.gz
PrismLauncher-f7d7d76ee879c3bdd539e5c8c956cbd2c7328bf0.tar.bz2
PrismLauncher-f7d7d76ee879c3bdd539e5c8c956cbd2c7328bf0.zip
Mac: now supported! [UNTESTED]
Signed-off-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>
-rw-r--r--launcher/FileSystem.cpp26
-rw-r--r--launcher/ui/MainWindow.cpp15
m---------libraries/tomlplusplus0
3 files changed, 39 insertions, 2 deletions
diff --git a/launcher/FileSystem.cpp b/launcher/FileSystem.cpp
index ddd1a6e5..221395be 100644
--- a/launcher/FileSystem.cpp
+++ b/launcher/FileSystem.cpp
@@ -342,7 +342,31 @@ QString getDesktopDir()
// Cross-platform Shortcut creation
bool createShortcut(QString destination, QString target, QStringList args, QString name, QString icon)
{
-#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD) || defined(Q_OS_OPENBSD)
+#if defined(Q_OS_MACOS)
+ destination += ".sh";
+
+ QFile f(destination);
+ f.open(QIODevice::WriteOnly | QIODevice::Text);
+ QTextStream stream(&f);
+
+ QString argstring;
+ if (!args.empty())
+ argstring = " \"" + args.join("\" \"") + "\"";
+
+ stream << "#!/bin/bash"
+ << "\n";
+ stream << target
+ << " "
+ << argstring
+ << "\n";
+
+ stream.flush();
+ f.close();
+
+ f.setPermissions(f.permissions() | QFileDevice::ExeOwner | QFileDevice::ExeGroup | QFileDevice::ExeOther);
+
+ return true;
+#elif defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD) || defined(Q_OS_OPENBSD)
destination += ".desktop";
QFile f(destination);
diff --git a/launcher/ui/MainWindow.cpp b/launcher/ui/MainWindow.cpp
index 0a846b59..02f60233 100644
--- a/launcher/ui/MainWindow.cpp
+++ b/launcher/ui/MainWindow.cpp
@@ -2100,7 +2100,20 @@ void MainWindow::on_actionCreateInstanceShortcut_triggered()
}
#ifdef Q_OS_MACOS
- QMessageBox::critical(this, tr("Create instance shortcut"), tr("Not supported on macOS yet!"));
+ // handle macOS bundle weirdness
+ QFileInfo appFileInfo(QApplication::applicationFilePath()));
+ QString appName = appFileInfo.baseName();
+ QString exeName = FS::PathCombine(appFileInfo.filePath(), "Contents/MacOS/" + appName);
+
+ if (FS::createShortcut(FS::PathCombine(desktopPath, m_selectedInstance->name()),
+ exeName, { "--launch", m_selectedInstance->id() }, m_selectedInstance->name(), "")) {
+ QMessageBox::information(this, tr("Create instance shortcut"), tr("Created a shortcut to this instance on your desktop!"));
+ }
+ else
+ {
+ QMessageBox::critical(this, tr("Create instance shortcut"), tr("Failed to create instance shortcut!"));
+ }
+
return;
#endif
auto icon = APPLICATION->icons()->icon(m_selectedInstance->iconKey());
diff --git a/libraries/tomlplusplus b/libraries/tomlplusplus
-Subproject cc741c9f5f2a62856a2a2e9e275f61eb0591c09
+Subproject 4b166b69f28e70a416a1a04a98f365d2aeb90de