#!/bin/env sh

MEM_FG_C="#CD95D7"
CPU_FG_C="#9EA7D9"
BAT_FG_C="#AED481"
VOL_FG_C="#EEEEEE"
BRG_FG_C="#FFCA28"
DAT_FG_C="#FE8964"
TIM_FG_C="#FE8964"

# 

cpu()
{
	cpu=$(top -bn1 | awk '/Cpu\(s\):/ {print $2 + $4 "%"}')
}

memory()
{
	memory=$(free -m | awk '/^Mem:/ {printf "%.1f", $3/2024}')
}

disk() {
	disk="$(df -h | awk 'NR==2{print $4}')"
}

cdate()
{
	cdate="$(date "+%a %d %b")"
}

ctime()
{
	ctime="$(date "+%I:%M:%S %p")"
}

battery()
{
	# read -r bat_status </sys/class/power_supply/BAT0/status
	read -r bat_capacity </sys/class/power_supply/BAT0/capacity
	battery="$bat_capacity"
}

vol()
{
	vol=$(wpctl get-volume @DEFAULT_AUDIO_SINK@ | awk '{printf "%.0f\n", $2*100}')
}

brightness()
{
	brightness=$(light -G | awk '{print int($1)}')
}

display()
{
	memory_str="^fg($MEM_FG_C) $memory^fg()"
	cpu_str="^fg($CPU_FG_C) $cpu^fg()"
	battery_str="^fg($BAT_FG_C)󰁹$battery^fg()"
	volume_str="^fg($VOL_FG_C)󰋋 $vol^fg()"
	brightness_str="^fg($BRG_FG_C)󰛨 $brightness^fg()"
	date_str="^fg($DAT_FG_C)󰃭 $cdate^fg()"
	time_str="^fg($TIM_FG_C)󰥔 $ctime^fg()"
	
	echo "all status $memory_str $cpu_str $battery_str $volume_str $brightness_str $date_str $time_str" >"$FIFO"
}

printf "%s" "$$" > "$XDG_RUNTIME_DIR/status_pid"
FIFO="$XDG_RUNTIME_DIR/sandbar"
[ -e "$FIFO" ] || mkfifo "$FIFO"
sec=0

while true; do
	sleep 1 &
	wait && {
		[ $((sec % 1)) -eq 0 ] && memory
		[ $((sec % 1)) -eq 0 ] && cpu
		# [ $((sec % 1)) -eq 0 ] && disk
		[ $((sec % 60)) -eq 0 ] && battery
		[ $((sec % 1)) -eq 0 ] && vol
		[ $((sec % 1)) -eq 0 ] && brightness
		[ $((sec % 1)) -eq 0 ] && cdate
		[ $((sec % 1)) -eq 0 ] && ctime

		[ $((sec % 1)) -eq 0 ] && display

		sec=$((sec + 1))
	}
done
