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.
Bluetooth panel widget shows "Turned Off" and cannot be toggled after Bluetooth controller reset / sleep resume
Reported by v3rtx · filed Oct 12, 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
Intel Core Ultra X7 358H, Intel Arc B390 (Panther Lake), Omarchy 4.0.4-1, Quickshell 0.3.1-1
What's wrong?
When the Bluetooth controller resets (for example, on system resume from sleep/suspend or driver reset where the PCIe/USB Bluetooth device reinitializes), the system Bluetooth daemon (bluetoothd) recovers cleanly, and bluetoothctl works normally.
However, in omarchy-shell (Quickshell), Bluetooth.defaultAdapter drops to null and fails to re-bind to the re-registered adapter. This causes the omarchy.bluetooth panel widget to become stuck in a non-functional "Off" state:
- In
Panel.qml,root.adapteris bound toBluetooth.defaultAdapter. - When
adapterisnull,checked: !!root.adapter && root.adapter.enabledevaluates to false, and the status text displays "Turned Off" / disabled opacity. - Clicking the power toggle does nothing because
toggleBluetooth()starts withif (!adapter) return.
Running omarchy restart shell immediately restores functionality, confirming that the system Bluetooth stack is healthy and only the running shell process is stuck with a stale/null adapter reference.
Steps to Reproduce
- Start Omarchy shell with Bluetooth powered on and functioning normally.
- Trigger a Bluetooth controller reset (e.g. wake from sleep/suspend on hardware with Intel CNVi Bluetooth / PCIe driver
btintel_pcieor similar controller reset). - Confirm with
bluetoothctl showoromarchy-bluetooth-power is-onthat Bluetooth is active andPowered: yes. - Open the
omarchy.bluetoothpanel in the bar. - Notice that the power switch shows "off", devices are missing or empty, and clicking the switch silently fails to do anything.
- Run
omarchy restart shell-> Bluetooth panel immediately shows active adapter and devices again.
Relevant Logs (Sanitized)
# Kernel log during wake/reset:
kernel: btintel_pcie 0000:00:14.7: resetting
kernel: btintel_pcie 0000:00:14.7: reset done
kernel: Bluetooth: BT reprobe failed for BDF:0000:00:14.7
kernel: Bluetooth: hci0: Found device firmware: intel/ibt-00a0-01a1-pci.sfi
kernel: Bluetooth: hci0: Firmware loaded in 546658 usecs
kernel: Bluetooth: hci0: Device booted in 45433 usecs
# System state after recovery:
$ bluetoothctl show
Controller XX:XX:XX:XX:XX:XX (public)
Name: host
Alias: host
Powered: yes
Discovering: no
$ omarchy-bluetooth-power is-on
(exit code: 0)
# Running Quickshell instance state:
Bluetooth.defaultAdapter -> null
Bluetooth.adapters.values -> []Potential Root Cause & Mitigation
- D-Bus Adapter Re-Registration: When the controller resets, BlueZ temporarily unregisters
/org/bluez/hci0and registers it again. In a long-running Quickshell process,Quickshell.Bluetoothdoes not re-acquiredefaultAdapterwhen the adapter reappears on D-Bus. - Defensive handling in `omarchy.bluetooth`: In
Panel.qml:
function toggleBluetooth() {
if (!adapter) return
Quickshell.execDetached(["omarchy-bluetooth-power", adapter.enabled ? "off" : "on"])
} Because if (!adapter) return aborts early, the user is unable to toggle or trigger power recovery from the UI when adapter is null. Permitting the helper omarchy-bluetooth-power to run or detecting a missing adapter to prompt/trigger a rescan would prevent the UI from silently deadlocking.
Note: This issue report was generated by the AI assistant (Antigravity).
View raw text
### System details
Intel Core Ultra X7 358H, Intel Arc B390 (Panther Lake), Omarchy 4.0.4-1, Quickshell 0.3.1-1
### What's wrong?
When the Bluetooth controller resets (for example, on system resume from sleep/suspend or driver reset where the PCIe/USB Bluetooth device reinitializes), the system Bluetooth daemon (`bluetoothd`) recovers cleanly, and `bluetoothctl` works normally.
However, in `omarchy-shell` (Quickshell), `Bluetooth.defaultAdapter` drops to `null` and fails to re-bind to the re-registered adapter. This causes the `omarchy.bluetooth` panel widget to become stuck in a non-functional "Off" state:
1. In `Panel.qml`, `root.adapter` is bound to `Bluetooth.defaultAdapter`.
2. When `adapter` is `null`, `checked: !!root.adapter && root.adapter.enabled` evaluates to false, and the status text displays "Turned Off" / disabled opacity.
3. Clicking the power toggle does nothing because `toggleBluetooth()` starts with `if (!adapter) return`.
Running `omarchy restart shell` immediately restores functionality, confirming that the system Bluetooth stack is healthy and only the running shell process is stuck with a stale/null adapter reference.
---
### Steps to Reproduce
1. Start Omarchy shell with Bluetooth powered on and functioning normally.
2. Trigger a Bluetooth controller reset (e.g. wake from sleep/suspend on hardware with Intel CNVi Bluetooth / PCIe driver `btintel_pcie` or similar controller reset).
3. Confirm with `bluetoothctl show` or `omarchy-bluetooth-power is-on` that Bluetooth is active and `Powered: yes`.
4. Open the `omarchy.bluetooth` panel in the bar.
5. Notice that the power switch shows "off", devices are missing or empty, and clicking the switch silently fails to do anything.
6. Run `omarchy restart shell` -> Bluetooth panel immediately shows active adapter and devices again.
---
### Relevant Logs (Sanitized)
```text
# Kernel log during wake/reset:
kernel: btintel_pcie 0000:00:14.7: resetting
kernel: btintel_pcie 0000:00:14.7: reset done
kernel: Bluetooth: BT reprobe failed for BDF:0000:00:14.7
kernel: Bluetooth: hci0: Found device firmware: intel/ibt-00a0-01a1-pci.sfi
kernel: Bluetooth: hci0: Firmware loaded in 546658 usecs
kernel: Bluetooth: hci0: Device booted in 45433 usecs
# System state after recovery:
$ bluetoothctl show
Controller XX:XX:XX:XX:XX:XX (public)
Name: host
Alias: host
Powered: yes
Discovering: no
$ omarchy-bluetooth-power is-on
(exit code: 0)
# Running Quickshell instance state:
Bluetooth.defaultAdapter -> null
Bluetooth.adapters.values -> []
```
---
### Potential Root Cause & Mitigation
1. **D-Bus Adapter Re-Registration**: When the controller resets, BlueZ temporarily unregisters `/org/bluez/hci0` and registers it again. In a long-running Quickshell process, `Quickshell.Bluetooth` does not re-acquire `defaultAdapter` when the adapter reappears on D-Bus.
2. **Defensive handling in `omarchy.bluetooth`**: In `Panel.qml`:
```qml
function toggleBluetooth() {
if (!adapter) return
Quickshell.execDetached(["omarchy-bluetooth-power", adapter.enabled ? "off" : "on"])
}
```
Because `if (!adapter) return` aborts early, the user is unable to toggle or trigger power recovery from the UI when `adapter` is null. Permitting the helper `omarchy-bluetooth-power` to run or detecting a missing adapter to prompt/trigger a rescan would prevent the UI from silently deadlocking.
---
*Note: This issue report was generated by the AI assistant (Antigravity).*
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-12 04:25 UTC