2570a028ea98426fc471ab9421bb69d00b928a7c
第二、三阶段功能: 数据增强(第一阶段): - GPU频率: NVIDIA nvidia-smi clocks.gr, Intel gt/gt0/rps_act_freq_mhz - 显存频率: NVIDIA nvidia-smi clocks.mem - 功耗: NVIDIA nvidia-smi power.draw, AMD hwmon power1_average - 风扇转速: NVIDIA nvidia-smi fan.speed, AMD hwmon fan1_input - 任务栏图标根据最高温度变色(≥80°C红/≥60°C橙) - readGpuStats 每次刷新前重置统计字段,避免残留旧值 交互提升(第二阶段): - 温度告警: GPU温度≥80°C时通过D-Bus发送桌面通知,30秒冷却 - 右键菜单: 使用Qt.labs.platform原生菜单+MenuHelper,支持刷新和GPU切换 - 迷你趋势图: Canvas绘制近60秒温度走势折线 - 英文翻译: 新增en.ts,23条全部翻译 高级功能(第三阶段): - NVIDIA进程列表: nvidia-smi --query-compute-apps查询,弹框中显示进程名和显存占用 - GPU切换: pkexec prime-select set <mode>,弹框按钮+右键菜单,仅PRIME模式显示 其他改进: - 自定义深色主题tooltip替代系统默认白色tooltip - 第一张卡片tooltip显示在下方避免被裁剪 - CMakeLists.txt lupdate添加C++源文件提取tr()翻译 - gpuStats格式扩展为9字段: temp|gpuUsage|memUsage|memUsed|memTotal|gpuClock|memClock|powerDraw|fanSpeed
GPU 显卡驱动管理任务栏插件
Deepin V25 DDE Shell 任务栏插件,实时检测 GPU 设备、显示驱动信息和温度/使用率监控。
功能特性
- GPU 设备检测 - 通过
lspci+sysfs检测所有显卡(NVIDIA/AMD/Intel) - 驱动信息显示 - 驱动模块名 + 版本号(NVIDIA 用 nvidia-smi/proc,AMD 用内核版本)
- 实时温度监控 - NVIDIA 用
nvidia-smi,AMD 用hwmon,2 秒自动刷新 - GPU 使用率 - 进度条显示,NVIDIA 用
nvidia-smi,AMD 用gpu_busy_percent - 显存使用 - 已用/总量 (MB),带使用率百分比
- 主副显标识 - 通过
boot_vga区分主显卡(绿色"主显"标签) - GPU 切换模式检测 - 自动识别 PRIME / Bumblebee / Solo / Hybrid 模式
- 国际化 - 支持简体中文、繁体中文、英文
截图
┌─────────────────────────────────────┐
│ GPU 显卡驱动管理 │
│─────────────────────────────────────│
│ 当前驱动: nvidia, amdgpu [PRIME] │
│─────────────────────────────────────│
│ ┌─────────────────────────────────┐ │
│ │ NV NVIDIA GeForce RTX 3060 主显│ │
│ │ nvidia 580.119.02 │ │
│ │ 54°C 108/6144 MB │ │
│ │ GPU ████░░░░░░ 36% │ │
│ └─────────────────────────────────┘ │
│ ┌─────────────────────────────────┐ │
│ │ AMD AMD Radeon Vega │ │
│ │ amdgpu Linux 6.18.36 │ │
│ │ 90°C 471/512 MB │ │
│ │ GPU ████████░░ 71% │ │
│ └─────────────────────────────────┘ │
│ [ 刷新 ] │
└─────────────────────────────────────┘
依赖项
构建依赖
cmake (>= 3.16)
g++
qt6-base-dev
qt6-l10n-tools # lrelease 翻译编译
libdde-shell-dev # DDE Shell 插件头文件
libdtk6core-dev # DTK6 Core
运行时依赖
dde-shell # 任务栏宿主
lspci # GPU 检测(pciutils 包)
nvidia-smi # NVIDIA 监控(可选,nvidia-driver 包自带)
构建
# 安装构建依赖
sudo apt install -y cmake g++ qt6-base-dev qt6-l10n-tools libdde-shell-dev libdtk6core-dev
# 构建
cmake -Bbuild
cmake --build build
安装
方式一:一键脚本
bash install.sh
方式二:手动安装
sudo cmake --install build
systemctl --user restart dde-shell@DDE
方式三:deb 包
bash build-deb.sh --install
卸载
sudo rm -f /usr/lib/x86_64-linux-gnu/dde-shell/org.deepin.ds.graphics-driver.so
sudo rm -rf /usr/share/dde-shell/org.deepin.ds.graphics-driver
systemctl --user restart dde-shell@DDE
项目结构
├── package/
│ ├── metadata.json # 插件元数据(ID、父插件、dockOrder)
│ └── driverview.qml # QML 界面(弹窗、卡片、tooltip)
├── translations/
│ ├── *_zh_CN.ts # 简体中文翻译
│ └── *_zh_TW.ts # 繁体中文翻译
├── graphicsdriverapplet.h # C++ 插件类头文件
├── graphicsdriverapplet.cpp # C++ 插件类实现
├── debian/ # Debian 打包配置
├── docs/ # 设计文档
│ └── GPU_SWITCH_AND_DRIVER_INSTALL.md
├── CMakeLists.txt # 构建配置
├── install.sh # 一键构建安装脚本
├── build-deb.sh # 一键 deb 打包脚本
└── README.md
技术实现
架构
┌──────────────────────────────────────────────┐
│ DDE Shell Taskbar │
├──────────────────────────────────────────────┤
│ org.deepin.ds.graphics-driver │
│ ┌──────────┐ ┌──────────┐ ┌───────────┐ │
│ │ GPU 检测 │ │ 实时监控 │ │ QML UI │ │
│ │ lspci │ │ nvidia-smi│ │ 卡片 │ │
│ │ sysfs │ │ hwmon │ │ tooltip │ │
│ │ boot_vga │ │ drm │ │ 进度条 │ │
│ └──────────┘ └──────────┘ └───────────┘ │
└──────────────────────────────────────────────┘
数据采集方式
| 数据 | NVIDIA | AMD/Intel |
|---|---|---|
| GPU 检测 | lspci -mm |
lspci -mm |
| 驱动名 | /sys/bus/pci/.../driver symlink |
同左 |
| 驱动版本 | /proc/driver/nvidia/version |
/proc/sys/kernel/osrelease |
| 温度 | nvidia-smi |
/sys/class/hwmon/hwmonN/temp1_input |
| GPU 使用率 | nvidia-smi |
/sys/class/drm/cardN/device/gpu_busy_percent |
| 显存 | nvidia-smi |
/sys/class/drm/cardN/device/mem_info_vram_* |
| 主副显 | /sys/bus/pci/.../boot_vga |
同左 |
| 切换模式 | nvidia-drm-outputclass.conf 检测 |
- |
QML 属性接口
| 属性 | 类型 | 说明 |
|---|---|---|
applet.ready |
bool | GPU 检测完成 |
applet.deviceInfo |
QString | GPU 信息(每行一个) |
applet.currentDriver |
QString | 当前驱动列表 |
applet.gpuSummary |
QString | GPU 摘要 |
applet.gpuStats |
QStringList | 实时统计(temp|gpu|mem|used|total) |
applet.gpuMode |
QString | 切换模式(PRIME/Bumblebee/Solo/Hybrid) |
applet.gpuPrimary |
QStringList | 主副显标识(true/false) |
applet.refreshStats() |
void | 刷新实时统计 |
applet.refreshDeviceInfo() |
void | 重新检测 GPU |
使用说明
- 插件安装后自动加载到任务栏右侧
- 悬停任务栏图标 - 显示 GPU 温度和使用率摘要
- 点击图标 - 打开弹窗,查看详细 GPU 信息
- 弹窗内数据每 2 秒自动刷新
- 悬停卡片 - 显示该 GPU 的驱动详情 tooltip
- 点击刷新 - 重新检测 GPU 设备
开发计划
- GPU 检测与驱动信息显示
- 温度/使用率/显存实时监控
- 主副显标识与 GPU 模式检测
- PRIME 显卡切换(全局开关)
- 驱动安装(pkexec + apt)
详见 设计方案文档
许可证
GPL-3.0-or-later
相关项目
- dde-shell - Deepin Shell 插件系统
Description