Files
JNetApplet/README.md
T
Jokul 43fdcc8b0a docs: 更新README和AGENTS.md同步当前项目状态
功能特性补全设置窗口/字体颜色/流量波动图/IPv6/深色模式/全接口采样。
项目结构补全6个组件。C++ Backend属性列表移除interfaceStats,新增
ipv6Address/version/textColor/speedHistory等。修正卸载入口描述。
2026-07-24 11:14:42 +08:00

4.0 KiB
Raw Blame History

JNetApplet

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

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

功能特性

  • 实时上行/下行速率监控(1 秒刷新,按真实时间间隔计算)
  • 本次会话累计上传/下载流量统计
  • 多网卡支持,可在弹窗或设置窗口中切换活动网卡
  • 任务栏图标实时显示速率,高速时变色提示
  • 任务栏字体颜色可自定义,支持跟随系统主题
  • 悬停显示速率摘要与网卡 IP 地址,点击展开详情弹窗
  • 详情弹窗展示活动网卡 IPv4/IPv6 地址、各网卡速率对比与统计
  • 流量波动图窗口:展示活动接口最近 5 分钟网速趋势(下载/上传双折线)
  • 设置窗口:网络接口选择、字体颜色自定义、一键卸载插件
  • 深色模式全适配(任务栏图标、弹窗、独立窗口均跟随系统主题)
  • 所有接口后台持续采集速度历史,切换网卡时趋势图立即有数据

构建与安装

构建依赖

构建需要以下开发包:

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/                        # 拆分出的子组件
│       ├── NetCommon.qml                  # 公共颜色与格式化函数
│       ├── NetworkPopup.qml               # 左键弹窗内容(速度/总量/网卡切换)
│       ├── SettingsWindow.qml             # 设置窗口(接口选择/字体颜色/卸载)
│       ├── TrafficChartWindow.qml         # 流量波动图窗口(5分钟趋势折线)
│       ├── TextColorPicker.qml            # 字体颜色选择器
│       └── AboutWindow.qml                # 关于窗口
├── docs/                                   # 设计文档与审查清单
├── README.md                               # 本文件
└── AGENTS.md                               # AI 代理工作指引