Compare commits

..

4 Commits

Author SHA1 Message Date
funman300 370b4aa096 fan-profile: drop redundant 2>/dev/null on mapping function call
map_profile_to_strategy never writes to stderr — the suppression was
silencing nothing real and would mislead a future reader.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-01 11:33:50 -07:00
funman300 9ff1190549 fan-profile: render auto mode and reconcile fw-fanctrl on poll
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-01 11:29:56 -07:00
funman300 cc164dfa50 fan-profile: route 'auto' menu choice through state file
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-01 11:24:58 -07:00
funman300 b04357de87 fan-profile: add state path and profile→strategy mapping (unused yet)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-01 11:05:14 -07:00
+39 -5
View File
@@ -1,17 +1,51 @@
#!/bin/bash
STATE_FILE="${XDG_STATE_HOME:-$HOME/.local/state}/fan-profile-auto"
map_profile_to_strategy() {
case "$1" in
power-saver) echo lazy ;;
balanced) echo medium ;;
performance) echo agile ;;
*) return 1 ;;
esac
}
if [ "$1" = "--menu" ]; then
CHOICE=$(fw-fanctrl print list 2>/dev/null \
| grep "^-" \
| sed 's/^- //' \
STRATS=$(fw-fanctrl print list 2>/dev/null | grep "^-" | sed 's/^- //')
CHOICE=$(printf 'auto\n%s\n' "$STRATS" \
| wofi --dmenu \
--prompt "Fan Strategy:" \
--width 260 \
--height 300 \
--height 320 \
--hide-scroll \
--no-actions \
--insensitive)
[ -n "$CHOICE" ] && fw-fanctrl use "$CHOICE" && pkill -RTMIN+9 waybar
[ -z "$CHOICE" ] && exit
if [ "$CHOICE" = "auto" ]; then
mkdir -p "$(dirname "$STATE_FILE")"
touch "$STATE_FILE"
PROFILE=$(powerprofilesctl get 2>/dev/null) \
&& MAPPED=$(map_profile_to_strategy "$PROFILE") \
&& fw-fanctrl use "$MAPPED"
else
rm -f "$STATE_FILE"
fw-fanctrl use "$CHOICE"
fi
pkill -RTMIN+9 waybar
exit
fi
if [ -f "$STATE_FILE" ]; then
PROFILE=$(powerprofilesctl get 2>/dev/null)
MAPPED=$(map_profile_to_strategy "$PROFILE")
if [ -n "$MAPPED" ]; then
ACTIVE=$(fw-fanctrl print 2>/dev/null | awk -F"'" '/^Strategy:/{print $2}')
[ "$ACTIVE" != "$MAPPED" ] && fw-fanctrl use "$MAPPED" >/dev/null 2>&1
printf '{"text": "󰈐 auto", "tooltip": "Auto fan strategy\\nProfile: %s → %s\\nClick to change", "class": "auto"}\n' "$PROFILE" "$MAPPED"
else
printf '{"text": "󰈐 auto (?)", "tooltip": "Auto: power-profiles-daemon unreachable or unknown profile\\nClick to change", "class": "auto"}\n'
fi
exit
fi