dotfiles/suckless/config/dwm/statusbar

136 lines
2.8 KiB
Bash
Executable File

#!/bin/sh
# symbola
#export ICON_RCD=🎥
#export ICON_MSC=♬
#export ICON_MTD=🔉
#export ICON_VOL=🔊
#export ICON_NIC=🖧
#export ICON_WFI=📡
#export ICON_MEM=📈
#export ICON_TMP=🌡
#export ICON_PLG=🔌
#export ICON_BAT=🔋
#export ICON_DAT=⏲
# nerdfont
export ICON_RCD='辶'
export ICON_MSC=''
export ICON_MTD='ﱝ '
export ICON_VOL=' '
export ICON_NIC=' '
export ICON_WFI=' '
export ICON_MEM=' '
export ICON_TMP=''
export ICON_PLG=' '
export ICON_BA0=' '
export ICON_BA1=' '
export ICON_BA2=' '
export ICON_BA3=' '
export ICON_BA4=' '
export ICON_DAT=' '
MPD=$(which mpc && echo yes)
statusbar() {
echo -n " "
# recording
[ -f /tmp/recording.pid ] && echo -n "$ICON_RCD "
# mpd
[ -n "$MPD" ] && mpc | awk '
NR == 1 {
SONG = $0
}
NR == 2 {
PLAYING = $1
}
END {
if (PLAYING == "[playing]")
printf "%s %s ", ENVIRON["ICON_MSC"], SONG
}
'
# volume
amixer get Master | awk 'END {
ICO = $NF == "[off]" ? ENVIRON["ICON_MTD"] : ENVIRON["ICON_VOL"]
match($0, / \[([0-9]+%)\] /, m)
VOL = m[1]
printf "%s %s ", ICO, VOL
}'
# network
for NIC in /sys/class/net/e*; do
grep -q 'up' $NIC/operstate && awk '{
printf "%s %s ",ENVIRON["ICON_NIC"],($0 >= 1000 ? $0 / 1000 "G" : $0 "M")
}' $NIC/speed
done
# wifi
awk 'NR > 2 {
printf "%s %i%% ", ENVIRON["ICON_WFI"], $3*100/70
}' /proc/net/wireless
# cpu temperature
awk '{
printf "%s %i°C ", ENVIRON["ICON_TMP"], $0/1000
}' /sys/class/thermal/thermal_zone0/temp
# memory usage
free | awk 'NR == 2 {
printf "%s %i%% ", ENVIRON["ICON_MEM"], $3/$2*100
}'
# battery
if [ -f /sys/class/power_supply/BAT0/capacity ]; then
grep -q '1' /sys/class/power_supply/AC/online && export PLUGGED=yes
awk '{
if (ENVIRON["PLUGGED"] == "yes")
ICON=ENVIRON["ICON_PLG"]
else if ($0 > 90)
ICON=ENVIRON["ICON_BA4"]
else if ($0 > 75)
ICON=ENVIRON["ICON_BA3"]
else if ($0 > 50)
ICON=ENVIRON["ICON_BA2"]
else if ($0 > 25)
ICON=ENVIRON["ICON_BA1"]
else
ICON=ENVIRON["ICON_BA0"]
printf "%s %s%% ", ICON, $0
}' /sys/class/power_supply/BAT0/capacity
fi
# datetime
echo -n "$ICON_DAT $(date +'%m-%d %H:%M %a') "
}
start() {
while :; do
! pgrep slock 1>/dev/null && xsetroot -name "$(statusbar)"
sleep 1
done
}
restart() {
FP=$(readlink -f $0)
pkill -f "$FP loop"
$FP loop &
}
case "$1" in
loop)
start
;;
dryrun)
statusbar
;;
*)
restart
;;
esac