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-1547GitHub issuePublicDecided· Out of scope

Dictation indicator opens the config instead of toggling dictation, unlike every other indicator

Reported by projmans · filed Aug 23, 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

Dictation indicator opens the config instead of toggling dictation, unlike every other indicatorrevision 1 · captured 2026-09-28 21:24 UTC via poll

System details

AMD Ryzen 5 7640U Omarchy 4.0.0-1 (stable channel), installed 2026-08-22

What's wrong?

What happens

Hover the center of the bar, then left click the dictation glyph 󰍬. The Voxtype
config TUI opens. Right click does the same. There is no way to start dictation
from the bar.

Omarchy 4.0.0-1, voxtype-bin 0.7.5-1. F9 and Super + Ctrl + X both work fine.

Why I think this is wrong

The dictation glyph sits in the same hover cluster as five other indicators, and
it is the only one that does not act on its own mode:

IndicatoronPressed
Dnd.qml:17flips do not disturb
NightLight.qml:19root.toggle()
StayAwake.qml:19root.toggle()
ScreenRecording.qml:38opens capture menu, or stops an active recording
Dictation.qml:34opens a settings window

Four of them change state on click. The fifth opens a config window. They render
identically and sit next to each other, so I expect the same kind of action from
all of them. Opening settings from a status glyph that looks and behaves like a
toggle is surprising, and the first time it happened I assumed something was
broken.

The manual, https://omarchy.org/manual/the-top-bar/, describes it the way I
expected:

These are status glyphs for modes you've turned on: do not disturb, night light, a queued reminder, an active screen recording, stay awake, and dictation.
Clicking an indicator toggles that mode.

Dictation is listed, but it is the one that does not.

Current code

// shell/plugins/bar/indicators/Dictation.qml:34-37
onPressed: function() {
  if (!root.bar) return
  root.bar.run("omarchy-voxtype-config")
}

What makes me unsure

test/shell.d/fixtures/indicator-contract/shell.qml:207-208 asserts the current
behaviour for both buttons, and explicitly checks the old Waybar model picker is
gone:

root.assertTrue(root.commandCount("omarchy-voxtype-config") === 2, "Dictation clicks run config command")
root.assertTrue(root.commandCount("omarchy-voxtype-model") === 0, "Dictation clicks do not run model command")

That reads deliberate, so I may be arguing against a decision already made. If
so, the manual is the thing that needs correcting.

Suggested fix

Dispatch on the button, the same way widgets/Microphone.qml:44 already does,
which keeps the config reachable:

onPressed: function(b) {
  if (!root.bar) return
  if (b === Qt.RightButton) root.bar.run("omarchy-voxtype-config")
  else root.bar.run("voxtype record toggle")
}

voxtype record toggle is already bound to Super + Ctrl + X in
default/hypr/bindings/voxtype.lua, so the indicator, the keybinding and the
omarchy-voxtype-status stream stay in agreement. I have been running this
locally through omarchy plugin clone omarchy.indicators and both buttons
behave as expected.

It needs the two assertions above updated. Happy to send a PR if you want it.

Possibly related

#6823 touches the same click handler.

View raw text
### System details

AMD Ryzen 5 7640U Omarchy  4.0.0-1 (stable channel), installed 2026-08-22

### What's wrong?

## What happens

Hover the center of the bar, then left click the dictation glyph 󰍬. The Voxtype
config TUI opens. Right click does the same. There is no way to start dictation
from the bar.

Omarchy 4.0.0-1, voxtype-bin 0.7.5-1. `F9` and `Super + Ctrl + X` both work fine.

## Why I think this is wrong

The dictation glyph sits in the same hover cluster as five other indicators, and
it is the only one that does not act on its own mode:

| Indicator | `onPressed` |
|---|---|
| `Dnd.qml:17` | flips do not disturb |
| `NightLight.qml:19` | `root.toggle()` |
| `StayAwake.qml:19` | `root.toggle()` |
| `ScreenRecording.qml:38` | opens capture menu, or stops an active recording |
| `Dictation.qml:34` | opens a settings window |

Four of them change state on click. The fifth opens a config window. They render
identically and sit next to each other, so I expect the same kind of action from
all of them. Opening settings from a status glyph that looks and behaves like a
toggle is surprising, and the first time it happened I assumed something was
broken.

The manual, https://omarchy.org/manual/the-top-bar/, describes it the way I
expected:

> These are status glyphs for modes you've turned on: do not disturb, night
> light, a queued reminder, an active screen recording, stay awake, and
> dictation.

> Clicking an indicator toggles that mode.

Dictation is listed, but it is the one that does not.

## Current code

```qml
// shell/plugins/bar/indicators/Dictation.qml:34-37
onPressed: function() {
  if (!root.bar) return
  root.bar.run("omarchy-voxtype-config")
}
```
## What makes me unsure

test/shell.d/fixtures/indicator-contract/shell.qml:207-208 asserts the current
behaviour for both buttons, and explicitly checks the old Waybar model picker is
gone:
```
root.assertTrue(root.commandCount("omarchy-voxtype-config") === 2, "Dictation clicks run config command")
root.assertTrue(root.commandCount("omarchy-voxtype-model") === 0, "Dictation clicks do not run model command")
```
That reads deliberate, so I may be arguing against a decision already made. If
so, the manual is the thing that needs correcting.

## Suggested fix

Dispatch on the button, the same way widgets/Microphone.qml:44 already does,
which keeps the config reachable:
```
onPressed: function(b) {
  if (!root.bar) return
  if (b === Qt.RightButton) root.bar.run("omarchy-voxtype-config")
  else root.bar.run("voxtype record toggle")
}
```
voxtype record toggle is already bound to Super + Ctrl + X in
default/hypr/bindings/voxtype.lua, so the indicator, the keybinding and the
omarchy-voxtype-status stream stay in agreement. I have been running this
locally through omarchy plugin clone omarchy.indicators and both buttons
behave as expected.

It needs the two assertions above updated. Happy to send a PR if you want it.

## Possibly related

#6823 touches the same click handler.

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:29 UTC