Files
JSwitchDisplayApplet/README.md
T
Jokul 46854dfd36 docs: 更新README和设计文档
- README: 移除已废弃的D-Bus接口和依赖,更新为当前实际功能
- README: 添加数据采集方式对比表、QML属性接口文档、安装方式
- 新增 docs/GPU_SWITCH_AND_DRIVER_INSTALL.md: 显卡切换和驱动安装设计方案
2026-07-14 00:23:33 +08:00

192 lines
7.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# GPU 显卡驱动管理任务栏插件
Deepin V25 DDE Shell 任务栏插件,实时检测 GPU 设备、显示驱动信息和温度/使用率监控。
## 功能特性
- **GPU 设备检测** - 通过 `lspci` + `sysfs` 检测所有显卡(NVIDIA/AMD/Intel
- **驱动信息显示** - 驱动模块名 + 版本号(NVIDIA 用 nvidia-smi/procAMD 用内核版本)
- **实时温度监控** - 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 插件系统