From 37a0561cc14a4ec5be4cf037e461dfea0a200b12 Mon Sep 17 00:00:00 2001 From: keke <243768648@qq.com> Date: Wed, 15 Jun 2022 23:10:54 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9B=B4=E6=94=B9=E7=A8=8B=E5=BA=8F?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=E6=96=B9=E5=BC=8F=EF=BC=8C=E5=8E=BB=E6=8E=89?= =?UTF-8?q?dex=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- appmanagermodel.cpp | 13 +++++++++++++ appmanagermodel.h | 2 ++ appmanagerwidget.cpp | 4 +--- build-package/build.sh | 2 +- debian/control | 2 +- mainwindow.cpp | 4 ++-- 6 files changed, 20 insertions(+), 7 deletions(-) diff --git a/appmanagermodel.cpp b/appmanagermodel.cpp index 5f73f98..61430e7 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 c58e71b..dec4ce3 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 dc3c896..97f51ce 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 602f5c1..32d206a 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 6242d8b..1fc8266 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 9b36c0b..54dbca7 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; -- Gitee