Files
JSwitchDisplayApplet/graphicsdriverapplet.h
T
Jokul b440fdf40a feat: 移除D-Bus依赖,改用 lspci 直接检测显卡,重构弹窗UI
- C++ 后端:移除 D-Bus 通信,改用 lspci -mm + /sys/bus/pci 直接检测显卡和驱动
- 新增 gpuSummary、ready 属性,通过 /sys/module 和 /proc/driver 读取驱动版本
- QML:使用 DTK 配色,卡片式布局展示 GPU 列表,每张显卡独立卡片
- 移除安装/测试/取消按钮,聚焦显卡信息展示
- 翻译精简为 5 条,同步 zh_CN / zh_TW
2026-07-13 21:14:12 +08:00

65 lines
1.6 KiB
C++

// SPDX-FileCopyrightText: 2024 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: GPL-3.0-or-later
#pragma once
#include <applet.h>
#include <QString>
#include <QStringList>
#include <QTimer>
DS_BEGIN_NAMESPACE
struct GpuInfo {
QString name; // 显卡名称,如 "NVIDIA GeForce RTX 3060"
QString driver; // 驱动模块名,如 "nvidia"
QString driverVersion; // 驱动版本
QString pciId; // PCI ID,如 "01:00.0"
};
class GraphicsDriverApplet : public DApplet
{
Q_OBJECT
Q_PROPERTY(QString deviceInfo READ deviceInfo NOTIFY deviceInfoChanged)
Q_PROPERTY(QString currentDriver READ currentDriver NOTIFY currentDriverChanged)
Q_PROPERTY(QString gpuSummary READ gpuSummary NOTIFY gpuSummaryChanged)
Q_PROPERTY(bool ready READ ready NOTIFY readyChanged)
public:
explicit GraphicsDriverApplet(QObject *parent = nullptr);
~GraphicsDriverApplet();
virtual bool load() override;
virtual bool init() override;
QString deviceInfo() const;
QString currentDriver() const;
QString gpuSummary() const;
bool ready() const;
Q_INVOKABLE void refreshDeviceInfo();
signals:
void deviceInfoChanged();
void currentDriverChanged();
void gpuSummaryChanged();
void readyChanged();
private:
void detectGpus();
static QStringList runCommand(const QString &cmd, const QStringList &args);
static QString parseGpuName(const QString &line);
static QString readDriverVersion(const QString &driverName);
QList<GpuInfo> m_gpus;
QString m_deviceInfo;
QString m_currentDriver;
QString m_gpuSummary;
bool m_ready;
};
DS_END_NAMESPACE