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.
Media widget marquee keeps repainting the bar while playback is paused
Reported by kimagin · 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
System details
- Omarchy 4.0.3-1
- Hyprland 0.56.2
- QuickShell-based Omarchy bar
- Chromium 153 using native Wayland and MPRIS
- ARM64 VMware Fusion guest, 3840x2160 at 120 Hz
What's wrong?
The built-in Media bar widget keeps its title marquee animation running indefinitely after media playback is paused.
This causes the entire omarchy-bar layer to be damaged continuously. In a VMware Fusion guest, the result is sustained GPU rendering through vmwgfx and Fusion's mksSandbox process, reaching close to 100% GPU utilization while a YouTube video is paused.
Disabling the Media widget immediately returns GPU utilization to idle. Navigating away from the YouTube watch page also stops it because the long MPRIS title is removed.
Steps to reproduce
- Enable the built-in
omarchy.mediabar widget. - Open a YouTube video in Chromium.
- Use a title long enough to overflow the Media widget.
- Pause the video.
- Observe that the title marquee keeps moving indefinitely.
- Disable the Media widget and observe that rendering and GPU activity stop.
Root cause
In shell/plugins/services/media/BarWidget.qml, the animation runs whenever the label overflows:
NumberAnimation on x {
id: scrollAnim
running: labelText.needsScroll && !root.popupOpen && !root.bar.vertical
loops: Animation.Infinite
duration: Math.max(6000, labelText.implicitWidth * 25)
from: scrollClip.width
to: -labelText.implicitWidth
easing.type: Easing.Linear
}The running condition does not include playback state, so a paused MPRIS player with a long title continues repainting the bar forever.
Expected behavior
- While media is playing, the marquee should scroll periodically rather than continuously.
- When media is paused or stopped, the marquee should stop immediately and reset to the beginning.
- The Media widget and its controls should remain visible and functional.
Verified fix
I tested this successfully in a user-owned clone of the Media plugin:
import Quickshell.Services.Mpris
SequentialAnimation on x {
id: scrollAnim
running: labelText.needsScroll && !root.popupOpen && !root.bar.vertical
&& activePlayer
&& activePlayer.playbackState === MprisPlaybackState.Playing
loops: Animation.Infinite
PauseAnimation { duration: 3500 }
NumberAnimation {
from: 0
to: -(labelText.implicitWidth - scrollClip.width)
duration: Math.max(3000, (labelText.implicitWidth - scrollClip.width) * 30)
easing.type: Easing.Linear
}
PauseAnimation { duration: 2000 }
onRunningChanged: {
if (!running)
labelText.x = 0
}
}I used playbackState === MprisPlaybackState.Playing instead of activePlayer.isPlaying. With Chromium, D-Bus correctly reported PlaybackStatus = "Paused", while QuickShell's isPlaying convenience property remained true in this case.
After applying the patch:
- The marquee runs periodically during playback.
- It stops and resets immediately when paused.
- GPU utilization drops back to idle while paused.
- Playback controls and metadata continue working.
View raw text
## System details
- Omarchy 4.0.3-1
- Hyprland 0.56.2
- QuickShell-based Omarchy bar
- Chromium 153 using native Wayland and MPRIS
- ARM64 VMware Fusion guest, 3840x2160 at 120 Hz
## What's wrong?
The built-in Media bar widget keeps its title marquee animation running indefinitely after media playback is paused.
This causes the entire `omarchy-bar` layer to be damaged continuously. In a VMware Fusion guest, the result is sustained GPU rendering through `vmwgfx` and Fusion's `mksSandbox` process, reaching close to 100% GPU utilization while a YouTube video is paused.
Disabling the Media widget immediately returns GPU utilization to idle. Navigating away from the YouTube watch page also stops it because the long MPRIS title is removed.
### Steps to reproduce
1. Enable the built-in `omarchy.media` bar widget.
2. Open a YouTube video in Chromium.
3. Use a title long enough to overflow the Media widget.
4. Pause the video.
5. Observe that the title marquee keeps moving indefinitely.
6. Disable the Media widget and observe that rendering and GPU activity stop.
### Root cause
In `shell/plugins/services/media/BarWidget.qml`, the animation runs whenever the label overflows:
```qml
NumberAnimation on x {
id: scrollAnim
running: labelText.needsScroll && !root.popupOpen && !root.bar.vertical
loops: Animation.Infinite
duration: Math.max(6000, labelText.implicitWidth * 25)
from: scrollClip.width
to: -labelText.implicitWidth
easing.type: Easing.Linear
}
```
The `running` condition does not include playback state, so a paused MPRIS player with a long title continues repainting the bar forever.
### Expected behavior
- While media is playing, the marquee should scroll periodically rather than continuously.
- When media is paused or stopped, the marquee should stop immediately and reset to the beginning.
- The Media widget and its controls should remain visible and functional.
### Verified fix
I tested this successfully in a user-owned clone of the Media plugin:
```qml
import Quickshell.Services.Mpris
SequentialAnimation on x {
id: scrollAnim
running: labelText.needsScroll && !root.popupOpen && !root.bar.vertical
&& activePlayer
&& activePlayer.playbackState === MprisPlaybackState.Playing
loops: Animation.Infinite
PauseAnimation { duration: 3500 }
NumberAnimation {
from: 0
to: -(labelText.implicitWidth - scrollClip.width)
duration: Math.max(3000, (labelText.implicitWidth - scrollClip.width) * 30)
easing.type: Easing.Linear
}
PauseAnimation { duration: 2000 }
onRunningChanged: {
if (!running)
labelText.x = 0
}
}
```
I used `playbackState === MprisPlaybackState.Playing` instead of `activePlayer.isPlaying`. With Chromium, D-Bus correctly reported `PlaybackStatus = "Paused"`, while QuickShell's `isPlaying` convenience property remained true in this case.
After applying the patch:
- The marquee runs periodically during playback.
- It stops and resets immediately when paused.
- GPU utilization drops back to idle while paused.
- Playback controls and metadata continue working.
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:25 UTC