53 lines
2.2 KiB
Bash
Executable File
53 lines
2.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Helper: map percent to icon and color
|
|
get_icon() {
|
|
local percent=$1
|
|
if ! [[ "$percent" =~ ^[0-9]+$ ]]; then percent=0; fi
|
|
if [ "$percent" -ge 90 ]; then echo ""; elif [ "$percent" -ge 60 ]; then echo ""; elif [ "$percent" -ge 40 ]; then echo ""; elif [ "$percent" -ge 20 ]; then echo ""; else echo ""; fi
|
|
}
|
|
get_color() {
|
|
local percent=$1
|
|
if ! [[ "$percent" =~ ^[0-9]+$ ]]; then percent=0; fi
|
|
if [ "$percent" -ge 90 ]; then echo "#00ff00"; elif [ "$percent" -ge 60 ]; then echo "#aaff00"; elif [ "$percent" -ge 40 ]; then echo "#ffff00"; elif [ "$percent" -ge 20 ]; then echo "#ff8800"; else echo "#ff0000"; fi
|
|
}
|
|
|
|
KEYBOARD_NAME="G915"
|
|
MOUSE_NAME="G903"
|
|
|
|
# Use actual Unicode icons
|
|
KEYBOARD_ICON=""
|
|
MOUSE_ICON="🖱️"
|
|
|
|
# Parse keyboard info
|
|
kb_line=$(solaar show 2>/dev/null | awk '/G915/ {dev=1} /Battery:/ && dev==1 {print; dev=0}')
|
|
kb_percent=$(echo "$kb_line" | awk '{print $2}' | tr -d '%' | grep -E '^[0-9]+$' || echo "N/A")
|
|
kb_voltage=$(echo "$kb_line" | grep -o '[0-9]*mV' | grep -o '[0-9]*' || echo "N/A")
|
|
kb_status=$(echo "$kb_line" | awk '{print $3}' || echo "N/A")
|
|
|
|
# Parse mouse info, handle offline/unknown
|
|
mouse_line=$(solaar show 2>/dev/null | awk '/G903/ {dev=1} /Battery:/ && dev==1 {print; dev=0}')
|
|
if echo "$mouse_line" | grep -qi "unknown"; then
|
|
mouse_percent="N/A"
|
|
mouse_voltage="N/A"
|
|
mouse_status="offline"
|
|
else
|
|
mouse_percent=$(echo "$mouse_line" | awk '{print $2}' | tr -d '%' | grep -E '^[0-9]+$' || echo "N/A")
|
|
mouse_voltage=$(echo "$mouse_line" | grep -o '[0-9]*mV' | grep -o '[0-9]*' || echo "N/A")
|
|
mouse_status=$(echo "$mouse_line" | awk '{print $3}' || echo "N/A")
|
|
fi
|
|
|
|
kb_icon=$(get_icon "$kb_percent")
|
|
kb_color=$(get_color "$kb_percent")
|
|
kb_tooltip="${KEYBOARD_NAME}: ${kb_percent:-N/A}% @ ${kb_voltage:-N/A}mV (${kb_status:-N/A})"
|
|
|
|
mouse_icon=$(get_icon "$mouse_percent")
|
|
mouse_tooltip="${MOUSE_NAME}: ${mouse_percent:-N/A}% @ ${mouse_voltage:-N/A}mV (${mouse_status:-N/A})"
|
|
|
|
# Escape newlines for JSON
|
|
tooltip=$(echo -e "$kb_tooltip\n$mouse_tooltip" | sed ':a;N;$!ba;s/\n/\\n/g')
|
|
|
|
cat <<EOF
|
|
{"text": "$KEYBOARD_ICON $kb_icon | $MOUSE_ICON $mouse_icon ","tooltip": "$tooltip","class": "logitech-battery","color": "$kb_color"}
|
|
EOF
|