Proof Portal

Project overview

Omarchy

ProbeLabs65 findings · 95 requirements

A proof layer — requirements, tests and verified fixes — for two of Omarchy's subsystems: the application menu (launcher scripts, QML model, JSONC config, search and selection) and the lock screen (lock scripts, QML, PAM authentication). Scope is deliberately limited to those components of omacom/omarchy; the rest of the distribution is not covered.

Inbox
ReportR-1601GitHub issuePublicDecided· Out of scope

Low battery notification can fire on boot after resuming from a suspend that drained the battery (Quickshell rewrite)

Reported by LorenGrz · filed Aug 21, 2026 · open at source

Decided: Out of scope — decided by agents · verified 4 days ago.

At a glance

1 · What is claimed?
Only the report text below — no validator has restated it as checkable claims yet.
2 · What does it affect?
AreaOutside the audited area· Decided by agents · verified
3 · Is it reproducible?
No validation has been run yet.
4 · What remains unclear?
  • Not validated yet: no claims, no reproducer.
5 · What happens next?
Decided by agents and verified by a second, independent agent — see the decision.

Original report

Low battery notification can fire on boot after resuming from a suspend that drained the battery (Quickshell rewrite)revision 1 · captured 2026-09-28 21:29 UTC via poll

System details

Lenovo V15 G3 ABA, Omarchy dev (4.0.0-1), quickshell-git 0.3.0.r20.g28771c7-1, Linux 7.1.8-arch1-3 -

What's wrong?

After the laptop powers off because the battery ran out during suspend, the next boot can still show the "Time to recharge! Battery is down to X%" critical notification — even though the machine is now plugged in and charging.

What was expected

No low-battery warning once the charger is connected and the battery is charging.

Likely cause

In /usr/share/omarchy/shell/plugins/services/battery/Service.qml, checkBattery() runs on a Timer with triggeredOnStart: true, so it evaluates battery state the instant Quickshell starts — before UPower has necessarily synced the real AC/charging state over DBus. If the very first read still reflects "discharging" at ≤10% (the state the battery was in right before the machine died), shouldWarnLowBattery() in BatteryModel.js fires the warning immediately, regardless of the charger actually being connected by then.

This is the same class of bug as two previously closed issues from the older bash/systemd-timer implementation:

  • #2886 "False low battery notification on boot"
  • #2968 "recharge battery notification appears at startup even with enough battery"

Both were closed months ago, but the battery-notification logic has since been rewritten to Quickshell/QML (Service.qml + BatteryModel.js), and the new code reintroduces the same startup race between the immediate check and UPower's DBus state settling

Steps to reproduce

  1. Let the battery run down while the laptop is suspended (or otherwise off) until it powers off completely.
  2. Plug in the charger and boot.
  3. Observe whether the "Time to recharge!" notification appears despite the device already charging.

This is intermittent (depends on how fast UPower reports the real state vs. the shell's first check), so it may not reproduce on every boot.

View raw text
### System details

Lenovo V15 G3 ABA, Omarchy dev (4.0.0-1), quickshell-git 0.3.0.r20.g28771c7-1,  Linux 7.1.8-arch1-3 - 

### What's wrong?

After the laptop powers off because the battery ran out during suspend, the next boot can still show the "Time to recharge! Battery is down to X%" critical notification — even though the machine is now plugged in and charging.

## What was expected

No low-battery warning once the charger is connected and the battery is charging.

## Likely cause

In `/usr/share/omarchy/shell/plugins/services/battery/Service.qml`, `checkBattery()` runs on a `Timer` with `triggeredOnStart: true`, so it evaluates battery state the instant Quickshell starts — before UPower has necessarily synced the real AC/charging state over DBus. If the very first read still reflects "discharging" at ≤10% (the state the battery was in right before the machine died), `shouldWarnLowBattery()` in `BatteryModel.js` fires the warning immediately, regardless of the charger actually being connected by then.

This is the same class of bug as two previously closed issues from the older bash/systemd-timer implementation:

- #2886 "False low battery notification on boot"
- #2968 "recharge battery notification appears at startup even with enough battery"

Both were closed months ago, but the battery-notification logic has since been rewritten to Quickshell/QML (`Service.qml` + `BatteryModel.js`), and the new code reintroduces the same startup race between the immediate check and UPower's DBus state settling

## Steps to reproduce

1. Let the battery run down while the laptop is suspended (or otherwise off) until it powers off completely.
2. Plug in the charger and boot.
3. Observe whether the "Time to recharge!" notification appears despite the device already charging.

This is intermittent (depends on how fast UPower reports the real state vs. the shell's first check), so it may not reproduce on every boot.

Validation

Not checked yet. A validator will restate this report as checkable claims, map it to the project's requirements and write a reproducer that the proof engine runs.

Linked

Not linked to any known issue, other report or change yet.

Decision

Decisions are recorded by our staff — or, where this project allows it, by agents: checked by a second, independent agent, or by a single agent where the project's policy says so. Any decision reached so far is shown below.

  • Out of scopeDecided by agents · verified · 2026-10-09 08:18 UTC