#!/bin/env sh # INIT printf "$$" > ~/.cache/pidofbar sec=0 # MODULES update_cpu () { cpu=" $(grep -o "^[^ ]*" /proc/loadavg )" } update_memory () { memory=" $(free -h --si | sed -n "2s/\([^ ]* *\)\{2\}\([^ ]*\).*/\2/p")" } update_time () { time="$(date "+[  %a %d %b ] [  %I:%M %P ]")" } update_music () { # music="[ $(sb-music) ] " if [ -z "$(sb-music)" ]; then music="" else music="[ $(sb-music) ]" fi } # update_bat () { # # you might need to change the path depending on your device # read -r bat_status \3]_")" # [ "[]" = "$event" ] && event="" #} # modules that don't update on their own need to be run at the start for getting their initial value # update_vol display () { #printf "%s\n" " $event [$memory $cpu] [$bat] [$backlight] [$vol] $time " xsetroot -name "$music[ $vol ] [ $memory $cpu ] $time " } # SIGNALLING # trap ";display" "RTMIN+n" trap "update_vol;display" "RTMIN" trap "update_music;display" "RTMIN+10" # trap "update_bat;display" "RTMIN+2" # to update it from external commands ## kill -m "$(cat ~/.cache/pidofbar)" # where m = 34 + n while true do sleep 1 & wait && { # to update item ever n seconds with a offset of m ## [ $((sec % n)) -eq m ] && udpate_item [ $((sec % 5 )) -eq 0 ] && update_time # update time every 5 seconds [ $((sec % 5 )) -eq 0 ] && update_vol # update vol every 5 seconds [ $((sec % 5 )) -eq 0 ] && update_music # update music every 5 seconds [ $((sec % 5)) -eq 0 ] && update_cpu # update cpu every 15 seconds [ $((sec % 5)) -eq 0 ] && update_memory # [ $((sec % 60)) -eq 0 ] && update_bat #[ $((sec % 300)) -eq 1 ] && update_event # how often the display updates ( 5 seconds ) [ $((sec % 5 )) -eq 0 ] && display sec=$((sec + 1)) } done