Power Options

A Linux power manager with a GUI. It makes laptops last longer on battery.

category
# systems
status
published
active
2024-07 → 2026-07 · 262 commits
made
◧ started by hand then kept building with agents · started by hand, continued with agents
numbers
● 381 stars (live)
stack
rust · gtk · webkit · toml · systemd
links
github ↗site ↗
timeline
···············

What it does

Power Options makes Linux laptops last longer on battery. It replaces TLP, auto-cpufreq and cpupower-gui, and it has a GUI.

When you install it, it examines the hardware and makes a set of profiles for that machine. Most users never change them. Users who want more control can edit every setting.

Power Options GTK frontend
fig. 01 · the GTK frontend · 2024

Why I built it

The other tools had two problems. Most of them have no GUI, only config files. And most of them do not control each CPU core separately. Per-core control was the first reason for this project.

The other tools also give you two profiles: battery and AC. Power Options lets you have as many profiles as you want:

  • You pick one profile for battery and one profile for AC.
  • A temporary override keeps a different profile until you remove the override.
  • A persistent override stays after a reboot.

What it controls

The settings come from the power management guides of the Arch and Gentoo wikis, and from the other tools:

  • Sleep: suspend and screen timeout.
  • CPU, and each CPU core separately.
  • Screen, radios (Bluetooth, Wi-Fi, NFC) and network. The network settings work only with Intel cards that use iwlwifi.
  • ASPM, PCI, USB and SATA power management.
  • Kernel parameters, firmware settings, audio and GPU.
  • Intel RAPL power limits.

How it works

A daemon runs as root and writes the settings to the system. The frontends talk to it over D-Bus. The configuration is TOML, so you can also use the daemon without a GUI.

There are two frontends. The GTK frontend (relm4) is light and native. The webview frontend (dioxus) has more settings, for advanced users. A tray applet switches profiles.

Power Options webview frontend
fig. 02 · the webview frontend · 2024

Release

I made the first commit on 2024-07-12. Version 1.0.0 came out on 2024-09-14. The last release is 1.2.3, on 2025-12-08.

The repo has 382 stars. Two other people contributed code. I also answered the support questions of the users.

The CI workflow took 67 runs before it worked.

The packages are on the AUR, in stable and -git versions, for each frontend. The Debian, Fedora and Arch packages come from DistroPack, which I built later.

What I learned

Rust UI frameworks that use macros are hard to use. Inside a macro there is no code completion, no auto-format, and no clear location for compile errors. Rust is good for the daemon. I do not think that it is a good choice for a UI yet.