diff --git a/libtaskmanager/startuptasksmodel.cpp b/libtaskmanager/startuptasksmodel.cpp --- a/libtaskmanager/startuptasksmodel.cpp +++ b/libtaskmanager/startuptasksmodel.cpp @@ -164,8 +164,15 @@ // Try to match via desktop filename ... if (!appId.isEmpty() && appId.endsWith(QLatin1String(".desktop"))) { if (appId.startsWith(QLatin1String("/"))) { - launcherUrl = QUrl::fromLocalFile(appId); - return launcherUrl; + // Even if we have an absolute path, try resolving to a service first (Bug 385594) + KService::Ptr service = KService::serviceByDesktopPath(appId); + if (!service) { // No luck, just return it verbatim + launcherUrl = QUrl::fromLocalFile(appId); + return launcherUrl; + } + + // Fall-through to menuId() handling below + services = {service}; } else { if (appId.endsWith(QLatin1String(".desktop"))) { appId = appId.mid(appId.length() - 8);