diff --git a/graphicsdriverapplet.cpp b/graphicsdriverapplet.cpp
index 90ce758..42d55ea 100644
--- a/graphicsdriverapplet.cpp
+++ b/graphicsdriverapplet.cpp
@@ -83,11 +83,13 @@ void GraphicsDriverApplet::detectGpus()
gpu.name = parseGpuName(line);
- // 检测驱动
+ // 检测驱动:通过 symlink 目标获取真实驱动名
QString sysPath = "/sys/bus/pci/devices/0000:" + gpu.pciId + "/driver";
- QDir driverDir(sysPath);
- if (driverDir.exists()) {
- gpu.driver = driverDir.dirName();
+ QFileInfo driverLink(sysPath);
+ if (driverLink.exists() && driverLink.isSymLink()) {
+ QString target = driverLink.symLinkTarget();
+ // symLinkTarget 返回如 ".../drivers/nvidia",提取最后一段
+ gpu.driver = target.section('/', -1);
// 读取驱动版本
gpu.driverVersion = readDriverVersion(gpu.driver);
@@ -197,6 +199,17 @@ QString GraphicsDriverApplet::readDriverVersion(const QString &driverName)
}
}
+ // 开源内核驱动(如 amdgpu, radeon, nouveau, i915)无独立版本号,版本跟随内核
+ static const QStringList kernelDrivers = {
+ "amdgpu", "radeon", "nouveau", "i915", "i965", "mgag200", "ast", "vmwgfx"
+ };
+ if (kernelDrivers.contains(driverName)) {
+ QFile osrelease("/proc/sys/kernel/osrelease");
+ if (osrelease.open(QIODevice::ReadOnly | QIODevice::Text)) {
+ return "Linux " + QTextStream(&osrelease).readAll().trimmed();
+ }
+ }
+
return QString();
}
diff --git a/package/driverview.qml b/package/driverview.qml
index 798df83..a1e1363 100644
--- a/package/driverview.qml
+++ b/package/driverview.qml
@@ -186,6 +186,7 @@ AppletItem {
model: root.ready ? root.deviceInfo.split("\n").filter(function(line) { return line.trim().length > 0 }) : []
delegate: Rectangle {
+ id: gpuCard
width: gpuColumn.width
height: 72
color: root.cardBackground
@@ -193,6 +194,16 @@ AppletItem {
border.width: 1
border.color: root.cardBorder
+ ToolTip.text: qsTr("GPU: ") + parseGpuName(modelData) + "\n"
+ + qsTr("Driver: ") + parseDriverName(modelData) + "\n"
+ + qsTr("Version: ") + (parseDriverVersion(modelData) || qsTr("Unknown"))
+ ToolTip.visible: cardHover.hovered
+ ToolTip.delay: 300
+
+ HoverHandler {
+ id: cardHover
+ }
+
RowLayout {
anchors.fill: parent
anchors.margins: 12
@@ -327,6 +338,23 @@ AppletItem {
return info
}
+ // 解析驱动名称
+ function parseDriverName(info) {
+ var driver = parseDriverInfo(info)
+ var parts = driver.split(" ")
+ return parts[0] || qsTr("Unknown")
+ }
+
+ // 解析驱动版本号
+ function parseDriverVersion(info) {
+ var driver = parseDriverInfo(info)
+ var parts = driver.split(" ")
+ if (parts.length > 1) {
+ return parts[1]
+ }
+ return ""
+ }
+
// 识别 GPU 厂商简称
function parseGpuVendorShort(info) {
var name = info.toLowerCase()
diff --git a/translations/org.deepin.ds.graphics-driver_zh_CN.ts b/translations/org.deepin.ds.graphics-driver_zh_CN.ts
index a50e618..c9d185e 100644
--- a/translations/org.deepin.ds.graphics-driver_zh_CN.ts
+++ b/translations/org.deepin.ds.graphics-driver_zh_CN.ts
@@ -28,5 +28,20 @@
Refresh
刷新
+
+
+ GPU:
+ 显卡名称:
+
+
+
+ Driver:
+ 驱动:
+
+
+
+ Version:
+ 版本号:
+
diff --git a/translations/org.deepin.ds.graphics-driver_zh_TW.ts b/translations/org.deepin.ds.graphics-driver_zh_TW.ts
index 4f48244..4020ff1 100644
--- a/translations/org.deepin.ds.graphics-driver_zh_TW.ts
+++ b/translations/org.deepin.ds.graphics-driver_zh_TW.ts
@@ -28,5 +28,20 @@
Refresh
重新整理
+
+
+ GPU:
+ 顯示卡名稱:
+
+
+
+ Driver:
+ 驅動:
+
+
+
+ Version:
+ 版本號:
+