summaryrefslogtreecommitdiff
path: root/services/NetworkUsage.qml
diff options
context:
space:
mode:
authorlittleblack111 <littleblack11111@gmail.com>2025-07-12 23:21:58 +0800
committerlittleblack111 <littleblack11111@gmail.com>2025-07-12 23:21:58 +0800
commit1c259d7878c00592916dc6acdb6e22771b22bbf1 (patch)
treee78c1513b184a0863e54e83f7365b110ea0301e8 /services/NetworkUsage.qml
parentf2056f05b4649d49f9322d5fcea011a51bda2dfe (diff)
finish organize
Diffstat (limited to 'services/NetworkUsage.qml')
-rw-r--r--services/NetworkUsage.qml68
1 files changed, 68 insertions, 0 deletions
diff --git a/services/NetworkUsage.qml b/services/NetworkUsage.qml
new file mode 100644
index 0000000..844a5a5
--- /dev/null
+++ b/services/NetworkUsage.qml
@@ -0,0 +1,68 @@
+pragma Singleton
+// pragma ComponentBehavior: Bound
+
+import Quickshell
+import Quickshell.Io
+import QtQuick
+import "../utils/networkUsage.js" as Network
+import qs.config
+
+Singleton {
+ property int up: 0
+ property string upUnit: ""
+ property int down: 0
+ property string downUnit: ""
+
+ property string __iface: ""
+ property var __prev: ({
+ rx: 0,
+ tx: 0
+ })
+
+ Timer {
+ interval: General.resourceUpdateInterval * 1000
+ running: true
+ repeat: true
+ onTriggered: update()
+ }
+
+ function update() {
+ __iface = Network.defaultInterface(getRouteProcess.stdout.text);
+ const cur = Network.getRxTxBytes(getNetDevProcess.stdout.text, __iface);
+ const sec = General.resourceUpdateInterval;
+ const rawUp = (cur.tx - __prev.tx) / sec;
+ const rawDown = (cur.rx - __prev.rx) / sec;
+
+ up = Network.formatSize(rawUp, false);
+ upUnit = Network.formatSize(rawUp, true);
+ down = Network.formatSize(rawDown, false);
+ downUnit = Network.formatSize(rawDown, true);
+
+ __prev = cur;
+ getRouteProcess.running = true;
+ getNetDevProcess.running = true;
+ }
+
+ Process {
+ id: getRouteProcess
+ running: true
+ command: ["ip", "route"]
+ stdout: StdioCollector {}
+ }
+
+ Process {
+ id: getNetDevProcess
+ running: true
+ command: ["cat", "/proc/net/dev"]
+ stdout: StdioCollector {}
+ }
+
+ Component.onCompleted: {
+ getRouteProcess.running = true;
+ getNetDevProcess.running = true;
+ if (getRouteProcess.stdout.text)
+ __iface = Network.defaultInterface(getRouteProcess.stdout.text);
+ if (getNetDevProcess.stdout.text)
+ __prev = Network.getRxTxBytes(getNetDevProcess.stdout.text, __iface);
+ }
+}