-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathawesome-widgets-network.sh
More file actions
executable file
·155 lines (119 loc) · 6.32 KB
/
awesome-widgets-network.sh
File metadata and controls
executable file
·155 lines (119 loc) · 6.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
#!/usr/bin/env bash
## By Davoud Arsalani
## https://github.com/davoudarsalani/scripts
## https://github.com/davoudarsalani/scripts/blob/master/awesome-widgets-network.sh
## https://raw.githubusercontent.com/davoudarsalani/scripts/master/awesome-widgets-network.sh
## https://davoudarsalani.ir
source ~/main/scripts/utils.sh
source ~/main/scripts/utils-calculation.sh
source ~/main/scripts/utils-network.sh
## ⮝ U+2B9D
## ⮟ U+2B9F
## ⮜ U+2B9C
## ⮞ U+2B9E
## ▲ ▼
down_icon='⮟'
up_icon='⮝'
down_icon_diff="<span color=\"${gruvbox_blue_d}\">${down_icon}</span>"
up_icon_diff="<span color=\"${gruvbox_purple_d}\">${up_icon}</span>"
down_icon_total="<span color=\"${gruvbox_gray_d}\">${down_icon}</span>"
up_icon_total="<span color=\"${gruvbox_gray_d}\">${up_icon}</span>"
total_color_low="$gruvbox_gray_d"
total_color_medium="$gruvbox_gray_d"
total_color_high="$gruvbox_purple"
total_color_ultRRRigh="$gruvbox_red"
diff_color_low="$gruvbox_fg2"
diff_color_medium="$gruvbox_fg2"
diff_color_high="$gruvbox_blue"
diff_color_ultRRRigh="$gruvbox_green"
diff_text=''
total_text=''
## connection -----------------------
[ "$eth_conn" == '--' ] && eth_conn='' || eth_conn=" $eth_conn"
[ "$wf_conn" == 'MCI' ] && if_simcard="<span color=\"${gruvbox_orange}\"> SIM</span>"
[ "$wf_state" == 'connected' ] || if_wf_down="<span color=\"${gruvbox_red}\"> WiFi DOWN</span>"
[ "$vpn_info" ] && vpn_conn="<span color=\"${gruvbox_gray_d}\"> ${vpn_conn}</span>"
[ "$(pgrep 'openvpn')" ] && openvpn="<span color=\"${gruvbox_gray_d}\"> OP</span>"
connection_text="${wf_conn}${eth_conn}${if_simcard}${if_wf_down}${openvpn}${vpn_conn}"
## total and diff -----------------------
## https://www.adminsehow.com/2010/03/shell-script-to-show-network-speed/
for adapter in 'wifi' 'ethernet'; {
case "$adapter" in
wifi )
device_name="$wf_devc"
adapter_state="$wf_state"
;;
ethernet )
device_name="$eth_devc"
adapter_state="$eth_state"
;;
esac
[ "$adapter_state" == 'connected' ] || continue
## get total last
down_total_last="$(redis-cli GET "awesome_widget__${adapter}_down")" ## 19410508
up_total_last="$( redis-cli GET "awesome_widget__${adapter}_up")" ## 19410508
##
[ "$down_total_last" ] || down_total_last=0
[ "$up_total_last" ] || up_total_last=0
## get total now
## NOTE do NOT " -> ' in awk
_totals_now="$(\grep "$device_name" /proc/net/dev | awk '{print "down_total_now="$2, "up_total_now="$10}')"
eval "$_totals_now" ## 19410509 789384
## save for our next read
## (in bytes, before converting them)
redis-cli SET "awesome_widget__${adapter}_down" "$down_total_now" || msgn 'ERROR saving down_total_now'
redis-cli SET "awesome_widget__${adapter}_up" "$up_total_now" || msgn 'ERROR saving up_total_now'
## ---
## set total color
if (( down_total_now < "$K" )); then down_total_color="$total_color_low" ## is B
elif (( down_total_now < "$M" )); then down_total_color="$total_color_low" ## is K
elif (( down_total_now < "$M_400" )); then down_total_color="$total_color_low" ## is below 400M
elif (( down_total_now < "$M_700" )); then down_total_color="$total_color_medium" ## is below 700M
elif (( down_total_now < "$G" )); then down_total_color="$total_color_high" ## is below 1G
else down_total_color="$total_color_ultRRRigh" ## is 1G or higher
fi
if (( up_total_now < "$K" )); then up_total_color="$total_color_low" ## is B
elif (( up_total_now < "$M" )); then up_total_color="$total_color_low" ## is K
elif (( up_total_now < "$M_400" )); then up_total_color="$total_color_low" ## is below 400M
elif (( up_total_now < "$M_700" )); then up_total_color="$total_color_medium" ## is below 700M
elif (( up_total_now < "$G" )); then up_total_color="$total_color_high" ## is below 1G
else up_total_color="$total_color_ultRRRigh" ## is 1G or higher
fi
## ---
## convert total
down_total_conv="<span color=\"${down_total_color}\">$(convert_byte "$down_total_now" 1 1)</span>" ## 4.32G
up_total_conv="<span color=\"${up_total_color}\">$(convert_byte "$up_total_now" 1 1)</span>" ## 4.32G
## ---
## calculate diff
## devided by network_refresh_interval
## to get average for 1 second
(( down_diff="(down_total_now - down_total_last) / network_refresh_interval" )) ## 1341440
(( up_diff="(up_total_now - up_total_last) / network_refresh_interval" )) ## 1341440
## ---
## set diff color
if (( down_diff < "$K" )); then down_diff_color="$diff_color_low" ## is B
elif (( down_diff < "$K_400" )); then down_diff_color="$diff_color_low" ## is below 400K
elif (( down_diff < "$K_700" )); then down_diff_color="$diff_color_medium" ## is below 700K
elif (( down_diff < "$M" )); then down_diff_color="$diff_color_high" ## is below 1M
else down_diff_color="$diff_color_ultRRRigh" ## is M or G
fi
if (( up_diff < "$K" )); then up_diff_color="$diff_color_low" ## is B
elif (( up_diff < "$K_400" )); then up_diff_color="$diff_color_low" ## is below 400K
elif (( up_diff < "$K_700" )); then up_diff_color="$diff_color_medium" ## is below 700K
elif (( up_diff < "$M" )); then up_diff_color="$diff_color_high" ## is below 1M
else up_diff_color="$diff_color_ultRRRigh" ## is M or G
fi
## ---
## convert diff
down_diff_conv="<span color=\"${down_diff_color}\">$(convert_byte "$down_diff" 1 1)</span>" ## 1.31M
up_diff_conv="<span color=\"${up_diff_color}\">$(convert_byte "$up_diff" 1 1)</span>" ## 1.31M
## ---
diff_text+=" | ${down_icon_diff} ${down_diff_conv} ${up_icon_diff} ${up_diff_conv}" ## 317K 2.31M
total_text+=" | ${down_icon_total} ${down_total_conv} ${up_icon_total} ${up_total_conv}" ## 4.32G 4.32G
}
## remove leading ' | '
diff_text="${diff_text# | }"
total_text="${total_text# | }"
set_widget 'nw_connection' 'markup' "$connection_text"
set_widget 'nw_down_up' 'markup' "$diff_text"
set_widget 'nw_total' 'markup' "$total_text"