dotfiles/symlinks/bin/peripheral-waybar

114 lines
2.5 KiB
Plaintext
Raw Permalink Normal View History

2024-11-05 07:06:20 +00:00
#!/usr/bin/env bash
set -e
. ~/.local/opt/script_utils/echo.sh
usage () {
if [ ! -z "$1" ]; then
echo -e "Unknown peripheral: $1 \n"
fi
echo "Basic peripheral info component for waybar."
echo -e "\nUsage: peripheral-waybar PERIPHERAL"
echo "Options:"
echo " -h --help - prints this help message (if one of commands is passed, prints help message for that command)"
echo " -v --verbose - enables verbose logging"
echo " -c --check - checks if component should be displayed"
echo " -n --notify - show a notification with full info"
if [ ! -z "$1" ]; then
exit 1
fi
}
POSITIONAL=()
HELP=0
VERBOSE=0
CHECK=0
NOTIFY=0
while [[ $# -gt 0 ]]; do
key="$1"
case $key in
-h|--help)
HELP=1
shift # past argument
;;
-v|--verbose)
VERBOSE=1
shift # past argument
;;
-c|--check)
CHECK=1
shift # past argument
;;
-n|--notify)
NOTIFY=1
shift # past argument
;;
*) # unknown option
POSITIONAL+=("$1") # save it in an array for later
shift # past argument
;;
esac
done
PERIPHERAL="${POSITIONAL[0]}"
echov "Detected peripheral: $PERIPHERAL"
if [ $HELP -eq 1 ]; then
usage $PERIPHERAL
exit 0
fi
mouse_waybar () {
LAST_UPDATE_FILE=$MY_CONFIG_CACHE_DIR/peripheral-waybar-mouse-last-update
LAST_STATUS_FILE=$MY_CONFIG_CACHE_DIR/peripheral-waybar-mouse-last-status
if [ ! -f "$LAST_UPDATE_FILE" ]; then
UPG_DATE=0
else
UPG_DATE=$(cat $LAST_UPDATE_FILE)
fi
if [ -z "$UPG_DATE" ]; then
UPG_DATE=0
fi
CURR_DATE=$( date +%s )
DIFF=$(( CURR_DATE - UPG_DATE ))
if (( DIFF > 32 )); then
BATTERY_LEVEL=$(rivalcfg --battery-level)
echo $CURR_DATE > $LAST_UPDATE_FILE
echo $BATTERY_LEVEL > $LAST_STATUS_FILE
else
BATTERY_LEVEL=$(cat $LAST_STATUS_FILE)
fi
if [ $CHECK -eq 1 ]; then
if [[ $BATTERY_LEVEL == *"Unable"* ]]; then
exit 1
else
exit 0
fi
fi
if [ $NOTIFY -eq 1 ]; then
notify-send "Mouse battery level" "$BATTERY_LEVEL"
exit 0
fi
TOOLTIP=$BATTERY_LEVEL
PERCENTAGE=$(echo $BATTERY_LEVEL | cut -d ']' -f2 | tr -d ' ' | tr -d '%')
CLASS="default"
if (( PERCENTAGE < 30 )); then
CLASS="warning"
fi
if (( PERCENTAGE < 15 )); then
CLASS="critical"
fi
echo "{\"text\":\"$PERCENTAGE%\", \"tooltip\":\"$TOOLTIP\", \"class\":\"$CLASS\", \"alt\":\"$CLASS\", \"percentage\":\"$PERCENTAGE\"}"
}
case $PERIPHERAL in
mouse)
mouse_waybar
;;
*)
usage $PERIPHERAL; exit 1 ;;
esac