#!/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 } 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& 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) |  $(sh /home/yorune/dwm/weather.sh) | $(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