1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-01-26 22:42:50 -05:00

migrate to dankgop monitoring

This commit is contained in:
bbedward
2025-08-09 16:50:02 -04:00
parent a0c5f31ffa
commit 3f5eb1844c
21 changed files with 1061 additions and 934 deletions

View File

@@ -1,6 +1,7 @@
import QtQuick
import QtQuick.Controls
import qs.Common
import qs.Services
import qs.Widgets
Item {
@@ -53,26 +54,29 @@ Item {
"text": "CPU Usage",
"description": "CPU usage indicator",
"icon": "memory",
"enabled": true
"enabled": DankgopService.dankgopAvailable,
"warning": !DankgopService.dankgopAvailable ? "Requires 'dankgop' tool" : undefined
}, {
"id": "memUsage",
"text": "Memory Usage",
"description": "Memory usage indicator",
"icon": "storage",
"enabled": true
"enabled": DankgopService.dankgopAvailable,
"warning": !DankgopService.dankgopAvailable ? "Requires 'dankgop' tool" : undefined
}, {
"id": "cpuTemp",
"text": "CPU Temperature",
"description": "CPU temperature display",
"icon": "device_thermostat",
"enabled": true
"enabled": DankgopService.dankgopAvailable,
"warning": !DankgopService.dankgopAvailable ? "Requires 'dankgop' tool" : undefined
}, {
"id": "gpuTemp",
"text": "GPU Temperature",
"description": "GPU temperature display",
"icon": "auto_awesome_mosaic",
"warning": "This widget prevents GPU power off states, which can significantly impact battery life on laptops. It is not recommended to use this on laptops with hybrid graphics.",
"enabled": true
"warning": !DankgopService.dankgopAvailable ? "Requires 'dankgop' tool" : "This widget prevents GPU power off states, which can significantly impact battery life on laptops. It is not recommended to use this on laptops with hybrid graphics.",
"enabled": DankgopService.dankgopAvailable
}, {
"id": "systemTray",
"text": "System Tray",
@@ -145,12 +149,6 @@ Item {
}, {
"id": "clipboard",
"enabled": true
}, {
"id": "cpuUsage",
"enabled": true
}, {
"id": "memUsage",
"enabled": true
}, {
"id": "notificationButton",
"enabled": true
@@ -169,8 +167,10 @@ Item {
}
if (widgetId === "spacer")
widgetObj.size = 20
if (widgetId === "gpuTemp")
if (widgetId === "gpuTemp") {
widgetObj.selectedGpuIndex = 0
widgetObj.pciId = ""
}
var widgets = []
if (targetSection === "left") {
@@ -223,14 +223,22 @@ Item {
var widget = widgets[i]
var widgetId = typeof widget === "string" ? widget : widget.id
if (widgetId === itemId) {
widgets[i] = typeof widget === "string" ? {
"id": widget,
"enabled": enabled
} : {
"id": widget.id,
"enabled": enabled,
"size": widget.size,
"selectedGpuIndex": widget.selectedGpuIndex
if (typeof widget === "string") {
widgets[i] = {
"id": widget,
"enabled": enabled
}
} else {
var newWidget = {
"id": widget.id,
"enabled": enabled
}
if (widget.size !== undefined) newWidget.size = widget.size
if (widget.selectedGpuIndex !== undefined) newWidget.selectedGpuIndex = widget.selectedGpuIndex
else if (widget.id === "gpuTemp") newWidget.selectedGpuIndex = 0
if (widget.pciId !== undefined) newWidget.pciId = widget.pciId
else if (widget.id === "gpuTemp") newWidget.pciId = ""
widgets[i] = newWidget
}
break
}
@@ -264,15 +272,21 @@ Item {
var widget = widgets[i]
var widgetId = typeof widget === "string" ? widget : widget.id
if (widgetId === itemId && widgetId === "spacer") {
widgets[i] = typeof widget === "string" ? {
"id": widget,
"enabled": true,
"size": newSize
} : {
"id": widget.id,
"enabled": widget.enabled,
"size": newSize,
"selectedGpuIndex": widget.selectedGpuIndex
if (typeof widget === "string") {
widgets[i] = {
"id": widget,
"enabled": true,
"size": newSize
}
} else {
var newWidget = {
"id": widget.id,
"enabled": widget.enabled,
"size": newSize
}
if (widget.selectedGpuIndex !== undefined) newWidget.selectedGpuIndex = widget.selectedGpuIndex
if (widget.pciId !== undefined) newWidget.pciId = widget.pciId
widgets[i] = newWidget
}
break
}
@@ -296,15 +310,22 @@ Item {
if (widgetIndex >= 0 && widgetIndex < widgets.length) {
var widget = widgets[widgetIndex]
widgets[widgetIndex] = typeof widget === "string" ? {
"id": widget,
"enabled": true,
"selectedGpuIndex": selectedGpuIndex
} : {
"id": widget.id,
"enabled": widget.enabled,
"size": widget.size,
"selectedGpuIndex": selectedGpuIndex
if (typeof widget === "string") {
widgets[widgetIndex] = {
"id": widget,
"enabled": true,
"selectedGpuIndex": selectedGpuIndex,
"pciId": DankgopService.availableGpus && DankgopService.availableGpus.length > selectedGpuIndex ? DankgopService.availableGpus[selectedGpuIndex].pciId : ""
}
} else {
var newWidget = {
"id": widget.id,
"enabled": widget.enabled,
"selectedGpuIndex": selectedGpuIndex,
"pciId": DankgopService.availableGpus && DankgopService.availableGpus.length > selectedGpuIndex ? DankgopService.availableGpus[selectedGpuIndex].pciId : ""
}
if (widget.size !== undefined) newWidget.size = widget.size
widgets[widgetIndex] = newWidget
}
}
@@ -331,6 +352,8 @@ Item {
var widgetSize = typeof widget === "string" ? undefined : widget.size
var widgetSelectedGpuIndex = typeof widget
=== "string" ? undefined : widget.selectedGpuIndex
var widgetPciId = typeof widget
=== "string" ? undefined : widget.pciId
var widgetDef = baseWidgetDefinitions.find(w => {
return w.id === widgetId
})
@@ -341,6 +364,8 @@ Item {
item.size = widgetSize
if (widgetSelectedGpuIndex !== undefined)
item.selectedGpuIndex = widgetSelectedGpuIndex
if (widgetPciId !== undefined)
item.pciId = widgetPciId
widgets.push(item)
}
@@ -359,8 +384,9 @@ Item {
if (!SettingsData.topBarRightWidgets
|| SettingsData.topBarRightWidgets.length === 0)
SettingsData.setTopBarRightWidgets(
defaultRightWidgets)["left", "center", "right"].forEach(sectionId => {
SettingsData.setTopBarRightWidgets(defaultRightWidgets)
["left", "center", "right"].forEach(sectionId => {
var widgets = []
if (sectionId === "left")
widgets = SettingsData.topBarLeftWidgets.slice()

View File

@@ -148,29 +148,23 @@ Column {
currentValue: {
var selectedIndex = modelData.selectedGpuIndex
!== undefined ? modelData.selectedGpuIndex : 0
if (SysMonitorService.availableGpus
&& SysMonitorService.availableGpus.length > selectedIndex
if (DankgopService.availableGpus
&& DankgopService.availableGpus.length > selectedIndex
&& selectedIndex >= 0) {
var gpu = SysMonitorService.availableGpus[selectedIndex]
return gpu.driver.toUpperCase() + " (" + Math.round(
gpu.temperature || 0) + "°C)"
var gpu = DankgopService.availableGpus[selectedIndex]
return gpu.driver.toUpperCase()
}
return SysMonitorService.availableGpus
&& SysMonitorService.availableGpus.length
> 0 ? SysMonitorService.availableGpus[0].driver.toUpperCase(
) + " (" + Math.round(
SysMonitorService.availableGpus[0].temperature
|| 0) + "°C)" : ""
return DankgopService.availableGpus
&& DankgopService.availableGpus.length
> 0 ? DankgopService.availableGpus[0].driver.toUpperCase() : ""
}
options: {
var gpuOptions = []
if (SysMonitorService.availableGpus
&& SysMonitorService.availableGpus.length > 0) {
for (var i = 0; i < SysMonitorService.availableGpus.length; i++) {
var gpu = SysMonitorService.availableGpus[i]
gpuOptions.push(gpu.driver.toUpperCase(
) + " (" + Math.round(gpu.temperature
|| 0) + "°C)")
if (DankgopService.availableGpus
&& DankgopService.availableGpus.length > 0) {
for (var i = 0; i < DankgopService.availableGpus.length; i++) {
var gpu = DankgopService.availableGpus[i]
gpuOptions.push(gpu.driver.toUpperCase())
}
}
return gpuOptions
@@ -188,7 +182,7 @@ Column {
Item {
width: 32
height: 32
visible: modelData.id === "gpuTemp" && modelData.warning
visible: (modelData.warning !== undefined && modelData.warning !== "") && (modelData.id === "cpuUsage" || modelData.id === "memUsage" || modelData.id === "cpuTemp" || modelData.id === "gpuTemp")
DankIcon {
name: "warning"
@@ -207,13 +201,16 @@ Column {
Rectangle {
id: warningTooltip
width: warningTooltipText.contentWidth + Theme.spacingM * 2
height: warningTooltipText.contentHeight + Theme.spacingS * 2
property string warningText: (modelData.warning !== undefined && modelData.warning !== "") ? modelData.warning : ""
width: Math.min(250, warningTooltipText.implicitWidth) + Theme.spacingM * 2
height: warningTooltipText.implicitHeight + Theme.spacingS * 2
radius: Theme.cornerRadius
color: Theme.surfaceContainer
border.color: Theme.outline
border.width: 1
visible: warningArea.containsMouse
visible: warningArea.containsMouse && warningText !== ""
opacity: visible ? 1 : 0
x: -width - Theme.spacingS
y: (parent.height - height) / 2
@@ -222,10 +219,11 @@ Column {
StyledText {
id: warningTooltipText
anchors.centerIn: parent
text: modelData.warning || "Warning"
anchors.margins: Theme.spacingS
text: warningTooltip.warningText
font.pixelSize: Theme.fontSizeSmall
color: Theme.surfaceText
width: 300
width: Math.min(250, implicitWidth)
wrapMode: Text.WordWrap
}