mirror of
https://github.com/dcarrillo/dotfiles.git
synced 2024-12-22 23:08:01 +00:00
[polybar] Add custom network usage module
This commit is contained in:
parent
c132945659
commit
0441ed825e
@ -67,7 +67,7 @@ font-4 = NotoSans-Regular:size=18:weight=bold;-7
|
|||||||
|
|
||||||
modules-left = spotify
|
modules-left = spotify
|
||||||
modules-center = custom_date
|
modules-center = custom_date
|
||||||
modules-right = updates cpu_bar memory_bar vpn wireless wired alsa_bar
|
modules-right = updates cpu_bar memory_bar vpn network_usage alsa_bar
|
||||||
|
|
||||||
cursor-click = pointer
|
cursor-click = pointer
|
||||||
cursor-scroll = ns-resize
|
cursor-scroll = ns-resize
|
||||||
|
@ -80,14 +80,19 @@ label-connected = "%{A1:/usr/bin/bash ~/.config/polybar/scripts/nmcli_manager:}%
|
|||||||
# keep speed meter for other devices
|
# keep speed meter for other devices
|
||||||
label-disconnected = "%{A1:/usr/bin/bash ~/.config/polybar/scripts/nmcli_manager:}%downspeed:8% %upspeed:8% %{A-}"
|
label-disconnected = "%{A1:/usr/bin/bash ~/.config/polybar/scripts/nmcli_manager:}%downspeed:8% %upspeed:8% %{A-}"
|
||||||
|
|
||||||
[module/vpn]
|
[module/network_usage]
|
||||||
|
type = custom/script
|
||||||
|
exec = ~/.config/polybar/scripts/network_usage
|
||||||
|
click-left = /usr/bin/bash ~/.config/polybar/scripts/nmcli_manager &
|
||||||
|
double-click-left = /usr/bin/bash ~/.config/polybar/scripts/nmcli_manager &
|
||||||
|
tail = true
|
||||||
|
|
||||||
|
[module/vpn]
|
||||||
type = custom/script
|
type = custom/script
|
||||||
exec = ~/.config/polybar/scripts/check_vpn
|
exec = ~/.config/polybar/scripts/check_vpn
|
||||||
interval = 5
|
interval = 5
|
||||||
|
|
||||||
[module/spotify]
|
[module/spotify]
|
||||||
|
|
||||||
type = custom/script
|
type = custom/script
|
||||||
exec = ~/.config/polybar/scripts/spotify.py
|
exec = ~/.config/polybar/scripts/spotify.py
|
||||||
interval = 5
|
interval = 5
|
||||||
@ -107,7 +112,6 @@ time-alt = %H:%M:%S
|
|||||||
label = %{F#f5a70a}%{T4}%time%%{F-}%{T-} | %date%
|
label = %{F#f5a70a}%{T4}%time%%{F-}%{T-} | %date%
|
||||||
|
|
||||||
[module/custom_date]
|
[module/custom_date]
|
||||||
|
|
||||||
type = custom/script
|
type = custom/script
|
||||||
exec = ~/.config/polybar/scripts/custom_date
|
exec = ~/.config/polybar/scripts/custom_date
|
||||||
interval = 1
|
interval = 1
|
||||||
|
60
.config/polybar/scripts/network_usage
Executable file
60
.config/polybar/scripts/network_usage
Executable file
@ -0,0 +1,60 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
COUNTER_FILE=/dev/shm/polybar_network_usage
|
||||||
|
REFRESH=2
|
||||||
|
|
||||||
|
get_icon_by_device()
|
||||||
|
{
|
||||||
|
device=$1
|
||||||
|
|
||||||
|
device_type=$(nmcli -t device status | grep -E -m 1 "^$device" | cut -f 2 -d ":")
|
||||||
|
|
||||||
|
case "$device_type" in
|
||||||
|
ethernet)
|
||||||
|
icon=""
|
||||||
|
;;
|
||||||
|
wifi)
|
||||||
|
ssid=$(nmcli -t device status | grep -E -m 1 "^$device" | cut -f 4 -d ":")
|
||||||
|
icon=" $ssid"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
icon=""
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
echo $icon
|
||||||
|
}
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
default_device=$(ip route list | grep -Fm 1 default | cut -d " " -f 5)
|
||||||
|
icon=$(get_icon_by_device "$default_device")
|
||||||
|
now=$(date +%s)
|
||||||
|
counter_age=$(stat --format %Z $COUNTER_FILE 2>/dev/null)
|
||||||
|
|
||||||
|
if [ -f $COUNTER_FILE ] && [ $((now-counter_age)) -lt $((REFRESH+1)) ]; then
|
||||||
|
last_value_in=$(cut -f 1 -d " " $COUNTER_FILE)
|
||||||
|
last_value_out=$(cut -f 2 -d " " $COUNTER_FILE)
|
||||||
|
fi
|
||||||
|
|
||||||
|
current_values=$(awk -v dev="${default_device}:" '{
|
||||||
|
if ($1 == dev) print $2,$10
|
||||||
|
}' < /proc/net/dev)
|
||||||
|
|
||||||
|
current_bytes_in=$(echo "$current_values" | cut -f 1 -d " ")
|
||||||
|
current_bytes_out=$(echo "$current_values" | cut -f 2 -d " ")
|
||||||
|
|
||||||
|
if [ -n "$last_value_in" ]; then
|
||||||
|
bits_in=$((((current_bytes_in-last_value_in) / REFRESH) * 8))
|
||||||
|
bits_out=$((((current_bytes_out-last_value_out) / REFRESH) * 8))
|
||||||
|
|
||||||
|
output=$(numfmt --to iec --format "%8.2f" -z "$bits_in" "$bits_out" 2>/dev/null)
|
||||||
|
echo "$icon $output"
|
||||||
|
else
|
||||||
|
echo "$icon -- --"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$current_values">$COUNTER_FILE
|
||||||
|
unset last_value
|
||||||
|
|
||||||
|
sleep $REFRESH
|
||||||
|
done
|
Loading…
Reference in New Issue
Block a user