From c8c0d8c2b013252014047de508ff6a50ed234b9b Mon Sep 17 00:00:00 2001 From: Alexander Bocken Date: Tue, 7 Jul 2020 10:55:06 +0200 Subject: [PATCH] added network traffic statusbar tool --- .local/bin/statusbar/nettraf | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100755 .local/bin/statusbar/nettraf diff --git a/.local/bin/statusbar/nettraf b/.local/bin/statusbar/nettraf new file mode 100755 index 0000000..ef0e78c --- /dev/null +++ b/.local/bin/statusbar/nettraf @@ -0,0 +1,34 @@ +#!/bin/sh + +# Module showing network traffic. Shows how much data has been received (RX) or +# transmitted (TX) since the previous time this script ran. So if run every +# second, gives network traffic per second. + +case $BLOCK_BUTTON in + 3) notify-send "🌐 Network traffic module" "🔻: Traffic received +🔺: Traffic transmitted" ;; + 6) "$TERMINAL" -e "$EDITOR" "$0" ;; +esac + +update() { + sum=0 + for arg; do + read -r i < "$arg" + sum=$(( sum + i )) + done + cache=${XDG_CACHE_HOME:-$HOME/.cache}/${1##*/} + [ -f "$cache" ] && read -r old < "$cache" || old=0 + printf %d\\n "$sum" > "$cache" + printf %d\\n $(( sum - old )) +} + +lasttime=${XDG_CACHE_HOME:-$HOME/.cache}/nettraf_time +[ -f "$lasttime" ] && read -r previoustime < "$lasttime" || previoustime=0 +rx=$(update /sys/class/net/[ew]*/statistics/rx_bytes) +tx=$(update /sys/class/net/[ew]*/statistics/tx_bytes) +timedifference=$(( "$(date +'%s')" - "$previoustime" )) +rx_avg=$(( "$rx" / "$timedifference" )) +tx_avg=$(( "$tx" / "$timedifference" )) + +printf "⬇%4sB/s|⬆%4sB/s\\n" $(numfmt --to=iec $rx_avg) $(numfmt --to=iec $tx_avg) +date +'%s' > $lasttime