diff --git a/panels/dock/taskmanager/desktopfileamparser.cpp b/panels/dock/taskmanager/desktopfileamparser.cpp index 892166835..317f9c8c0 100644 --- a/panels/dock/taskmanager/desktopfileamparser.cpp +++ b/panels/dock/taskmanager/desktopfileamparser.cpp @@ -154,12 +154,12 @@ QString DesktopFileAMParser::type() void DesktopFileAMParser::launch() { - m_applicationInterface->Launch(QString(), QStringList(), QVariantMap()); + return launchByAMTool(); } void DesktopFileAMParser::launchWithAction(const QString& action) { - m_applicationInterface->Launch(action, QStringList(), QVariantMap()); + return launchByAMTool(action); } void DesktopFileAMParser::requestQuit() @@ -180,6 +180,22 @@ void DesktopFileAMParser::connectToAmDBusSignal(const QString& signalName, const ); } +void DesktopFileAMParser::launchByAMTool(const QString &action) +{ + QProcess process; + const auto path = m_applicationInterface->path(); + process.setProcessChannelMode(QProcess::MergedChannels); + process.start("dde-am", {"--by-user", path}); + if (!process.waitForFinished()) { + qWarning() << "Failed to launch the path:" << path << process.errorString(); + return; + } else if (process.exitCode() != 0) { + qWarning() << "Failed to launch the path:" << path << process.readAll(); + return; + } + qDebug() << "Launch the application path:" << path; +} + void DesktopFileAMParser::updateActions() { m_actions.clear(); diff --git a/panels/dock/taskmanager/desktopfileamparser.h b/panels/dock/taskmanager/desktopfileamparser.h index b7ce529ad..d91ea370c 100644 --- a/panels/dock/taskmanager/desktopfileamparser.h +++ b/panels/dock/taskmanager/desktopfileamparser.h @@ -46,6 +46,7 @@ class DesktopFileAMParser : public DesktopfileAbstractParser private: QString id2dbusPath(const QString& id); void connectToAmDBusSignal(const QString& propertyName, const char* slot); + void launchByAMTool(const QString &action = QString()); private Q_SLOTS: void updateActions();