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 widget disappears from shell when turned off
Reported by elytraVIII · filed Aug 15, 2026Closed upstream on 2026-09-23 by its own reporter elytraVIII. GitHub close reason: completed. Closed by its own reporter — not by itself evidence of a fix.
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?
- Not yet mapped to any requirement or component.
- 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?
- Our staff decide whether the report is valid. Where this project allows it, agents decide whether it duplicates another report or a known issue. No decision has been recorded yet.
Original report
Summary
The Bluetooth widget completely disappears from the Omarchy status bar when Bluetooth is turned off via the UI switch. This leaves the user with no way to turn Bluetooth back on using the UI.
Expected Behaviour
When turning off Bluetooth using the status bar toggle, the widget should remain visible but display a "Turned Off" or "Disabled" state. Clicking the toggle again should turn the Bluetooth adapter back on.
Actual Behaviour
When Bluetooth is toggled off, the entire widget vanishes from the shell. The only way to restore Bluetooth functionality is via the terminal (e.g. rfkill unblock bluetooth or omarchy bluetooth power on).
Steps to Reproduce
- Open the Omarchy status bar menus.
- Ensure the Bluetooth widget is visible.
- Click the toggle switch on the Bluetooth widget to turn it off.
- The widget immediately disappears from the bar and cannot be recovered via the UI.
System Details
- OS: Omarchy Linux (Kernel: 7.1.8-arch1-3)
- Omarchy Version: 4.0.0-1
Cause of Bug
When turning off Bluetooth via the Omarchy UI toggle switch, it calls omarchy-bluetooth-power off, which soft blocks the adapter via rfkill. This causes the adapter to completely disappear from the BlueZ daemon, meaning the adapter property becomes null in Quickshell.Bluetooth.
Because the built-in omarchy.bluetooth widget (Panel.qml) has a strict visibility condition tied to the adapter (visible: adapter !== null), the widget hides itself when adapter becomes null.
The code that didn't work properly in `Panel.qml`:
visible: adapter !== null
// ... (inside toggleBluetooth)
function toggleBluetooth() {
if (!adapter) return
Quickshell.execDetached(["omarchy-bluetooth-power", adapter.enabled ? "off" : "on"])
}Fix for Bug
The fix involves ensuring the widget stays visible even when the adapter disappears (due to being soft-blocked), and updating the UI text/icons and the toggle logic to handle a null adapter state.
Here are the fixes to apply in Panel.qml:
- Change panel visibility to always true:
visible: true- Update
toggleBluetooth()to send theonsignal when the adapter is missing:
function toggleBluetooth() {
if (!adapter) {
Quickshell.execDetached(["omarchy-bluetooth-power", "on"])
return
}
Quickshell.execDetached(["omarchy-bluetooth-power", adapter.enabled ? "off" : "on"])
}- Update the
iconandheroStatusTextto fallback to disabled visuals when!adapter:
readonly property string icon: {
if (!adapter) return ""
if (!adapter.enabled) return ""
// ...
}(Reporting on behalf of a user using the Antigravity assistant)
View raw text
### Summary
The Bluetooth widget completely disappears from the Omarchy status bar when Bluetooth is turned off via the UI switch. This leaves the user with no way to turn Bluetooth back on using the UI.
### Expected Behaviour
When turning off Bluetooth using the status bar toggle, the widget should remain visible but display a "Turned Off" or "Disabled" state. Clicking the toggle again should turn the Bluetooth adapter back on.
### Actual Behaviour
When Bluetooth is toggled off, the entire widget vanishes from the shell. The only way to restore Bluetooth functionality is via the terminal (e.g. `rfkill unblock bluetooth` or `omarchy bluetooth power on`).
### Steps to Reproduce
1. Open the Omarchy status bar menus.
2. Ensure the Bluetooth widget is visible.
3. Click the toggle switch on the Bluetooth widget to turn it off.
4. The widget immediately disappears from the bar and cannot be recovered via the UI.
### System Details
- **OS**: Omarchy Linux (Kernel: 7.1.8-arch1-3)
- **Omarchy Version**: 4.0.0-1
### Cause of Bug
When turning off Bluetooth via the Omarchy UI toggle switch, it calls `omarchy-bluetooth-power off`, which soft blocks the adapter via `rfkill`. This causes the adapter to completely disappear from the BlueZ daemon, meaning the `adapter` property becomes `null` in `Quickshell.Bluetooth`.
Because the built-in `omarchy.bluetooth` widget (`Panel.qml`) has a strict visibility condition tied to the adapter (`visible: adapter !== null`), the widget hides itself when `adapter` becomes `null`.
**The code that didn't work properly in `Panel.qml`:**
```qml
visible: adapter !== null
// ... (inside toggleBluetooth)
function toggleBluetooth() {
if (!adapter) return
Quickshell.execDetached(["omarchy-bluetooth-power", adapter.enabled ? "off" : "on"])
}
```
### Fix for Bug
The fix involves ensuring the widget stays visible even when the adapter disappears (due to being soft-blocked), and updating the UI text/icons and the toggle logic to handle a `null` adapter state.
Here are the fixes to apply in `Panel.qml`:
1. Change panel visibility to always true:
```qml
visible: true
```
2. Update `toggleBluetooth()` to send the `on` signal when the adapter is missing:
```qml
function toggleBluetooth() {
if (!adapter) {
Quickshell.execDetached(["omarchy-bluetooth-power", "on"])
return
}
Quickshell.execDetached(["omarchy-bluetooth-power", adapter.enabled ? "off" : "on"])
}
```
3. Update the `icon` and `heroStatusText` to fallback to disabled visuals when `!adapter`:
```qml
readonly property string icon: {
if (!adapter) return ""
if (!adapter.enabled) return ""
// ...
}
```
*(Reporting on behalf of a user using the Antigravity assistant)*
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.
No decision has been recorded yet.