118 lines
2.7 KiB
Bash
Executable File
118 lines
2.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
function scrypto() {
|
|
local c
|
|
|
|
c="$(crypto 2> /dev/null)" && echo "$c" > crypto
|
|
}
|
|
|
|
function scpu() {
|
|
echo " $(awk '{print $1}' /proc/loadavg)" > cpu
|
|
}
|
|
|
|
function smemory() {
|
|
echo " $(free -h | awk '/^Mem:/{print $3}')" > memory
|
|
}
|
|
|
|
function sbat() {
|
|
local cap; cap="$(cat /sys/class/power_supply/BAT0/capacity)"
|
|
|
|
if grep -qv Discharging /sys/class/power_supply/BAT0/status; then
|
|
echo " $cap%"
|
|
else
|
|
echo " $cap%"
|
|
fi > bat
|
|
}
|
|
|
|
function svol() {
|
|
local st v vol=('' ' ') mut=('🔇' ' ') m
|
|
|
|
mapfile -t st <<< "$(wpctl status | sed -n 's/.*\*.*\[vol: \(.*\)]/\1/p')"
|
|
if [ -z "${st[0]}" ]; then
|
|
return > vol
|
|
fi
|
|
for i in "${!vol[@]}"; do
|
|
read -r v m <<< "${st[$i]}"
|
|
if [ -n "$m" ]; then
|
|
echo -n "${mut[$i]}"
|
|
else
|
|
echo -n "${vol[$i]} $((10#${v/./}))"
|
|
fi
|
|
done > vol
|
|
}
|
|
|
|
function snet() {
|
|
local dev j ssid sig
|
|
|
|
dev="$(ip route | grep -oP 'default.*dev\s+\K[^\s]+')"
|
|
j="$(networkctl status "$dev" --json=short)"
|
|
case "$(jq -r .Type <<< "$j")" in
|
|
ether)
|
|
echo "🌐 $dev"
|
|
;;
|
|
wlan)
|
|
ssid="$(jq -r .SSID <<< "$j")"
|
|
sig="$(awk "/$dev/{printf \"%.0f\", \$3}" /proc/net/wireless)"
|
|
if [ "$sig" -gt 56 ]; then echo "▂▄▆█ $ssid"
|
|
elif [ "$sig" -gt 38 ]; then echo "▂▄▆_ $ssid"
|
|
elif [ "$sig" -gt 21 ]; then echo "▂▄__ $ssid"
|
|
elif [ "$sig" -gt 3 ]; then echo "▂___ $ssid"
|
|
else echo "____ $ssid"
|
|
fi
|
|
;;
|
|
*)
|
|
echo '⚠'
|
|
;;
|
|
esac > net
|
|
}
|
|
|
|
function svpn() {
|
|
local v; v="$(ip -br link show type wireguard | awk '{print $1}')"
|
|
|
|
if [ -n "$v" ]; then
|
|
echo " 🔒 $v"
|
|
fi > vpn
|
|
}
|
|
|
|
function stime() {
|
|
# shellcheck disable=SC2238
|
|
TZ=Asia/Makassar date '+%a %m-%d %R %Z' > time
|
|
}
|
|
|
|
function display() {
|
|
for f in *; do
|
|
local - "$f"="$(cat "$f")"
|
|
done
|
|
# shellcheck disable=SC2128,SC2154
|
|
xsetroot -name "$crypto | $cpu | $memory | $vol | $net$vpn | $bat | $time"
|
|
}
|
|
|
|
# SIGNALING
|
|
# trap '<function>;display;wait' 'RTMIN+n'
|
|
trap 'svol;display;wait' 'RTMIN+0'
|
|
trap 'snet;display;wait' 'RTMIN+1'
|
|
trap 'svpn;display;wait' 'RTMIN+2'
|
|
# to update it from external commands
|
|
## kill -m "$(cat "$XDG_CACHE_HOME/pidofbar")"
|
|
# where m = 34 + n
|
|
|
|
mkdir -p "$XDG_RUNTIME_DIR/sbar" && cd "$XDG_RUNTIME_DIR/sbar" || exit 1
|
|
echo "$$" > pid
|
|
|
|
(while :; do
|
|
scrypto
|
|
sleep $((300 - 10#$(date '+%S') % 300)) & wait
|
|
done &)
|
|
|
|
while true; do
|
|
scpu
|
|
smemory
|
|
svol
|
|
snet
|
|
svpn
|
|
sbat
|
|
stime
|
|
display
|
|
sleep $((5 - 10#$(date '+%S') % 5)) & wait
|
|
done
|