2
0
mirror of https://github.com/telegramdesktop/tdesktop synced 2025-09-01 23:15:59 +00:00

Fix single instance socket path for compatibility with flatpak

This commit is contained in:
Ilya Fedin
2020-01-22 07:12:07 +04:00
committed by John Preston
parent 3a748e20c2
commit ffe037f9f1
7 changed files with 45 additions and 19 deletions

View File

@@ -95,6 +95,13 @@ void SetApplicationIcon(const QIcon &icon) {
QApplication::setWindowIcon(icon);
}
bool InSandbox() {
static const auto Sandbox = QFileInfo::exists(
QStandardPaths::writableLocation(QStandardPaths::RuntimeLocation)
+ qsl("/flatpak-info"));
return Sandbox;
}
QString CurrentExecutablePath(int argc, char *argv[]) {
constexpr auto kMaxPath = 1024;
char result[kMaxPath] = { 0 };
@@ -112,6 +119,23 @@ QString CurrentExecutablePath(int argc, char *argv[]) {
return argc ? QFile::decodeName(argv[0]) : QString();
}
QString SingleInstanceLocalServerName(const QString &hash) {
const auto runtimeDir = QStandardPaths::writableLocation(
QStandardPaths::RuntimeLocation);
if (InSandbox()) {
return runtimeDir
+ qsl("/app/")
+ QString::fromUtf8(qgetenv("FLATPAK_ID"))
+ '/' + hash;
} else if (QFileInfo::exists(runtimeDir)) {
return runtimeDir + '/' + hash + '-' + cGUIDStr();
} else { // non-systemd distros
return QStandardPaths::writableLocation(QStandardPaths::TempLocation)
+ '/' + hash + '-' + cGUIDStr();
}
}
} // namespace Platform
namespace {