46854dfd36
- README: 移除已废弃的D-Bus接口和依赖,更新为当前实际功能 - README: 添加数据采集方式对比表、QML属性接口文档、安装方式 - 新增 docs/GPU_SWITCH_AND_DRIVER_INSTALL.md: 显卡切换和驱动安装设计方案
192 lines
7.2 KiB
Markdown
192 lines
7.2 KiB
Markdown
# 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 包自带)
|
||
```
|
||
|
||
## 构建
|
||
|
||
```bash
|
||
# 安装构建依赖
|
||
sudo apt install -y cmake g++ qt6-base-dev qt6-l10n-tools libdde-shell-dev libdtk6core-dev
|
||
|
||
# 构建
|
||
cmake -Bbuild
|
||
cmake --build build
|
||
```
|
||
|
||
## 安装
|
||
|
||
### 方式一:一键脚本
|
||
|
||
```bash
|
||
bash install.sh
|
||
```
|
||
|
||
### 方式二:手动安装
|
||
|
||
```bash
|
||
sudo cmake --install build
|
||
systemctl --user restart dde-shell@DDE
|
||
```
|
||
|
||
### 方式三:deb 包
|
||
|
||
```bash
|
||
bash build-deb.sh --install
|
||
```
|
||
|
||
## 卸载
|
||
|
||
```bash
|
||
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 |
|
||
|
||
## 使用说明
|
||
|
||
1. 插件安装后自动加载到任务栏右侧
|
||
2. **悬停**任务栏图标 - 显示 GPU 温度和使用率摘要
|
||
3. **点击**图标 - 打开弹窗,查看详细 GPU 信息
|
||
4. 弹窗内数据每 2 秒自动刷新
|
||
5. **悬停**卡片 - 显示该 GPU 的驱动详情 tooltip
|
||
6. **点击刷新** - 重新检测 GPU 设备
|
||
|
||
## 开发计划
|
||
|
||
- [x] GPU 检测与驱动信息显示
|
||
- [x] 温度/使用率/显存实时监控
|
||
- [x] 主副显标识与 GPU 模式检测
|
||
- [ ] PRIME 显卡切换(全局开关)
|
||
- [ ] 驱动安装(pkexec + apt)
|
||
|
||
详见 [设计方案文档](docs/GPU_SWITCH_AND_DRIVER_INSTALL.md)
|
||
|
||
## 许可证
|
||
|
||
GPL-3.0-or-later
|
||
|
||
## 相关项目
|
||
|
||
- [dde-shell](https://github.com/linuxdeepin/dde-shell) - Deepin Shell 插件系统
|