diff --git a/appmanagermodel.cpp b/appmanagermodel.cpp index 5f73f98bc6cb404b69d569d57590ad8be68e88a8..61430e7e61d81b12f2257a29561ea783ea370170 100644 --- a/appmanagermodel.cpp +++ b/appmanagermodel.cpp @@ -201,6 +201,19 @@ AppInfo AppManagerModel::getAppInfo(const QString &pkgName) return m_appManagerJob->getAppInfosMap().value(pkgName); } +void AppManagerModel::startDetachedDesktopExec(const QString &exec) +{ + QString execAdjusted = exec; + QStringList execList = exec.split(" "); + if (execList.last().startsWith("%")) { + execAdjusted = execAdjusted.remove(execList.last()); + } + + QProcess proc; + proc.startDetached("/usr/bin/bash", {"-c", execAdjusted}); + proc.close(); +} + void AppManagerModel::onAppInstalled(const AppInfo &appInfo) { popupNormalSysNotify("ccc-app-manager", QString("软件包 %1 已安装").arg(appInfo.pkgName)); diff --git a/appmanagermodel.h b/appmanagermodel.h index c58e71bcfdf3122851a45163dc4c337681db661b..dec4ce3951f20337872fb828a4b739fe3ee3eda2 100644 --- a/appmanagermodel.h +++ b/appmanagermodel.h @@ -35,6 +35,8 @@ public: bool isPkgInstalled(const QString &pkgName); // 获取应用信息 AM::AppInfo getAppInfo(const QString &pkgName); + // 运行desktop执行命令 + void startDetachedDesktopExec(const QString &exec); Q_SIGNALS: void runningStatusChanged(RunningStatus status); diff --git a/appmanagerwidget.cpp b/appmanagerwidget.cpp index dc3c896fdfaafa435de2067fc6a0dbeeff9f8787..97f51ce1de98c9eff4b123ae30fbcfc74ec4fd69 100644 --- a/appmanagerwidget.cpp +++ b/appmanagerwidget.cpp @@ -293,9 +293,7 @@ AppManagerWidget::AppManagerWidget(AppManagerModel *model, QWidget *parent) }); connect(openBtn, &QPushButton::clicked, this, [this](bool) { - QProcess proc; - proc.startDetached("dex", {m_showingAppInfo.desktopInfo.desktopPath}); - proc.close(); + m_model->startDetachedDesktopExec(m_showingAppInfo.desktopInfo.exec); }); connect(m_infoSwitchBtn, &DButtonBox::buttonClicked, this, [this](QAbstractButton *btn) { diff --git a/build-package/build.sh b/build-package/build.sh index 602f5c1075241e7eb4fe19f1820d42069f999d5d..32d206a9f31ffc09aa1ee635ccba23fbccc4c9b3 100755 --- a/build-package/build.sh +++ b/build-package/build.sh @@ -102,7 +102,7 @@ Version: $VERSION Architecture: $ARCH Maintainer: keke <243768648@qq.com> Installed-Size: $SIZE -Depends: libc6 (>= 2.28), libgcc1 (>= 1:3.4) | libgcc-s1(>=12), libgl1, libqt5core5a (>= 5.11.0~rc1), libqt5gui5 (>= 5.8.0), libqt5network5 (>= 5.0.2), libqt5widgets5 (>= 5.0.2), libdtkcore5 (>= 5.4), libdtkgui5 (>= 5.4), libdtkwidget5 (>= 5.4), dex +Depends: libc6 (>= 2.28), libgcc1 (>= 1:3.4) | libgcc-s1(>=12), libgl1, libqt5core5a (>= 5.11.0~rc1), libqt5gui5 (>= 5.8.0), libqt5network5 (>= 5.0.2), libqt5widgets5 (>= 5.0.2), libdtkcore5 (>= 5.4), libdtkgui5 (>= 5.4), libdtkwidget5 (>= 5.4) Description: manage your applications. 应用管理器,可查看应用包信息,可卸载和打开应用,可在线或离线提取安装包。支持deepin、uos系统。 Homepage: https://gitee.com/ct243768648/ccc-app-manager diff --git a/debian/control b/debian/control index 6242d8bae25c69bd80b6546e39cc4e118d3e5644..1fc8266b172bbf09613c6a2c4443927901229f82 100644 --- a/debian/control +++ b/debian/control @@ -5,7 +5,7 @@ Installed-Size: 3985 Maintainer: keke <243768648@qq.com> Architecture: amd64 Version: 0.0.4 -Depends: libc6 (>= 2.28), libgcc1 (>= 1:3.4), libgl1, libqt5core5a (>= 5.11.0~rc1), libqt5gui5 (>= 5.8.0), libqt5network5 (>= 5.0.2), libqt5widgets5 (>= 5.0.2), libdtkcore5 (>= 5.4), libdtkgui5 (>= 5.4), libdtkwidget5 (>= 5.4), dex +Depends: libc6 (>= 2.28), libgcc1 (>= 1:3.4), libgl1, libqt5core5a (>= 5.11.0~rc1), libqt5gui5 (>= 5.8.0), libqt5network5 (>= 5.0.2), libqt5widgets5 (>= 5.0.2), libdtkcore5 (>= 5.4), libdtkgui5 (>= 5.4), libdtkwidget5 (>= 5.4) Build-Depends: debhelper (>= 11), libdtkwidget-dev, libdtkgui-dev, diff --git a/mainwindow.cpp b/mainwindow.cpp index 9b36c0bc00f10cbe74f0b474cd541467d69ace38..54dbca75837891855be1a6cc7b1479f6e9a8eddb 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -109,7 +109,7 @@ MainWindow::MainWindow(QWidget *parent) connect(openOhMyDDEAction, &QAction::triggered, this, [this](bool checked) { Q_UNUSED(checked); if (m_appManagerModel->isPkgInstalled(OH_MY_DDE_PKG_NAME)) { - QProcess::startDetached("dex", {m_appManagerModel->getAppInfo(OH_MY_DDE_PKG_NAME).desktopInfo.desktopPath}); + m_appManagerModel->startDetachedDesktopExec(m_appManagerModel->getAppInfo(OH_MY_DDE_PKG_NAME).desktopInfo.exec); } else { // 安装 DDialog dlg; @@ -126,7 +126,7 @@ MainWindow::MainWindow(QWidget *parent) connect(openProInfoWindowAction, &QAction::triggered, this, [this](bool checked) { Q_UNUSED(checked); if (m_appManagerModel->isPkgInstalled(PROC_INFO_PLUGIN_PKG_NAME)) { - QProcess::startDetached("dex", {m_appManagerModel->getAppInfo(PROC_INFO_PLUGIN_PKG_NAME).desktopInfo.desktopPath}); + m_appManagerModel->startDetachedDesktopExec(m_appManagerModel->getAppInfo(PROC_INFO_PLUGIN_PKG_NAME).desktopInfo.exec); } else { // 安装 DDialog dlg;