Files
Jokul ef37fbbcbf fix: build-deb.sh 显示完整 CMake 错误并预检构建依赖
- 新增 run_step 辅助函数:成功时仅显示末尾 3 行,失败时打印完整输出,
  解决原 | tail -3 管道吞掉 find_package 关键错误、用户无法定位缺包问题
- 新增 [1/6] 构建依赖预检:用 dpkg -s 检查 qt6-base-dev /
  qt6-declarative-dev / libdtkcommon-dev / libdde-shell-dev,缺失时
  直接给出 sudo apt install 命令并退出,步骤编号顺延为 [1/6]~[6/6]
- README 新增「构建依赖」小节:完整 apt install 命令 + 依赖包与
  find_package 对照表 + 运行时无需 -dev 包说明,删除原一句话提示
2026-07-20 20:12:53 +08:00

3.1 KiB
Raw Permalink Blame History

JNetApplet

基于 dde-shell 的深度系统任务栏网络速率监控插件,使用 C++ 后端采集数据、 QML 前端渲染界面,实时显示当前网卡的上行/下行速率与累计流量。

  • 插件 IDspace.jokul.JNetApplet
  • 适用环境:deepin 桌面环境(dde-shell 面板)
  • 数据源:读取 /proc/net/dev 计算网络流量

功能特性

  • 实时上行/下行速率监控(1 秒刷新)
  • 累计上传/下载流量统计
  • 多网卡支持,可在弹窗中切换活动网卡
  • 任务栏图标实时显示速率,高速时变色提示
  • 悬停显示速率摘要,点击展开详情弹窗
  • 详情弹窗展示活动网卡 IP 地址、各网卡速率对比与统计图表
  • 支持从弹窗一键卸载插件

构建与安装

构建依赖

构建需要以下开发包:

sudo apt install build-essential cmake pkg-config qt6-base-dev qt6-declarative-dev libdtkcommon-dev libdde-shell-dev

各包与 CMake find_package 的对应关系:

依赖包 提供 对应 CMake find_package
qt6-base-dev Qt6 Core / DBus / Network Qt6 Core DBus Network
qt6-declarative-dev Qt6 Quick Qt6 Quick
libdtkcommon-dev Dtk6 Core Dtk6 Core
libdde-shell-dev DDEShell DDEShell

运行时仅需 dde-shell 及 Qt6/Dtk6 运行库,上述 -dev 包仅构建时需要。

方式一:从源码安装

cmake -B build
cmake --build build
sudo cmake --install build   # -> /usr/share/dde-shell/space.jokul.JNetApplet/

或使用安装脚本:

bash install.sh

cmake --install 需要 sudo,因为默认 DDE_SHELL_PACKAGE_INSTALL_DIR/usr/share/dde-shell(本机 CMake CACHE 变量)。

安装后重启 dde-shell 使插件生效:

systemctl --user restart dde-shell@DDE

方式二:打包为 deb 安装

仓库提供 build-deb.sh 一键打包脚本,会从 CMakeLists.txt 读取版本号并构建 deb 包:

bash build-deb.sh

产物为 jnetapplet_<version>_<arch>.deb,可直接用 dpkg -i 安装。

验证

项目无测试 / lint / typecheck / CI 流程,验证方式为手动:安装后重启 dde-shell (其通过扫描安装目录中的 metadata.json 发现插件)。

项目结构

├── CMakeLists.txt                          # 构建配置
├── install.sh                              # 安装脚本
├── build-deb.sh                            # deb 一键打包脚本
├── src/
│   ├── networkmonitorapplet.h              # C++ 后端头文件
│   └── networkmonitorapplet.cpp            # C++ 后端实现
├── package/
│   ├── metadata.json.in                   # 插件元数据模板(由 CMake 生成 metadata.json
│   ├── networkview.qml                    # QML 界面主入口
│   └── components/                        # 拆分出的子组件
│       └── AboutWindow.qml                # 关于窗口组件
├── docs/                                   # 设计文档与实现计划
├── README.md                               # 本文件
└── AGENTS.md                               # AI 代理工作指引