From f1a19ed31b37c95a508bcf195afef608001b2464 Mon Sep 17 00:00:00 2001 From: Ilya Fedin Date: Thu, 1 Jun 2023 07:20:11 +0400 Subject: [PATCH] Fix QGuiApplication::desktopFileName usage The Qt documentation says: This is the file name, without the full path or the trailing ".desktop" extension of the desktop entry that represents this application according to the freedesktop desktop entry specification. Qt 6.5.2 also automatically fixes it breaking all the current tdesktop and desktop-app usage expecting the file extension. --- .../platform/linux/integration_linux.cpp | 4 +--- .../platform/linux/main_window_linux.cpp | 7 +++--- .../linux/notifications_manager_linux.cpp | 2 +- .../platform/linux/specific_linux.cpp | 24 ++++++++++--------- 4 files changed, 18 insertions(+), 19 deletions(-) diff --git a/Telegram/SourceFiles/platform/linux/integration_linux.cpp b/Telegram/SourceFiles/platform/linux/integration_linux.cpp index d69e060300bec4..26ed0d9fe17ae3 100644 --- a/Telegram/SourceFiles/platform/linux/integration_linux.cpp +++ b/Telegram/SourceFiles/platform/linux/integration_linux.cpp @@ -209,9 +209,7 @@ void LinuxIntegration::initInhibit() { } void LinuxIntegration::LaunchNativeApplication() { - const auto appId = QGuiApplication::desktopFileName() - .chopped(8) - .toStdString(); + const auto appId = QGuiApplication::desktopFileName().toStdString(); const auto app = Glib::wrap( G_APPLICATION( diff --git a/Telegram/SourceFiles/platform/linux/main_window_linux.cpp b/Telegram/SourceFiles/platform/linux/main_window_linux.cpp index 98c6ff40a2bfbf..c0b76494e79385 100644 --- a/Telegram/SourceFiles/platform/linux/main_window_linux.cpp +++ b/Telegram/SourceFiles/platform/linux/main_window_linux.cpp @@ -118,9 +118,7 @@ void XCBSetDesktopFileName(QWindow *window) { base::Platform::XCB::GetAtom(connection, "_KDE_NET_WM_DESKTOP_FILE"), }; - const auto filename = QGuiApplication::desktopFileName() - .chopped(8) - .toUtf8(); + const auto filename = QGuiApplication::desktopFileName().toUtf8(); for (const auto atom : filenameAtoms) { if (atom.has_value()) { @@ -244,7 +242,8 @@ void MainWindow::updateUnityCounter() { const auto launcherUrl = Glib::ustring( "application://" - + QGuiApplication::desktopFileName().toStdString()); + + QGuiApplication::desktopFileName().toStdString() + + ".desktop"); const auto counterSlice = std::min(Core::App().unreadBadge(), 9999); std::map dbusUnityProperties; diff --git a/Telegram/SourceFiles/platform/linux/notifications_manager_linux.cpp b/Telegram/SourceFiles/platform/linux/notifications_manager_linux.cpp index 456be21ba43f0d..210064ac0d952e 100644 --- a/Telegram/SourceFiles/platform/linux/notifications_manager_linux.cpp +++ b/Telegram/SourceFiles/platform/linux/notifications_manager_linux.cpp @@ -591,7 +591,7 @@ bool NotificationData::init( _hints["category"] = Glib::Variant::create("im.received"); _hints["desktop-entry"] = Glib::Variant::create( - QGuiApplication::desktopFileName().chopped(8).toStdString()); + QGuiApplication::desktopFileName().toStdString()); _notificationClosedSignalId = _dbusConnection->signal_subscribe( signalEmitted, diff --git a/Telegram/SourceFiles/platform/linux/specific_linux.cpp b/Telegram/SourceFiles/platform/linux/specific_linux.cpp index f0f673c7ff5e84..9e9fe63ba491ec 100644 --- a/Telegram/SourceFiles/platform/linux/specific_linux.cpp +++ b/Telegram/SourceFiles/platform/linux/specific_linux.cpp @@ -191,7 +191,9 @@ bool GenerateDesktopFile( if (!QDir(targetPath).exists()) QDir().mkpath(targetPath); const auto sourceFile = kDesktopFile.utf16(); - const auto targetFile = targetPath + QGuiApplication::desktopFileName(); + const auto targetFile = targetPath + + QGuiApplication::desktopFileName() + + u".desktop"_q; const auto sourceText = [&] { QFile source(sourceFile); @@ -332,7 +334,7 @@ bool GenerateServiceFile(bool silent = false) { QStandardPaths::GenericDataLocation) + u"/dbus-1/services/"_q; const auto targetFile = targetPath - + QGuiApplication::desktopFileName().chopped(8) + + QGuiApplication::desktopFileName() + u".service"_q; DEBUG_LOG(("App Info: placing .service file to %1").arg(targetPath)); @@ -344,7 +346,7 @@ bool GenerateServiceFile(bool silent = false) { target->set_string( group, "Name", - QGuiApplication::desktopFileName().chopped(8).toStdString()); + QGuiApplication::desktopFileName().toStdString()); target->set_string( group, @@ -455,7 +457,9 @@ void AutostartToggle(bool enabled, Fn done) { if (!enabled) { return QFile::remove( - autostart + QGuiApplication::desktopFileName()); + autostart + + QGuiApplication::desktopFileName() + + u".desktop"_q); } return GenerateDesktopFile( @@ -557,14 +561,13 @@ void start() { QGuiApplication::setDesktopFileName([&] { if (KSandbox::isFlatpak()) { - return qEnvironmentVariable("FLATPAK_ID") + u".desktop"_q; + return qEnvironmentVariable("FLATPAK_ID"); } if (KSandbox::isSnap()) { return qEnvironmentVariable("SNAP_INSTANCE_NAME") + '_' - + cExeName() - + u".desktop"_q; + + cExeName(); } if (!Core::UpdaterDisabled()) { @@ -579,14 +582,13 @@ void start() { md5Hash.data()); } - return u"org.telegram.desktop._%1.desktop"_q.arg( - md5Hash.constData()); + return u"org.telegram.desktop._%1"_q.arg(md5Hash.constData()); } - return u"org.telegram.desktop.desktop"_q; + return u"org.telegram.desktop"_q; }()); - LOG(("Launcher filename: %1").arg(QGuiApplication::desktopFileName())); + LOG(("App ID: %1").arg(QGuiApplication::desktopFileName())); if (!qEnvironmentVariableIsSet("XDG_ACTIVATION_TOKEN") && qEnvironmentVariableIsSet("DESKTOP_STARTUP_ID")) {