|
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
# z3bra - (c) wtfpl 2014
|
|
|
|
|
# Fetch infos on your computer, and print them to stdout every second.
|
|
|
|
|
# Also takes content from window manager to build bar
|
|
|
|
|
|
|
|
|
|
# ICONS
|
|
|
|
|
wifi_icon=''
|
|
|
|
|
cpu_icon=''
|
|
|
|
|
ram_icon=''
|
|
|
|
|
speaker_icon=''
|
|
|
|
|
plug_icon=''
|
|
|
|
|
thunderbolt_icon=''
|
|
|
|
|
clock_icon=''
|
|
|
|
|
|
|
|
|
|
clock() {
|
|
|
|
|
date=$(date '+%Y-%m-%d %H:%M')
|
|
|
|
|
echo "%{F#FFFFFFFF}$clock_icon $date%{F#FF6A9FB5}"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
battery() {
|
|
|
|
|
BATC=/sys/class/power_supply/BAT0/capacity
|
|
|
|
|
BATS=/sys/class/power_supply/BAT0/status
|
|
|
|
|
|
|
|
|
|
cap="$(sed -n p $BATC)"
|
|
|
|
|
green_decimal=$((128 + (128 * $cap) / 101))
|
|
|
|
|
red_decimal=$((128 + (128 * (100 - $cap)) / 101))
|
|
|
|
|
red_hex=$(echo "obase=16; $red_decimal" | bc)
|
|
|
|
|
green_hex=$(echo "obase=16; $green_decimal" | bc)
|
|
|
|
|
|
|
|
|
|
test "`cat $BATS`" = "Charging" && echo -n "%{F#FFFFFFFF}$plug_icon " || echo -n "%{F#FFFFFF00}$thunderbolt_icon "
|
|
|
|
|
|
|
|
|
|
echo "%{F#FF${red_hex}${green_hex}80}$cap%%{F#FF6A9FB5}"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
volume() {
|
|
|
|
|
volume=$(amixer -D pulse get Master | grep -P -o '\[[0-9]+%\]')
|
|
|
|
|
echo "%{F#FFC2A366}$speaker_icon $volume%{F#FF6A9FB5}"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
cpuload() {
|
|
|
|
|
LINE=`ps -eo pcpu |grep -vE '^\s*(0.0|%CPU)' |sed -n '1h;$!H;$g;s/\n/ +/gp'`
|
|
|
|
|
cpu=$(bc <<< $LINE)
|
|
|
|
|
echo "%{F#FF94FF70}$cpu_icon $cpu%%{F#FF6A9FB5}"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
memused() {
|
|
|
|
|
mem=$(free -m | head -n 2 | tail -n 1 | awk '{printf("%2.1fG/%0.2gG\n" ,($3/1024),($2/1024))}')
|
|
|
|
|
echo "%{F#FF80E6FF}$ram_icon $mem%{F#FF6A9FB5}"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
wifi() {
|
|
|
|
|
current_wifi=$(nmcli -t --fields NAME con show --active)
|
|
|
|
|
echo "%{F#FFB8D4DC}$wifi_icon $current_wifi%{F#FF6A9FB5} |"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
groups() {
|
|
|
|
|
cur=`xprop -root _NET_CURRENT_DESKTOP | awk '{print $3}'`
|
|
|
|
|
tot=`xprop -root _NET_NUMBER_OF_DESKTOPS | awk '{print $3}'`
|
|
|
|
|
|
|
|
|
|
for w in `seq 0 $((cur - 1))`; do line="${line}="; done
|
|
|
|
|
line="${line}|"
|
|
|
|
|
for w in `seq $((cur + 2)) $tot`; do line="${line}="; done
|
|
|
|
|
echo $line
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
alsamixer='xdotool key super+F10'
|
|
|
|
|
htop='xdotool key super+F9'
|
|
|
|
|
# This loop will fill a buffer with our infos, and output it to stdout.
|
|
|
|
|
function build_status {
|
|
|
|
|
buf="%{r}%{F#FF6A9FB5}"
|
|
|
|
|
buf="${buf} $(wifi)"
|
|
|
|
|
buf="${buf} $(cpuload) |"
|
|
|
|
|
buf="${buf} $(memused) |"
|
|
|
|
|
buf="${buf} $(volume) |"
|
|
|
|
|
buf="${buf} $(battery) |"
|
|
|
|
|
buf="${buf} $(clock)"
|
|
|
|
|
|
|
|
|
|
echo $buf
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
while true; do
|
|
|
|
|
|
|
|
|
|
read -t 0.25 new_wm_content
|
|
|
|
|
if [ -n "$new_wm_content" ]; then
|
|
|
|
|
wm_content="$new_wm_content"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
status_content="$(build_status)"
|
|
|
|
|
combined_content="$wm_content$status_content"
|
|
|
|
|
|
|
|
|
|
echo "$combined_content"
|
|
|
|
|
|
|
|
|
|
sleep 0.1
|
|
|
|
|
done
|