diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2025-07-12 23:21:58 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2025-07-12 23:21:58 +0800 |
| commit | 1c259d7878c00592916dc6acdb6e22771b22bbf1 (patch) | |
| tree | e78c1513b184a0863e54e83f7365b110ea0301e8 /services/NetworkUsage.qml | |
| parent | f2056f05b4649d49f9322d5fcea011a51bda2dfe (diff) | |
finish organize
Diffstat (limited to 'services/NetworkUsage.qml')
| -rw-r--r-- | services/NetworkUsage.qml | 68 |
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); + } +} |
