feat: 添加GPU切换模式检测和主副显标识

- C++后端:GpuInfo添加isPrimary字段,读取boot_vga判断主副显
- C++后端:detectGpuMode()检测PRIME/Bumblebee/Solo/Hybrid模式
- C++后端:新增gpuMode和gpuPrimary属性
- QML前端:卡片显示绿色主显标签(boot_vga=1的GPU)
- QML前端:弹窗显示GPU模式标签(PRIME等)和帮助图标
- 帮助图标悬停显示模式说明文字
- 翻译更新:主显/主顯 + 四种模式的中文说明
This commit is contained in:
2026-07-14 00:19:56 +08:00
parent 403ae8a69b
commit d5a2c380ab
5 changed files with 216 additions and 6 deletions
+10
View File
@@ -18,6 +18,7 @@ struct GpuInfo {
QString driverVersion; // 驱动版本
QString pciId; // PCI ID,如 "01:00.0"
int drmCard; // DRM 卡号,如 0, 1(-1 表示未找到)
bool isPrimary; // 是否为主显卡(boot_vga=1
// 实时统计
int temperature; // 温度 (°C),-1 表示不可用
@@ -35,6 +36,8 @@ class GraphicsDriverApplet : public DApplet
Q_PROPERTY(QString currentDriver READ currentDriver NOTIFY currentDriverChanged)
Q_PROPERTY(QString gpuSummary READ gpuSummary NOTIFY gpuSummaryChanged)
Q_PROPERTY(QStringList gpuStats READ gpuStats NOTIFY gpuStatsChanged)
Q_PROPERTY(QString gpuMode READ gpuMode NOTIFY gpuModeChanged)
Q_PROPERTY(QStringList gpuPrimary READ gpuPrimary NOTIFY gpuPrimaryChanged)
Q_PROPERTY(bool ready READ ready NOTIFY readyChanged)
public:
@@ -48,6 +51,8 @@ public:
QString currentDriver() const;
QString gpuSummary() const;
QStringList gpuStats() const;
QString gpuMode() const;
QStringList gpuPrimary() const;
bool ready() const;
Q_INVOKABLE void refreshDeviceInfo();
@@ -58,11 +63,14 @@ signals:
void currentDriverChanged();
void gpuSummaryChanged();
void gpuStatsChanged();
void gpuModeChanged();
void gpuPrimaryChanged();
void readyChanged();
private:
void detectGpus();
void readGpuStats();
void detectGpuMode();
static int findDrmCard(const QString &pciId);
static QStringList runCommand(const QString &cmd, const QStringList &args);
static QString parseGpuName(const QString &line);
@@ -73,6 +81,8 @@ private:
QString m_currentDriver;
QString m_gpuSummary;
QStringList m_gpuStats;
QString m_gpuMode;
QStringList m_gpuPrimary;
bool m_ready;
};