dotfiles/bin/statusbar
2022-01-03 10:48:25 -08:00

105 lines
2 KiB
Bash
Executable file

#!/bin/bash
# swaymsg -t get_outputs
# LAPTOP="eDP-1"
# EXTERNAL="HDMI-A-1"
LAPTOP="LVDS-1"
EXTERNAL="DP-1"
#DATE=$(while date +'%Y-%m-%d %l:%M:%S %p'; do sleep 1; done)
DATE=$(date +'%Y-%m-%d %k:%M')
BATTERY=$(upower --enumerate|grep battery)
POWER="| $(upower -i $BATTERY|grep percentage|awk '{print $2}')"
BSTATE=$(upower -i $BATTERY|grep state|awk '{print $2}')
# fully-charged 🔌
# charging ⚡
# discharging 🔋
case "$BSTATE" in
fully-charged)
STATE="🔌 |"
;;
charging)
STATE="⚡ |"
;;
discharging)
STATE="🔋 |"
;;
*)
STATE=""
;;
esac
SSHD=$(systemctl list-unit-files|egrep ^sshd?.service|awk '{print $1}')
SSHDSTATUS=$(systemctl is-active $SSHD)
if [[ $SSHDSTATUS == "active" ]];
then
SSHWARN="🐧"
else
SSHWARN=""
fi
if [ -f /var/run/reboot-required ]
then
RBT="⚠️ "
else
RBT=""
fi
LAPSTAT=$(swaymsg -t get_outputs -r|jq --arg DISP "$LAPTOP" '.[] | select(.name==$DISP) | .active')
if [[ $LAPSTAT == "true" ]];
then
L=" 💻"
else
L=""
fi
EXTSTAT=$(swaymsg -t get_outputs -r|jq --arg DISP "$EXTERNAL" '.[] | select(.name==$DISP) | .active')
if [[ $EXTSTAT == "true" ]];
then
E=" 🖥️"
else
E=""
fi
DISPSTAT="$(hostname -s)$E$L"
# weather (https://github.com/chubin/wttr.in)
# add %l for location
if [ -d ~/.cache/thrrgilag ];
then
WCACHE=~/.cache/thrrgilag/wttr
if [ ! -f $WCACHE ];
then
touch $WCACHE
fi
AGE=$(($(date +%s) - $(stat -c '%Y' "$WCACHE")))
if [ $AGE -gt 1800 ] || [ ! -s $WCACHE ];
then
curl -s en.wttr.in/?format="%l+%t+%C+%h+%w+%m" > $WCACHE
fi
WEATHER=$(cat $WCACHE)
else
WEATHER=""
fi
# spotify
MCLASS=$(playerctl metadata --player=spotify --format '{{lc(status)}}')
MICON="🎵"
if [[ $MCLASS == "playing" ]]; then
MINFO=$(playerctl metadata --player=spotify --format '{{artist}} - {{title}}')
if [[ ${#MINFO} > 35 ]];
then
MINFO=$(echo $MINFO | cut -c1-35)"..."
fi
MTEXT=$MINFO" "$MICON" |"
elif [[ $class == "paused" ]];
then
MTEXT=$MICON" (paused) |"
elif [[ $class == "stopped" ]];
then
MTEXT=""
fi
echo "$MTEXT $WEATHER $DISPSTAT $POWER $STATE $DATE | $SSHWARN$RBT"