sindre-0.1: examples/fan
#!/bin/sh
gui() {
code=$(cat <<EOF
dial->changed(from, to) { gomanual() }
stdin->line(line) { gotlevel = 1; }
stdin->eof() { if (gotlevel) { gomanual() } else { goauto() } }
function gomanual() { print "level", dial.value; label.label = "Fan strength"; auto = 0; }
function goauto() { print "level auto"; label.label = "Automatic"; auto = 1; }
<Space> { if (auto) { gomanual() } else { goauto() } }
EOF
)
$(dirname "$0")/dial --max 7 -e "$code"
}
if ! [ -w /proc/acpi/ibm/fan ]; then
echo "Cannot write to /proc/acpi/ibm/fan - check that you have write permissions (and that this is a ThinkPad)."
exit 1
fi
cat /proc/acpi/ibm/fan | grep '^level:.*[0-7]' | sed 's/level:[^0-9]*//' | gui \
| while read line; do
echo $line > /proc/acpi/ibm/fan
done