diff --git a/Modules/ProcessList/SystemOverview.qml b/Modules/ProcessList/SystemOverview.qml
index 4736718a..fbc6ac69 100644
--- a/Modules/ProcessList/SystemOverview.qml
+++ b/Modules/ProcessList/SystemOverview.qml
@@ -238,16 +238,56 @@ Row {
height: 80
radius: Theme.cornerRadius
color: {
- if (gpuCardMouseArea.containsMouse
- && SysMonitorService.availableGpus.length > 1)
- return Qt.rgba(Theme.surfaceVariant.r, Theme.surfaceVariant.g,
- Theme.surfaceVariant.b, 0.16)
+ if (!SysMonitorService.availableGpus || SysMonitorService.availableGpus.length === 0) {
+ if (gpuCardMouseArea.containsMouse && SysMonitorService.availableGpus.length > 1)
+ return Qt.rgba(Theme.surfaceVariant.r, Theme.surfaceVariant.g, Theme.surfaceVariant.b, 0.16)
+ else
+ return Qt.rgba(Theme.surfaceVariant.r, Theme.surfaceVariant.g, Theme.surfaceVariant.b, 0.08)
+ }
+
+ var gpu = SysMonitorService.availableGpus[Math.min(SessionData.selectedGpuIndex, SysMonitorService.availableGpus.length - 1)]
+ var vendor = gpu.vendor.toLowerCase()
+
+ if (vendor.includes("nvidia")) {
+ if (gpuCardMouseArea.containsMouse && SysMonitorService.availableGpus.length > 1)
+ return Qt.rgba(Theme.success.r, Theme.success.g, Theme.success.b, 0.2)
+ else
+ return Qt.rgba(Theme.success.r, Theme.success.g, Theme.success.b, 0.12)
+ } else if (vendor.includes("amd")) {
+ if (gpuCardMouseArea.containsMouse && SysMonitorService.availableGpus.length > 1)
+ return Qt.rgba(Theme.error.r, Theme.error.g, Theme.error.b, 0.2)
+ else
+ return Qt.rgba(Theme.error.r, Theme.error.g, Theme.error.b, 0.12)
+ } else if (vendor.includes("intel")) {
+ if (gpuCardMouseArea.containsMouse && SysMonitorService.availableGpus.length > 1)
+ return Qt.rgba(Theme.info.r, Theme.info.g, Theme.info.b, 0.2)
+ else
+ return Qt.rgba(Theme.info.r, Theme.info.g, Theme.info.b, 0.12)
+ }
+
+ if (gpuCardMouseArea.containsMouse && SysMonitorService.availableGpus.length > 1)
+ return Qt.rgba(Theme.surfaceVariant.r, Theme.surfaceVariant.g, Theme.surfaceVariant.b, 0.16)
else
- return Qt.rgba(Theme.surfaceVariant.r, Theme.surfaceVariant.g,
- Theme.surfaceVariant.b, 0.08)
+ return Qt.rgba(Theme.surfaceVariant.r, Theme.surfaceVariant.g, Theme.surfaceVariant.b, 0.08)
+ }
+ border.color: {
+ if (!SysMonitorService.availableGpus || SysMonitorService.availableGpus.length === 0) {
+ return Qt.rgba(Theme.surfaceVariant.r, Theme.surfaceVariant.g, Theme.surfaceVariant.b, 0.2)
+ }
+
+ var gpu = SysMonitorService.availableGpus[Math.min(SessionData.selectedGpuIndex, SysMonitorService.availableGpus.length - 1)]
+ var vendor = gpu.vendor.toLowerCase()
+
+ if (vendor.includes("nvidia")) {
+ return Qt.rgba(Theme.success.r, Theme.success.g, Theme.success.b, 0.3)
+ } else if (vendor.includes("amd")) {
+ return Qt.rgba(Theme.error.r, Theme.error.g, Theme.error.b, 0.3)
+ } else if (vendor.includes("intel")) {
+ return Qt.rgba(Theme.info.r, Theme.info.g, Theme.info.b, 0.3)
+ }
+
+ return Qt.rgba(Theme.surfaceVariant.r, Theme.surfaceVariant.g, Theme.surfaceVariant.b, 0.2)
}
- border.color: Qt.rgba(Theme.surfaceVariant.r, Theme.surfaceVariant.g,
- Theme.surfaceVariant.b, 0.2)
border.width: 1
MouseArea {
diff --git a/Modules/ProcessList/SystemTab.qml b/Modules/ProcessList/SystemTab.qml
index ab00f3cf..c0bbec7b 100644
--- a/Modules/ProcessList/SystemTab.qml
+++ b/Modules/ProcessList/SystemTab.qml
@@ -199,19 +199,60 @@ ScrollView {
height: gpuColumn.implicitHeight + Theme.spacingL
radius: Theme.cornerRadius
color: {
- if (gpuCardMouseArea.containsMouse
- && SysMonitorService.availableGpus.length > 1)
- return Qt.rgba(Theme.surfaceContainerHigh.r,
- Theme.surfaceContainerHigh.g,
- Theme.surfaceContainerHigh.b, 0.6)
- else
- return Qt.rgba(Theme.surfaceContainerHigh.r,
- Theme.surfaceContainerHigh.g,
- Theme.surfaceContainerHigh.b, 0.4)
+ var baseColor = Qt.rgba(Theme.surfaceContainerHigh.r,
+ Theme.surfaceContainerHigh.g,
+ Theme.surfaceContainerHigh.b, 0.4)
+ var hoverColor = Qt.rgba(Theme.surfaceContainerHigh.r,
+ Theme.surfaceContainerHigh.g,
+ Theme.surfaceContainerHigh.b, 0.6)
+
+ if (!SysMonitorService.availableGpus || SysMonitorService.availableGpus.length === 0) {
+ return gpuCardMouseArea.containsMouse && SysMonitorService.availableGpus.length > 1 ? hoverColor : baseColor
+ }
+
+ var gpu = SysMonitorService.availableGpus[Math.min(SessionData.selectedGpuIndex, SysMonitorService.availableGpus.length - 1)]
+ var vendor = gpu.fullName.split(' ')[0].toLowerCase()
+ var tintColor
+
+ if (vendor.includes("nvidia")) {
+ tintColor = Theme.success
+ } else if (vendor.includes("amd")) {
+ tintColor = Theme.error
+ } else if (vendor.includes("intel")) {
+ tintColor = Theme.info
+ } else {
+ return gpuCardMouseArea.containsMouse && SysMonitorService.availableGpus.length > 1 ? hoverColor : baseColor
+ }
+
+ if (gpuCardMouseArea.containsMouse && SysMonitorService.availableGpus.length > 1) {
+ return Qt.rgba((hoverColor.r + tintColor.r * 0.1) / 1.1,
+ (hoverColor.g + tintColor.g * 0.1) / 1.1,
+ (hoverColor.b + tintColor.b * 0.1) / 1.1, 0.6)
+ } else {
+ return Qt.rgba((baseColor.r + tintColor.r * 0.08) / 1.08,
+ (baseColor.g + tintColor.g * 0.08) / 1.08,
+ (baseColor.b + tintColor.b * 0.08) / 1.08, 0.4)
+ }
}
border.width: 1
- border.color: Qt.rgba(Theme.outline.r, Theme.outline.g,
- Theme.outline.b, 0.1)
+ border.color: {
+ if (!SysMonitorService.availableGpus || SysMonitorService.availableGpus.length === 0) {
+ return Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.1)
+ }
+
+ var gpu = SysMonitorService.availableGpus[Math.min(SessionData.selectedGpuIndex, SysMonitorService.availableGpus.length - 1)]
+ var vendor = gpu.fullName.split(' ')[0].toLowerCase()
+
+ if (vendor.includes("nvidia")) {
+ return Qt.rgba(Theme.success.r, Theme.success.g, Theme.success.b, 0.3)
+ } else if (vendor.includes("amd")) {
+ return Qt.rgba(Theme.error.r, Theme.error.g, Theme.error.b, 0.3)
+ } else if (vendor.includes("intel")) {
+ return Qt.rgba(Theme.info.r, Theme.info.g, Theme.info.b, 0.3)
+ }
+
+ return Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.1)
+ }
MouseArea {
id: gpuCardMouseArea
@@ -284,21 +325,13 @@ ScrollView {
text: {
if (!SysMonitorService.availableGpus
|| SysMonitorService.availableGpus.length === 0) {
- return "Nadda"
+ return "Device: N/A"
}
var gpu = SysMonitorService.availableGpus[Math.min(
SessionData.selectedGpuIndex,
SysMonitorService.availableGpus.length
- 1)]
- var vendor = gpu.vendor.toLowerCase()
- if (vendor.includes("nvidia")) {
- return "The green company"
- } else if (vendor.includes("amd")) {
- return "The red company"
- } else if (vendor.includes("intel")) {
- return "The blue company"
- }
- return gpu.vendor
+ return "Device: " + gpu.pciId
}
font.pixelSize: Theme.fontSizeSmall
font.family: SettingsData.monoFontFamily
diff --git a/Services/SysMonitorService.qml b/Services/SysMonitorService.qml
index 4d6c1c19..ccf5ccff 100644
--- a/Services/SysMonitorService.qml
+++ b/Services/SysMonitorService.qml
@@ -209,11 +209,18 @@ Singleton {
if (data.gpus) {
const gpuList = []
for (const gpu of data.gpus) {
- // Parse the display name from rawLine
+ // Parse the display name and PCI ID from rawLine
let displayName = ""
let fullName = ""
+ let pciId = ""
if (gpu.rawLine) {
+ // Extract PCI ID [vvvv:dddd]
+ const pciMatch = gpu.rawLine.match(/\[([0-9a-f]{4}:[0-9a-f]{4})\]/i)
+ if (pciMatch) {
+ pciId = pciMatch[1]
+ }
+
// Remove BDF and class prefix
let s = gpu.rawLine.replace(/^[^:]+: /, "")
// Remove PCI ID [vvvv:dddd] and everything after
@@ -237,7 +244,6 @@ Singleton {
displayName = displayName
.replace(/^NVIDIA Corporation\s+/i, "")
.replace(/^NVIDIA\s+/i, "")
- .replace(/^GeForce\s+/i, "")
.replace(/^Advanced Micro Devices, Inc\.\s+/i, "")
.replace(/^AMD\/ATI\s+/i, "")
.replace(/^AMD\s+/i, "")
@@ -265,6 +271,7 @@ Singleton {
"vendor": gpu.vendor,
"displayName": displayName,
"fullName": fullName,
+ "pciId": pciId,
"temperature": 0,
"hwmon": "unknown"
})
@@ -291,6 +298,7 @@ Singleton {
"vendor": gpu.vendor,
"displayName": gpu.displayName,
"fullName": gpu.fullName,
+ "pciId": gpu.pciId,
"temperature": tempInfo.temperature || 0,
"hwmon": tempInfo.hwmon || "unknown"
})
@@ -300,6 +308,7 @@ Singleton {
"vendor": gpu.vendor,
"displayName": gpu.displayName,
"fullName": gpu.fullName,
+ "pciId": gpu.pciId,
"temperature": gpu.temperature || 0,
"hwmon": gpu.hwmon || "unknown"
})