From 3462bcc46ecf74f576ea4397f16492c16bd75b10 Mon Sep 17 00:00:00 2001 From: Nippy Date: Fri, 8 May 2026 19:50:49 +0200 Subject: raveos update --- .../dms/Modules/DankBar/Widgets/NetworkMonitor.qml | 147 +++++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 raveos-hyprland-theme/theme-data/dms/Modules/DankBar/Widgets/NetworkMonitor.qml (limited to 'raveos-hyprland-theme/theme-data/dms/Modules/DankBar/Widgets/NetworkMonitor.qml') diff --git a/raveos-hyprland-theme/theme-data/dms/Modules/DankBar/Widgets/NetworkMonitor.qml b/raveos-hyprland-theme/theme-data/dms/Modules/DankBar/Widgets/NetworkMonitor.qml new file mode 100644 index 0000000..b7d8436 --- /dev/null +++ b/raveos-hyprland-theme/theme-data/dms/Modules/DankBar/Widgets/NetworkMonitor.qml @@ -0,0 +1,147 @@ +import QtQuick +import QtQuick.Controls +import qs.Common +import qs.Modules.Plugins +import qs.Modules.ProcessList +import qs.Services +import qs.Widgets + +BasePill { + id: root + + function formatNetworkSpeed(bytesPerSec) { + if (bytesPerSec < 1024) { + return bytesPerSec.toFixed(0) + " B/s" + } else if (bytesPerSec < 1024 * 1024) { + return (bytesPerSec / 1024).toFixed(1) + " KB/s" + } else if (bytesPerSec < 1024 * 1024 * 1024) { + return (bytesPerSec / (1024 * 1024)).toFixed(1) + " MB/s" + } else { + return (bytesPerSec / (1024 * 1024 * 1024)).toFixed(1) + " GB/s" + } + } + + Component.onCompleted: { + DgopService.addRef(["network"]) + } + Component.onDestruction: { + DgopService.removeRef(["network"]) + } + + content: Component { + Item { + implicitWidth: root.isVerticalOrientation ? (root.widgetThickness - root.horizontalPadding * 2) : contentRow.implicitWidth + implicitHeight: root.isVerticalOrientation ? contentColumn.implicitHeight : (root.widgetThickness - root.horizontalPadding * 2) + + Column { + id: contentColumn + anchors.centerIn: parent + spacing: 2 + visible: root.isVerticalOrientation + + DankIcon { + name: "network_check" + size: Theme.barIconSize(root.barThickness, undefined, root.barConfig?.maximizeWidgetIcons, root.barConfig?.iconScale) + color: Theme.widgetTextColor + anchors.horizontalCenter: parent.horizontalCenter + } + + StyledText { + text: { + const rate = DgopService.networkRxRate + if (rate < 1024) return rate.toFixed(0) + if (rate < 1024 * 1024) return (rate / 1024).toFixed(0) + "K" + return (rate / (1024 * 1024)).toFixed(0) + "M" + } + font.pixelSize: Theme.barTextSize(root.barThickness, root.barConfig?.fontScale, root.barConfig?.maximizeWidgetText) + color: Theme.info + anchors.horizontalCenter: parent.horizontalCenter + } + + StyledText { + text: { + const rate = DgopService.networkTxRate + if (rate < 1024) return rate.toFixed(0) + if (rate < 1024 * 1024) return (rate / 1024).toFixed(0) + "K" + return (rate / (1024 * 1024)).toFixed(0) + "M" + } + font.pixelSize: Theme.barTextSize(root.barThickness, root.barConfig?.fontScale, root.barConfig?.maximizeWidgetText) + color: Theme.error + anchors.horizontalCenter: parent.horizontalCenter + } + } + + Row { + id: contentRow + anchors.centerIn: parent + spacing: Theme.spacingS + visible: !root.isVerticalOrientation + + DankIcon { + name: "network_check" + size: Theme.barIconSize(root.barThickness, undefined, root.barConfig?.maximizeWidgetIcons, root.barConfig?.iconScale) + color: Theme.widgetTextColor + anchors.verticalCenter: parent.verticalCenter + } + + Row { + anchors.verticalCenter: parent.verticalCenter + spacing: 4 + + StyledText { + text: "↓" + font.pixelSize: Theme.barTextSize(root.barThickness, root.barConfig?.fontScale, root.barConfig?.maximizeWidgetText) + color: Theme.info + } + + StyledText { + text: DgopService.networkRxRate > 0 ? root.formatNetworkSpeed(DgopService.networkRxRate) : "0 B/s" + font.pixelSize: Theme.barTextSize(root.barThickness, root.barConfig?.fontScale, root.barConfig?.maximizeWidgetText) + color: Theme.widgetTextColor + anchors.verticalCenter: parent.verticalCenter + horizontalAlignment: Text.AlignLeft + elide: Text.ElideNone + wrapMode: Text.NoWrap + + StyledTextMetrics { + id: rxBaseline + font.pixelSize: Theme.barTextSize(root.barThickness, root.barConfig?.fontScale, root.barConfig?.maximizeWidgetText) + text: "88.8 MB/s" + } + + width: Math.max(rxBaseline.width, paintedWidth) + } + } + + Row { + anchors.verticalCenter: parent.verticalCenter + spacing: 4 + + StyledText { + text: "↑" + font.pixelSize: Theme.barTextSize(root.barThickness, root.barConfig?.fontScale, root.barConfig?.maximizeWidgetText) + color: Theme.error + } + + StyledText { + text: DgopService.networkTxRate > 0 ? root.formatNetworkSpeed(DgopService.networkTxRate) : "0 B/s" + font.pixelSize: Theme.barTextSize(root.barThickness, root.barConfig?.fontScale, root.barConfig?.maximizeWidgetText) + color: Theme.widgetTextColor + anchors.verticalCenter: parent.verticalCenter + horizontalAlignment: Text.AlignLeft + elide: Text.ElideNone + wrapMode: Text.NoWrap + + StyledTextMetrics { + id: txBaseline + font.pixelSize: Theme.barTextSize(root.barThickness, root.barConfig?.fontScale, root.barConfig?.maximizeWidgetText) + text: "88.8 MB/s" + } + + width: Math.max(txBaseline.width, paintedWidth) + } + } + } + } + } +} -- cgit v1.3