#!/bin/bash
#function get_bytes {
#interface=$(ip route get 8.8.8.8 2>/dev/null| awk '{print $5}')
#line=$(grep $interface /proc/net/dev | cut -d ':' -f 2 | awk '{print "received_bytes="$1, "transmitted_bytes="$9}')
#eval $line
#now=$(date +%s%N)
#}
#
## Function which calculates the speed using actual and old byte number.
## Speed is shown in KByte per second when greater or equal than 1 KByte per second.
## This function should be called each second.
#
#function get_velocity {
#value=$1
#old_value=$2
#now=$3
#}

testweather() { 
[ "$(stat -c %y "/tmp/weatherreport" 2>/dev/null | cut -d' ' -f1)" != "$(date '+%Y-%m-%d')" ] && ping -q -c 1 1.1.1.1 >/dev/null && curl -s "wttr.in/$location" > "/tmp/weatherreport" && notify-send "🌞 Weather" "New weather forecast for today."

printf "%s" "$(sed '16q;d' "/tmp/weatherreport" | grep -wo "[0-9]*%" | sort -n | sed -e '$!d' | sed -e "s/^/☔ /g" | tr -d '\n')" && sed '13q;d' "/tmp/weatherreport" | grep -o "m\\(-\\)*[0-9]\\+" | sort -n -t 'm' -k 2n | sed -e 1b -e '$!d' | tr '\n|m' ' ' | awk '{print " ❄️",$1 "°","🌞",$2 "°"}'
}


print_volume() {
[ "$(pulsemixer --get-mute)" = "1" ] && printf "" && exit
vol=$(pulsemixer --get-volume | awk '{print $1}')
printf "%s%%\\n" " $vol"
}

print_wifi() 
{	
#	  ESSID="`iw dev wlan0 link | grep SSID| sed -r 's/SSID://' | sed -e 's/^[ \t]*//'`"
#	  if test -z "$ESSID"
#	  then
#		echo -e ""
#	  else
#		echo -e " $ESSID"
#	fi

[ "$(cat /sys/class/net/w*/operstate)" = 'down' ] && wifiicon="📡"

[ ! -n "${wifiicon+var}" ] && wifiicon=$(grep "^\s*w" /proc/net/wireless | awk '{ print "", int($3 * 100 / 70) "%" }')

printf "%s %s" "$wifiicon" "$(cat /sys/class/net/e*/operstate | sed "s/down//;s/up//")"

}

print_temp(){
	echo -e " $(sensors | awk '/Core 0/ {print $3}') +$(nvidia-smi -q -d temperature | grep -i "GPU Current" |sed -r 's/GPU Current Temp            ://'| sed -r 's/ C//' |sed -e 's/^[ \t]*//').0°C"
}

print_date(){
	echo -e " $(date +"%m-%e %H:%M")"
}

print_mail(){
	RESULT=$(echo "$(du -a ~/.mailbox/*/inbox/new/* 2>/dev/null | sed -n '$=')$(cat /tmp/imapsyncicon_$USER 2>/dev/null)")
	if [ -z $RESULT ]; then
        	echo "0"
	else
        	echo "$(du -a ~/.mailbox/*/inbox/new/* 2>/dev/null | sed -n '$=')$(cat /tmp/imapsyncicon_$USER 2>/dev/null)"
	fi
}

batLevel() {
	# Find the battery level
	hash acpi || return 0
	onl="$(acpi -V | grep "on-line")"
	charge="$(cat /sys/class/power_supply/BAT*/capacity)"

	# Determine battery glyph by percentage range
	if [[ -z $onl && ${charge} -gt 80 ]]; then
		echo -e " ${charge}%"
	elif [[ -z $onl && ${charge} -le 80 && ${charge} -gt 60 ]]; then
		echo -e " ${charge}%"
	elif [[ -z $onl && ${charge} -le 60 && ${charge} -gt 40 ]]; then
		echo -e " ${charge}%"
	elif [[ -z $onl && ${charge} -le 40 && ${charge} -gt 20 ]]; then
		echo -e " ${charge}%"
	elif [[ -z $onl && ${charge} -le 20 ]]; then
		echo -e " ${charge}%"
	# If charging, use animated glyph
	else
		echo -e ""
	fi
}

usageData() {
	# Calculate CPU percentage
	read cpu a b c pi rest < /proc/stat
	pt=$((a+b+c+pi))
	sleep 0.1
	read cpu a b c i rest < /proc/stat
	t=$((a+b+c+i))
	cpuUse=$((100*( (t-pt) - (i-pi) ) / (t-pt) ))

	# Find RAM use
	# As "A/B"
	ramUseA=$(free -m -h | grep Mem | awk '{print $3"/"$2}')
	# As percentage
	ramPer=$(free -m | grep Mem | awk '{print 100*($3/$2)}')
	ramUseB="${ramPer%.*}"

	echo -e " $cpuUse%  $ramUseB%"
}

echo AUTOSTART
feh --bg-fill $HOME/.wall.jpg &
xset s off -dpms&
xset b off&
xset s off&
xset -dpms&
redshift -l 52.2327:18.3036 -t 6500:3200&
nm-applet --sm-disable&
/usr/local/bin/st -e "tmux-my"&
"/mnt/mega/Systems/Gentoo/apps/KeePass.AppImage"&
megasync&
dunst -config&
/usr/bin/ibus-daemon -d&
sh /home/yorune/.xsessionrc&
keepassxc& 
transmission-daemon&
teamviewer&
getforecast&

while true
do

	# Get new transmitted, received byte number values and current time
	get_bytes

	# Calculates speeds
	vel_recv=$(get_velocity $received_bytes $old_received_bytes $now)
	vel_trans=$(get_velocity $transmitted_bytes $old_transmitted_bytes $now)

	xsetroot -name " $(print_temp) | $(usageData) | $(testweather) | $(print_wifi) | $(batLevel) | $(print_volume) | $(print_date)"

	# Update old values to perform new calculations
	old_received_bytes=$received_bytes
	old_transmitted_bytes=$transmitted_bytes
	old_time=$now

	sleep 2

done