67 lines
1.6 KiB
Bash
Executable file
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 |"
|