Fixed the autostart for AppImages. See #2504.
authorHannah Rittich <hrittich@users.noreply.github.com>
Fri, 18 Dec 2020 12:13:55 +0000 (13:13 +0100)
committerHannah Rittich <hrittich@users.noreply.github.com>
Mon, 21 Dec 2020 10:56:09 +0000 (11:56 +0100)
Signed-off-by: Hannah Rittich <hrittich@users.noreply.github.com>
src/common/utility_unix.cpp

index a5f257d0771ade7a0bf5cc50e4225569b2380829..010408395f193e920ae07de2abc62b686f3b4946 100644 (file)
@@ -18,6 +18,7 @@
  */
 
 #include <QStandardPaths>
+#include <QtGlobal>
 
 namespace OCC {
 
@@ -71,12 +72,18 @@ void setLaunchOnStartup_private(const QString &appName, const QString &guiName,
             qCWarning(lcUtility) << "Could not write auto start entry" << desktopFileLocation;
             return;
         }
+        // When running inside an AppImage, we need to set the path to the
+        // AppImage instead of the path to the executable
+        const QString appImagePath = qEnvironmentVariable("APPIMAGE");
+        const bool runningInsideAppImage = !appImagePath.isNull() && QFile::exists(appImagePath);
+        const QString executablePath = runningInsideAppImage ? appImagePath : QCoreApplication::applicationFilePath();
+
         QTextStream ts(&iniFile);
         ts.setCodec("UTF-8");
         ts << QLatin1String("[Desktop Entry]") << endl
            << QLatin1String("Name=") << guiName << endl
            << QLatin1String("GenericName=") << QLatin1String("File Synchronizer") << endl
-           << QLatin1String("Exec=") << QCoreApplication::applicationFilePath() << " --background" << endl
+           << QLatin1String("Exec=\"") << executablePath << "\" --background" << endl
            << QLatin1String("Terminal=") << "false" << endl
            << QLatin1String("Icon=") << APPLICATION_ICON_NAME << endl
            << QLatin1String("Categories=") << QLatin1String("Network") << endl