aboutsummaryrefslogtreecommitdiff
path: root/scripts/dot-local/bin/batctl
blob: d6fcaa1c832e352c6831387b8eb77e7ddd7217ec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#!/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