Battery & Power

Battery level, and exactly what is draining it

palupdated 2026-09-29SystemComes with pal󱔓Menu bar: Battery

Open in pal

Comes with pal, so a new install already has it; the button finds it in pal again if you removed it. This page can't see what your pal has installed.

Battery & Power: Now: the level and six hours of draw on the left; the warning, where the watts go and what uses them on the right
Now: the level and six hours of draw on the left; the warning, where the watts go and what uses them on the right
Battery & Power: Today: what used the battery in watt-hours with each one's share, the screen and the rest explained
Today: what used the battery in watt-hours with each one's share, the screen and the rest explained
Battery & Power: 7 days: where the week's watt-hours went, the costliest process under the cursor a key away from Processes
7 days: where the week's watt-hours went, the costliest process under the cursor a key away from Processes
1 of 3

What it does

Battery level and time left, and with the optional power watcher, where the power goes: the draw over the last hours, what uses power now and why, and what used the battery today, this week and ever.

  • The level, the power source and the time left in one sentence (Drawing 12 W · 1 h 48 min left)
  • With the power watcher: six hours of draw as a chart, with charging stretches and the charge level over it
  • What uses power now: the split between apps, chip and screen, and each process with its watts and why
  • What used the battery today, over 7 days and all time, in watt-hours and as a share
  • Battery health, cycle count and temperature at a glance
  • A bar item that stays hidden while all is well and shows up for a low battery or a heavy draw

Palettes 1

  • Battery & Powerpowerview

    The level, six hours of draw and the battery's health on the left; on the right, tabs for what uses power now and what used the battery today, this week and ever.

    • ↵Find the process in Processes (on a bookkeeping line: Battery settings)
    • ⇥Next tab (shift+tab, left, right, h, l; 1 to 4 pick one)
    • ↓Next row (up, j, k)
    • ⌘CCopy the name
    • SOpen Battery settings
    • ⌘RRefresh

Actions

  • Find in ProcessesThe process under the cursor, typed into the Processes palette (to quit it from there).↵
  • Next / previous tabNow, Today, 7 days, All time; also 1 to 4.⇥
  • Copy name⌘C
  • Open Battery settingsS
  • RefreshRe-reads the watcher and its windows now.⌘R

Settings

Extension, [extensions.power]

power_state_file
~/.local/share/power/state.json path

Optional state.json written by the `power` watcher. It adds measured draw, warnings and top consumers; a stale file is ignored.

Defaults shown. Change them in pal's settings window or in the config file.

The README

Everything Battery & Power does, key by key, from the extension's own README.md

Battery & Power

power reads the laptop battery from the operating system (pmset -g batt on macOS, upower on Linux), then adds what Cagdas's power watcher knows when it is installed: ~/.local/share/power/state.json (the live verdict), samples.jsonl beside it (a sample every 30 s) and the power CLI, which apportions watt-hours over a window (power blame 1d). The watcher stays the source of truth for measured watts, its rules and process attribution; this extension reads and presents it (data.ts) and draws it (view.ts).

The palette, Battery & Power, is one view:

  • On the left, the level with one plain sentence (Drawing 12 W · 1 h 48 min left, Charging at 38 W · full in 40 min), six hours of draw as a chart (the stretches on the charger shaded, the charge level dashed), today's watt-hours as a share of a full charge, and health, cycles and temperature as tiles.
  • On the right, four tabs. Now: the watcher's warning in words, the draw split between the apps and chip and the screen and the rest (on the charger only the chip is measurable, and it says so), and the processes using power with the watts their share comes to and why they cost (CPU, wakeups, disk, network). Today, 7 days, All time: what used the battery in watt-hours with each one's share; the watcher's bookkeeping lines are named plainly (Screen & the rest, Short-lived processes) and explained under the cursor. A window spent on the charger has no draw to apportion, so it ranks by activity instead.

Enter finds the process under the cursor in Processes (to quit it there), tab/1–4 switch tabs, cmd+c copies the name, s opens Battery settings. While open it re-reads every 10 s.

The bar item is absent while the battery is healthy. On battery it appears below 50% by default, on external power at 20% or lower, or whenever the watcher reports a warning or a draw of 15 W; show = "always" under [bar.items."power/battery"] keeps it on the strip, muted (docs/config.md). Hover shows the popover: the level, the last hour's draw, the warning, the top four processes and today's watt-hours. A click opens the palette.

Without the watcher only the level and time left are known, and both views say what installing it adds. A machine without a battery keeps the item hidden.

bun run extensions/power/fixture.ts writes the gallery fixtures the store screenshots are taken from (a made-up watcher, nothing of the owner's).