aboutsummaryrefslogtreecommitdiff
path: root/bin/status-bar
blob: 1a537f648100d98530fdcc25f8c1433b6dcd861d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#!/bin/sh
timeout=5

_sys_memory() {
		free -m | awk '/^Mem/{print $6;exit 0;}'
}

_sys_uptime() {
uptime | sed -re's/^.*up[ 	]+//g' -e's/^([^,]*),.*/\1/g' -e's/^([^ 	]+)[ 	]*(.).*/\1\2/g'
}

wireless_info() {
	_if="$1"

	printf "WiFi: %s %s %s %s" \
	"$_if" \
	"$(nmcli c | awk "/$_if/"'{print $1}')" \
	"$(ip -4 addr show dev "$_if" | awk '/inet /{print $2}')" \
	"$(awk "/^$_if/"'{print $4+0}' /proc/net/wireless)dbm"
}

eth_info() {
	_if="$1"

	printf "Eth: %s %s %s" \
	"$_if" \
	"$(ip -4 addr show dev "$_if" | awk '/inet /{print $2}')" \
	""

	# "$(ifconfig "$_if" | grep -oE '[0-9]+baseT')"
}

network_info() {
	# default_if="$(netstat -rnf inet | awk '/^default/{print $8}')"
	default_if="$(ip route | awk '/^default/{print $5;exit 0;}')"

	if [ -z "$default_if" ]  ; then
		echo "No conn"
	elif [ -d "/sys/class/net/$default_if/wireless" ] ; then
		wireless_info "$default_if"
	else
		eth_info "$default_if"
	fi
}


batt_status() {
	sudo tlp-stat -b | awk 'BEGIN{ORS=" "} /\/status/{print $3}/^Charge/{print $3}';
}

cpu_freq() {
# cat /proc/cpuinfo  | grep '^cpu MHz' | awk '{print $4}' | sort -nr | sed 1q
# Average out the CPU frequency
# cat /proc/cpuinfo  | awk 'BEGIN{n=0;mhz=0;}/^cpu MHz/{mhz += $4;n++;}END{print mhz/n;}'
# Max/min
# cat /proc/cpuinfo \
# 	| grep '^cpu MHz' \
# 	| sort -rnk 4,4 \
# 	| sed -n -e 1p -e '$p' \
# 	| awk '{printf("%0.2f ", $4/1000)} END{print ""}'
# Just show the first four CPUs
grep '^cpu MHz' /proc/cpuinfo \
	| awk '{printf("%0.1f\n", $4/1000)}' \
		| sort \
		| uniq \
		| sort -rn \
		| sed 4q \
		| tr '\n' ' '
}

tlp_status() {
tlp-stat -s | sed -n 's/^Mode *= //p'
}

status_line() {
echo \
"Temp: $(sensors | sed -n 's/^temp1:[\t ]*//p' | sed 's/ *//g' | sed 1q | tr -d '\n')|"\
"Fan: $(sensors | sed -n 's/^fan1:[\t ]*//p')|"\
"Cpu Freq: $(cpu_freq)mhz|"\
"Batt: $(batt_status)|"\
"$(network_info)|"\
"Free Mem: $(_sys_memory)|"\
"Uptime: $(_sys_uptime)|"\
"$(date '+%m.%d.%Y %H:%M:%S')"
}

x230_status_line() {
echo \
"Fan: $(sensors | sed -n 's/^fan1:[\t ]*//p')|"\
"Batt: $(batt_status | sed -e's/  *$//g')|"\
"$(network_info)|"\
"$(date '+%m.%d.%Y %H:%M:%S')"
}

dell7590_status_line() {
echo \
"Batt: $(batt_status | sed -e's/  *$//g')|"\
"$(network_info)|"\
"$(date '+%m.%d.%Y %H:%M:%S')"
}

t495_status_line() {
echo \
"CPU: $(cpu_freq)|"\
"TLP: $(tlp_status)|"\
"Batt: $(batt_status | sed -e's/  *$//g')|"\
"$(network_info)|"\
"$(date '+%m.%d.%Y %H:%M:%S')"
}

_type="$1"; shift
while true ; do
xsetroot -name "$("${_type}_status_line" "$@")"
sleep "$timeout"
done