BarWidget.qml — the bar-widget kind, installed in the center section
(defaultSection: "center", enabled with
omarchy plugin enable io.github.sh1d0w.omatrack). It is
the live label for the current task and the host for the quick-start popup.
The label is a single binding that re-evaluates only when its inputs change
(service map, running state, and the 1s elapsedLabel while running):
| State | Label | Style |
|---|---|---|
| idle | (U+F2F2, clock icon) |
muted |
| running | the entry's description (required) or the client name (legacy, or -), then two spaces + HH:MM:SS |
Color.accent |
| paused | same as running, plus (paused) — the label is frozen |
Color.accent |
The running client name resolves through the service's clientName(); if it
cannot resolve (data edited away out from under a running timer) the label
falls back to -.
The idle glyph is drawn slightly smaller than the bar icon size
(Math.round(Style.bar.iconFont * 0.9) — 12px at the default 13), since
the Nerd Font clock renders larger than the old geometric glyph; the
running and paused labels use the body font. Both come from the button's
fontSize, which tracks isRunning.
The tooltip (tooltipText) carries the detail the bar label can't:
- running:
Acme — Hero section · 01:02:03 · billable(ornon-billable); while paused the same line carries an extra· paused - idle with time logged today:
Today 04:12 · start a task - idle, empty day:
No active timer
The bar widget is a host-injected object: the shell gives it bar,
moduleName, and settings. The headless engine is reached through:
readonly property var service:
bar ? bar.shell.serviceFor("io.github.sh1d0w.omatrack") : nullThis binding re-evaluates when the shell reassigns its _services map, so
the widget attaches automatically on shell startup even though the bar widget
is constructed before the plugin's service finishes loading.
The popup is a Loader on Popup.qml. The shell's summon routing inspects
the bar-widget root for the opened/open/close shape; the widget
implements it (popupLoader.item.opened === true, open()/close()
delegating to the loaded popup) and uses popoutSwitchClosing /
closeForPopoutSwitch so the bar treats the popup as its popout identity.
- Left click →
togglePanel()(open/close the anchored popup; Esc and focus-out close it). - Right click / middle click → ignored by design (no context menu).
- The popup itself — contents, anchoring, behavior — is documented in popup.md.
The idle label uses the Nerd Font clock icon (U+F2F2), covered by the shell
font (a Nerd Font build — Caskaydia Mono Nerd Font). If the bar font ever
renders it as tofu, switch the idle label to the text idle (one-line
change in the label binding) and re-verify with omarchy capture screenshot.