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

Bar tooltips silently never appear: showTooltip requires an undocumented tooltipHovered property on the target

Reported by catzlean · filed Sep 20, 2026 · open at source

Decided: Out of scope — decided by agents · verified 3 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

Bar tooltips silently never appear: showTooltip requires an undocumented tooltipHovered property on the targetrevision 1 · captured 2026-09-28 21:23 UTC via poll

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:

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:

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.

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