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.
Bar tooltips silently never appear: showTooltip requires an undocumented tooltipHovered property on the target
Reported by catzlean · filed Sep 20, 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
What happens
bar.showTooltip(target, text) silently does nothing unless the target object
exposes a tooltipHovered property that evaluates to true. There is no error,
no warning, and no log line. The tooltip simply never appears.
This is not documented. shell/plugins/bar/README.md line 165 lists the API as:
- `bar.showTooltip(target, text)` / `bar.hideTooltip(target)` — shared tooltip popupFollowing that documentation produces a widget whose tooltip never works, and
nothing tells the author why.
Root cause
shell/plugins/bar/Bar.qml:
function targetTooltipHovered(target) {
return !!target && target.visible !== false && target.opacity !== 0 && target.tooltipHovered === true
}
function showTooltip(target, text) {
clearTooltip()
if (!targetTooltipHovered(target) || !text) {
tooltipRequest += 1
return
}
...Ui/WidgetButton.qml line 61 satisfies this, which is why widgets built onWidgetButton work:
readonly property bool tooltipHovered: visible && interactive && !concealed && mouseArea.containsMouseBut Ui/BarWidget.qml does not define tooltipHovered. Any widget whose
root is BarWidget and which calls showTooltip from its own MouseArea will
never show a tooltip.
Affected stock widgets
Two first-party widgets are affected. Both have BarWidget as their root and
both call showTooltip directly, so neither has a working tooltip:
shell/plugins/services/media/BarWidget.qmlline 100 (omarchy.media)shell/plugins/bar/widgets/ActiveWindow.qmlline 61 (omarchy.active-window)
Steps to reproduce
- Enable the
omarchy.mediawidget on the bar and start playing something. - Hover the widget.
- No tooltip appears. Expected: the track title and artist.
The same applies to omarchy.active-window: hover it and no window title
tooltip appears.
Expected
Either of these would resolve it:
- Define
tooltipHoveredonUi/BarWidget.qml, the wayUi/WidgetButton.qml
already does, so widgets built on it work by default. This would fix both
stock widgets and every third-party widget with the same shape.
2. Failing that, document the requirement in shell/plugins/bar/README.md
alongside showTooltip, and emit a warning when showTooltip bails out
because the target does not expose the property, so the failure is not
silent.
Option 1 seems preferable, since the current behaviour makes a documented public
API fail with no diagnostic.
System details
- Omarchy 4.0.4-1
- CPU: Intel Core i5-8259U
- GPU: Intel Iris Plus Graphics 655
- Single display, scale 2, Hyprland 0.56.2
This is a code-level issue in the shell rather than an environment-specific one,
so I have not attached a diagnostic log. Happy to provide one if useful.
View raw text
## What happens
`bar.showTooltip(target, text)` silently does nothing unless the target object
exposes a `tooltipHovered` property that evaluates to `true`. There is no error,
no warning, and no log line. The tooltip simply never appears.
This is not documented. `shell/plugins/bar/README.md` line 165 lists the API as:
```
- `bar.showTooltip(target, text)` / `bar.hideTooltip(target)` — shared tooltip popup
```
Following that documentation produces a widget whose tooltip never works, and
nothing tells the author why.
## Root cause
`shell/plugins/bar/Bar.qml`:
```qml
function targetTooltipHovered(target) {
return !!target && target.visible !== false && target.opacity !== 0 && target.tooltipHovered === true
}
function showTooltip(target, text) {
clearTooltip()
if (!targetTooltipHovered(target) || !text) {
tooltipRequest += 1
return
}
...
```
`Ui/WidgetButton.qml` line 61 satisfies this, which is why widgets built on
`WidgetButton` work:
```qml
readonly property bool tooltipHovered: visible && interactive && !concealed && mouseArea.containsMouse
```
But `Ui/BarWidget.qml` does **not** define `tooltipHovered`. Any widget whose
root is `BarWidget` and which calls `showTooltip` from its own `MouseArea` will
never show a tooltip.
## Affected stock widgets
Two first-party widgets are affected. Both have `BarWidget` as their root and
both call `showTooltip` directly, so neither has a working tooltip:
- `shell/plugins/services/media/BarWidget.qml` line 100 (`omarchy.media`)
- `shell/plugins/bar/widgets/ActiveWindow.qml` line 61 (`omarchy.active-window`)
## Steps to reproduce
1. Enable the `omarchy.media` widget on the bar and start playing something.
2. Hover the widget.
3. No tooltip appears. Expected: the track title and artist.
The same applies to `omarchy.active-window`: hover it and no window title
tooltip appears.
## Expected
Either of these would resolve it:
1. Define `tooltipHovered` on `Ui/BarWidget.qml`, the way `Ui/WidgetButton.qml`
already does, so widgets built on it work by default. This would fix both
stock widgets and every third-party widget with the same shape.
2. Failing that, document the requirement in `shell/plugins/bar/README.md`
alongside `showTooltip`, and emit a warning when `showTooltip` bails out
because the target does not expose the property, so the failure is not
silent.
Option 1 seems preferable, since the current behaviour makes a documented public
API fail with no diagnostic.
## System details
- Omarchy 4.0.4-1
- CPU: Intel Core i5-8259U
- GPU: Intel Iris Plus Graphics 655
- Single display, scale 2, Hyprland 0.56.2
This is a code-level issue in the shell rather than an environment-specific one,
so I have not attached a diagnostic log. Happy to provide one if useful.
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 16:24 UTC