Proof Portal
Omarchy
ProbeLabs65 findings · 95 requirementsA 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.
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
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
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
- Let the battery run down while the laptop is suspended (or otherwise off) until it powers off completely.
- Plug in the charger and boot.
- 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