aboutsummaryrefslogtreecommitdiff
path: root/scripts/dot-local/bin/batctl
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/dot-local/bin/batctl')
-rwxr-xr-xscripts/dot-local/bin/batctl61
1 files changed, 61 insertions, 0 deletions
diff --git a/scripts/dot-local/bin/batctl b/scripts/dot-local/bin/batctl
new file mode 100755
index 0000000..d6fcaa1
--- /dev/null
+++ b/scripts/dot-local/bin/batctl
@@ -0,0 +1,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