#charge #battery #laptop #persist #charge-limit

app batlimit

Set battery charge limit on supported laptops on Linux with CLI

7 releases (4 breaking)

new 0.9.1 Jan 13, 2025
0.9.0 Jan 6, 2025
0.8.0 Jan 5, 2025
0.7.0 Dec 18, 2024
0.5.1 Dec 12, 2024

#743 in Command line utilities

Download history 284/week @ 2024-12-10 283/week @ 2024-12-17 185/week @ 2024-12-31 110/week @ 2025-01-07

581 downloads per month

GPL-3.0-or-later

23KB
254 lines

Build Status Dependencies Docs License Downloads

batlimit 0.9.1

Set battery charge limit on supported laptops on Linux with CLI

It is now widely acknowledged that the life span of Li-ion batteries is extended by not charging them to the max. An often recommended battery charge limit is 80.

Features

  • Works with supported laptop (info works with any machine): ASUS, Lenovo (ThinkPad), Dell, LG, Huawei, System76, Fujitsu, MSI, Toshiba and Intel Apple.
  • info: Show battery info (default).
  • limit: Set battery charge limit (needs root privileges), takes percentage as argument.
  • clear: Clear battery charge limit (needs root privileges)
  • persist: Persist the charge limit through creating and enabling systemd services, optionally takes percentage as argument for limit (needs root privileges).
  • unpersist: Unpersist the charge limit by disabling and removing systemd services (needs root privileges).
  • shell: Generate shell completions (bash, elvish, fish, powershell, zsh).
  • Can use abbreviations for the commands, like: batlimit u (unpersisting the limit).

Installation

Download static single-binary

wget https://github.com/pepa65/batlimit/releases/download/0.9.1/batlimit
sudo mv batlimit /usr/local/bin/
sudo chown root:root /usr/local/bin/batlimit
sudo chmod +x /usr/local/bin/batlimit

Using cargo (rust toolchain)

If not installed yet, install a Rust toolchain, see https://www.rust-lang.org/tools/install

Cargo from crates.io

cargo install batlimit --target=x86_64-unknown-linux-musl

Cargo from git

cargo install --git https://github.com/pepa65/batlimit --target=x86_64-unknown-linux-musl

Cargo static build (avoid GLIBC incompatibilities)

git clone https://github.com/pepa65/batlimit
cd batlimit
rustup target add x86_64-unknown-linux-musl
export RUSTFLAGS='-C target-feature=+crt-static'
cargo build --release --target=x86_64-unknown-linux-musl

For smaller binary size: upx --best --lzma target/x86_64-unknown-linux-musl/release/batlimit

Install with cargo-binstall

Even without a full Rust toolchain, rust binaries can be installed with the static binary cargo-binstall:

# Install cargo-binstall for Linux x86_64
# (Other versions are available at https://crates.io/crates/cargo-binstall)
wget github.com/cargo-bins/cargo-binstall/releases/latest/download/cargo-binstall-x86_64-unknown-linux-musl.tgz
tar xf cargo-binstall-x86_64-unknown-linux-musl.tgz
sudo chown root:root cargo-binstall
sudo mv cargo-binstall /usr/local/bin/

Install the musl binary: cargo-binstall batlimit

(Then batlimit will be installed in ~/.cargo/bin/ which will need to be added to PATH!)

Usage

batlimit 0.9.1 - Set battery charge limit on supported laptops on Linux with CLI
Usage: batlimit [COMMAND]
Commands:
  info       Print battery info (default command)
  limit      Set battery charge limit: PERCENT (1..99)
  clear      Clear charge limit
  persist    Persist charge limit with systemd: [PERCENT (1..99)]
  unpersist  Unpersist charge limit: disable and remove systemd services
  shell      Generate completions: SHELL (bash|elvish|fish|powershell|zsh)
  readme     Output the readme file from the repo
  help       Print this message or the help of the given subcommand(s)

Options:
  -h, --help     Print help
  -V, --version  Print version

Commands can be abbreviated up to their first letter.
Root privileges required for: limit & clear, persist & unpersist

Dependencies

~3.5–5MB
~90K SLoC