about summary refs log tree commit diff
path: root/scripts/dwm-status
diff options
context:
space:
mode:
authorManuel Palenzuela <manuelpalenzuelamerino@gmail.com>2019-06-10 12:02:41 +0200
committerManuel Palenzuela <manuelpalenzuelamerino@gmail.com>2019-06-10 12:02:41 +0200
commitc9a914e603607dab3d4455efe1ea0d05dbd15832 (patch)
tree9dd93bd6d98ae643caa040775fa620bf7ba54774 /scripts/dwm-status
parentImproved gaps patch (diff)
downloaddwm-c9a914e603607dab3d4455efe1ea0d05dbd15832.tar.gz
dwm-c9a914e603607dab3d4455efe1ea0d05dbd15832.tar.bz2
dwm-c9a914e603607dab3d4455efe1ea0d05dbd15832.zip
Added status bar script
Diffstat (limited to '')
-rwxr-xr-xscripts/dwm-status122
1 files changed, 122 insertions, 0 deletions
diff --git a/scripts/dwm-status b/scripts/dwm-status
new file mode 100755
index 0000000..6ac3219
--- /dev/null
+++ b/scripts/dwm-status
@@ -0,0 +1,122 @@
+#!/bin/bash
+# Screenshot: http://s.natalian.org/2013-08-17/dwm_status.png
+# Network speed stuff stolen from http://linuxclues.blogspot.sg/2009/11/shell-script-show-network-speed.html
+
+# This function parses /proc/net/dev file searching for a line containing $interface data.
+# Within that line, the first and ninth numbers after ':' are respectively the received and transmited bytes.
+function get_bytes {
+# Find active network interface
+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
+
+timediff=$(($now - $old_time))
+velKB=$(echo "1000000000*($value-$old_value)/1024/$timediff" | bc)
+if test "$velKB" -gt 1024
+then
+	echo $(echo "scale=2; $velKB/1024" | bc)MB/s
+else
+	echo ${velKB}KB/s
+fi
+}
+
+# Get initial values
+get_bytes
+old_received_bytes=$received_bytes
+old_transmitted_bytes=$transmitted_bytes
+old_time=$now
+
+print_volume() {
+	volume="$(amixer get Master | tail -n1 | sed -r 's/.*\[(.*)%\].*/\1/')"
+	if test "$volume" -gt 0
+	then
+		echo -e "\uE05D${volume}"
+	else
+		echo -e "Mute"
+	fi
+}
+
+print_wifi() {
+	ip=$(ip route get 8.8.8.8 2>/dev/null|grep -Eo 'src [0-9.]+'|grep -Eo '[0-9.]+')
+
+	if=wlan0
+		while IFS=$': \t' read -r label value
+		do
+			case $label in SSID) SSID=$value
+				;;
+			signal) SIGNAL=$value
+				;;
+		esac
+	done < <(iw "$if" link)
+
+	echo -e "$SSID $SIGNAL $ip"
+}
+
+print_mem(){
+	memfree=$(($(grep -m1 'MemAvailable:' /proc/meminfo | awk '{print $2}') / 1024))
+	echo -e "$memfree"
+}
+
+print_temp(){
+	test -f /sys/class/thermal/thermal_zone0/temp || return 0
+	echo $(head -c 2 /sys/class/thermal/thermal_zone0/temp)C
+}
+
+print_bat(){
+	hash acpi || return 0
+	onl="$(grep "on-line" <(acpi -V))"
+	charge="$(awk '{ sum += $1 } END { print sum }' /sys/class/power_supply/BAT*/capacity)"
+	if test -z "$onl"
+	then
+		# suspend when we close the lid
+		#systemctl --user stop inhibit-lid-sleep-on-battery.service
+		echo -e "${charge}"
+	else
+		# On mains! no need to suspend
+		#systemctl --user start inhibit-lid-sleep-on-battery.service
+		echo -e "${charge}"
+	fi
+}
+
+print_date(){
+	date "+%a %m-%d %T%:::z"
+}
+
+show_record(){
+	test -f /tmp/r2d2 || return
+	rp=$(cat /tmp/r2d2 | awk '{print $2}')
+	size=$(du -h $rp | awk '{print $1}')
+	echo " $size $(basename $rp)"
+}
+
+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_mem) $vel_recv $vel_trans $(print_temp) $(print_wifi) $(print_bat)$(show_record) $(print_date)"
+
+	# Update old values to perform new calculations
+	old_received_bytes=$received_bytes
+	old_transmitted_bytes=$transmitted_bytes
+	old_time=$now
+
+	sleep 1
+
+done