unix-config/.config/scripts/util/taskbar.sh
2025-07-13 13:37:42 +10:00

67 lines
1.6 KiB
Bash
Executable file

#!/bin/sh
NOW=$(date +%s)
debounce () {
local -n VAR_REFERENCE=$1 # Funky Bash Pass-by-reference here!
VAR_NAME="$1"
DEBOUNCE_TIME="$2"
FUNCTION=$3
FALLBACK=$4
if [ ! -f "/tmp/debounce-$VAR_NAME" ]; then
VAR_REFERENCE="$FUNCTION"
echo "$(date +%s)" > "/tmp/debounce-$VAR_NAME"
else
LAST_CHECK=$(cat "/tmp/debounce-$VAR_NAME")
if [ $(($NOW - $LAST_CHECK)) -gt $DEBOUNCE_TIME ]; then
VAR_REFERENCE="$FUNCTION"
echo "$(date +%s)" > "/tmp/debounce-$VAR_NAME"
else
VAR_REFERENCE="$FALLBACK"
fi
fi
}
get_mouse_text () {
MOUSE_DETAILS=$(rivalcfg --battery-level)
MOUSE_STATUS=$(echo $MOUSE_DETAILS | cut -d' ' -f1)
MOUSE_BATTERY=$(echo $MOUSE_DETAILS | cut -d']' -f2 | tr -d '[:space:]')
if [ "$MOUSE_STATUS" != 'Discharging' ] && [ "$MOUSE_STATUS" != 'Charging' ]; then
cat /tmp/last-mouse-level
else
if [ $MOUSE_STATUS == 'Discharging' ]; then
MOUSE_STATUS_EMOJI='🐁'
else
MOUSE_STATUS_EMOJI='⚡'
fi
echo "$MOUSE_STATUS_EMOJI $MOUSE_BATTERY" > /tmp/last-mouse-level
cat /tmp/last-mouse-level
fi
}
get_monero_text () {
MONERO_DETAILS=$(monerod status | grep "Height")
MONERO_PERCENT=$(echo $MONERO_DETAILS | cut -d" " -f3 | tr -d "()")
if [ -n "$MONERO_DETAILS" ]; then
echo "🟢 $MONERO_PERCENT" > /tmp/last-monero-value
else
echo "🔴" > /tmp/last-monero-value
fi
cat /tmp/last-monero-value
}
debounce MOUSE_STRING 3600 \
"$(get_mouse_text)" \
"$(cat /tmp/last-mouse-level || get_mouse_text)";
debounce MONERO_STRING 60 \
"$(get_monero_text)" \
"$(cat /tmp/last-monero-value || get_monero_text)";
echo "| $MOUSE_STRING | $MONERO_STRING |"