dotfiles/.config/waybar/scripts/fan_speed.sh.v1
2025-05-28 18:27:10 +02:00

50 lines
1.5 KiB
Bash
Executable File

#!/usr/bin/env bash
STATE_FILE="/tmp/fancycle_state"
HWMON_PATH="/sys/class/hwmon/hwmon3" # Ajusta según tu caso
# Si no existe el archivo de estado, inícialo en 1 (fan1)
if [[ ! -f "$STATE_FILE" ]]; then
echo 1 > "$STATE_FILE"
fi
# Si el script es invocado con el argumento "next", incrementa el estado
if [[ "$1" == "next" ]]; then
current_state=$(cat "$STATE_FILE")
# Suponiendo que tienes 3 ventiladores y quieres ciclar 1->2->3->1->...
next_state=$(( (current_state % 3) + 1 ))
echo "$next_state" > "$STATE_FILE"
fi
# Lee el estado actual
state=$(cat "$STATE_FILE")
# Lee la info real de tus ventiladores
fan1_label=$(cat "$HWMON_PATH/fan1_label" 2>/dev/null)
fan1_speed=$(cat "$HWMON_PATH/fan1_input" 2>/dev/null)
fan2_label=$(cat "$HWMON_PATH/fan2_label" 2>/dev/null)
fan2_speed=$(cat "$HWMON_PATH/fan2_input" 2>/dev/null)
fan3_label=$(cat "$HWMON_PATH/fan3_label" 2>/dev/null)
fan3_speed=$(cat "$HWMON_PATH/fan3_input" 2>/dev/null)
# Prepara el tooltip con TODOS los ventiladores
tooltip="${fan1_label}: ${fan1_speed} RPM
${fan2_label}: ${fan2_speed} RPM
${fan3_label}: ${fan3_speed} RPM"
# Según el "estado", decide cuál ventilador se muestra en "text"
case "$state" in
1) text="${fan1_label}: ${fan1_speed} RPM" ;;
2) text="${fan2_label}: ${fan2_speed} RPM" ;;
3) text="${fan3_label}: ${fan3_speed} RPM" ;;
esac
# Usa jq para generar JSON
jq -c -n \
--arg text "$text" \
--arg tooltip "$tooltip" \
'{ "text": $text, "tooltip": $tooltip }'