#!/usr/bin/env bash set -eo pipefail DEFAULT_START_THRESHOLD=75 DEFAULT_STOP_THRESHOLD=85 BAT_DIR=/sys/class/power_supply/BAT0 START_FILE="$BAT_DIR/charge_start_threshold" STOP_FILE="$BAT_DIR/charge_stop_threshold" setcharge() { start=$1 stop=$2 cur_start=$(cat "$START_FILE") cur_stop=$(cat "$STOP_FILE") if ((cur_stop > stop)); then echo "$start" | sudo tee "$START_FILE" >/dev/null echo "$stop" | sudo tee "$STOP_FILE" >/dev/null else echo "$stop" | sudo tee "$STOP_FILE" >/dev/null echo "$start" | sudo tee "$START_FILE" >/dev/null fi echo "Charging set:" echo " start=$start" echo " stop=$stop" } cmd=$1 shift || true case "$cmd" in show) start=$(cat "$START_FILE") stop=$(cat "$STOP_FILE") echo "Current thresholds:" echo " start=$start" echo " stop=$stop" ;; set) start=${1:-$DEFAULT_START_THRESHOLD} stop=${2:-$DEFAULT_STOP_THRESHOLD} setcharge "$start" "$stop" ;; fullcharge) start=95 stop=100 echo "Fullcharge. Keep AC on!" setcharge "$start" "$stop" ;; *) echo "Usage: $0 {show|set [start=$DEFAULT_START_THRESHOLD] [stop=$DEFAULT_STOP_THRESHOLD]|fullcharge}" >&2 exit 1 ;; esac