utils/sh/status

89 lines
1.7 KiB
Plaintext
Raw Normal View History

2022-06-18 20:28:59 +00:00
#!/bin/sh
power_prefix="/sys/class/power_supply/"
[ -d "${power_prefix}sbs-20-000b" ] && bat="sbs-20-000b"
2022-06-18 20:28:59 +00:00
[ "$(ps aux | grep pulseaudio | wc -l)" -eq 2 ] && ss="pulse" || ss="alsa"
mod_bspwm () {
used_desk=$(bspc query -D -d .occupied --names | tr '\n' ' ')
current_desk=$(bspc query -D -d .focused --names)
final_string=""
current_printed=0
for i in $used_desk; do
[ "$i" = "$current_desk" ] && \
final_string=${final_string}"*$i " && \
current_printed=1 || \
final_string=${final_string}"$i "
done
[ $current_printed -eq 0 ] &&
final_string=${final_string}"*$current_desk "
printf "%s" "$final_string"
}
mod_power () {
tr -d '\n' < /sys/class/power_supply/$bat/capacity
}
mod_vol () {
[ "$ss" = "pulse" ] && pactl list sinks | awk -F' ' '$1 == "Volume:" {print "pv" $5}'
[ "$ss" = "alsa" ] && amixer | grep '^ Front' | awk -F'[' '{ORS = ""; print "av" substr($2, 1, 3); exit}'
}
mod_hello () {
printf "HJi there"
}
update_mod () {
output="$(eval "mod_$1")"
eval "output_$1=\"$output\""
}
get_mod () {
eval "printf '%s' \${output_$1}"
}
echo_bar () {
left="$(get_mod "power") $(get_mod "vol") $(get_mod "bspwm")"
right="$(get_mod "hello")"
width="$(tput cols)"
rightwidth="${#right}"
# print left side
printf "\033[2J\033[H%s" "$left"
# print right side
printf "\033[1;%if%s" "$(($width - $rightwidth + 1))" "$right"
}
register_sigs () {
trap "update_mod vol" USR2
trap "update_mod bspwm" USR1
}
update_all () {
update_mod power
update_mod vol
update_mod bspwm
}
tput civis
register_sigs
update_mod power
update_mod vol
update_mod hello
update_mod bspwm
i=0
while true; do
sleep 1
[ "$i" -eq 29 ] && update_all && i=0
echo_bar
done