#!/bin/sh THRESH_START_PATH="/sys/class/power_supply/BAT0/charge_control_start_threshold" THRESH_STOP_PATH="/sys/class/power_supply/BAT0/charge_control_end_threshold" TLP_DROP_IN="/etc/tlp.d/05-bat-thresh.conf" DOCKED_START=75 DOCKED_STOP=87 DEFAULT_START=96 DEFAULT_STOP=100 usage() { cat < "$THRESH_STOP_PATH" || { echo "error: failed to write stop threshold."; exit 1; } printf "%s" "$new_start" > "$THRESH_START_PATH" || { echo "error: failed to write start threshold."; exit 1; } ;; docked) printf "%s" "$new_start" > "$THRESH_START_PATH" || { echo "error: failed to write start threshold."; exit 1; } printf "%s" "$new_stop" > "$THRESH_STOP_PATH" || { echo "error: failed to write stop threshold."; exit 1; } ;; esac echo "switched to $target_mode mode — start: ${new_start}% stop: ${new_stop}%" # write or remove drop-in so thresholds survive a reboot; no sed fragility if [ -d "/etc/tlp.d" ]; then case "$target_mode" in docked) printf '# managed by bat-thresh-toggle — do not edit by hand\nSTART_CHARGE_THRESH_BAT0=%s\nSTOP_CHARGE_THRESH_BAT0=%s\n' \ "$new_start" "$new_stop" > "$TLP_DROP_IN" \ && echo "${TLP_DROP_IN} written" \ || echo "error: failed to write ${TLP_DROP_IN}." ;; default) if [ -f "$TLP_DROP_IN" ]; then rm "$TLP_DROP_IN" \ && echo "${TLP_DROP_IN} removed — TLP will use its built-in defaults after reboot." \ || echo "error: failed to remove ${TLP_DROP_IN}." fi ;; esac else echo "note: /etc/tlp.d not found - sysfs write is not persistent across reboots." fi