Skip to content

Port quickshell-dots V1 as an Omarchy bar plugin#20

Open
elynch303 wants to merge 5 commits into
HANCORE-linux:mainfrom
elynch303:omarchy-plugin-port
Open

Port quickshell-dots V1 as an Omarchy bar plugin#20
elynch303 wants to merge 5 commits into
HANCORE-linux:mainfrom
elynch303:omarchy-plugin-port

Conversation

@elynch303

Copy link
Copy Markdown

Promote versions/V1/* to the repo root and add manifest.json (id: local.rise, kinds: ["bar"], entryPoints.bar: shell.qml) so the bar is discoverable by omarchy-plugin-catalog and installable under ~/.config/omarchy/plugins/.

shell.qml's root changes from ShellRoot to a plain Item exposing the 5 properties Omarchy's shell host duck-type-injects into a bar plugin (omarchyPath, shell, manifest, barWidgetRegistry, barConfig), since it now loads as a plugin inside omarchy-shell's own qs process rather than running standalone. Everything else (BarSlot.qml, Theme.qml, modules/, panels/, assets, scripts) is unchanged, just relocated.

This is a fixed-layout port: the bar keeps its existing internal widget layout and drag/drop editor rather than integrating with Omarchy's own bar-widget/BarWidgetRegistry system.

Promote versions/V1/* to the repo root and add manifest.json (id:
local.rise, kinds: ["bar"], entryPoints.bar: shell.qml) so the bar is
discoverable by omarchy-plugin-catalog and installable under
~/.config/omarchy/plugins/.

shell.qml's root changes from ShellRoot to a plain Item exposing the 5
properties Omarchy's shell host duck-type-injects into a bar plugin
(omarchyPath, shell, manifest, barWidgetRegistry, barConfig), since it
now loads as a plugin inside omarchy-shell's own qs process rather than
running standalone. Everything else (BarSlot.qml, Theme.qml, modules/,
panels/, assets, scripts) is unchanged, just relocated.

This is a fixed-layout port: the bar keeps its existing internal
widget layout and drag/drop editor rather than integrating with
Omarchy's own bar-widget/BarWidgetRegistry system.
…lugin

Rise now forwards the host's barWidgetRegistry/barConfig (shell.qml ->
Theme -> BarSlot) and renders any installed kind:"bar-widget" plugin
(excluding Omarchy's own omarchy.* first-party widgets, which Rise already
implements natively) placed via `theme-manager bar plugin add/set`.
Widgets land in their layout section (left/center/right) as their own
pill, or nest inside an existing pill (status/center/quick) via a
`bubble` setting.

Dynamically loaded widgets get bar/moduleName/settings injected, plus a
width/height binding and a minimal bar-context adapter (position,
vertical, barSize, fontFamily, colors, popout coordination, tooltip
show/hide bridged to Theme's own tooltip system) so they render and
behave the same as on the built-in bar.

Also brings plugins/security-scan (previously only on
feature/security-widget) into this branch as the first widget to use
the new mechanism, with its icon switched from an emoji shield to the
Nerd Font outline glyph (md-shield_outline, U+F0499) to match the rest
of the bar's icon style.
Primary/accent while clean, amber on warnings, urgent (theme red) once
a scanner actually flags something compromised, instead of a flat
urgent-or-default toggle.
Same pattern as security-scan: reads `sensors -j` (lm_sensors) on a
30s timer, badge + popup with per-fan RPM and per-sensor temperatures
(CPU package, board, NVMe), installable on any bar via
`theme-manager bar plugin add local.fan-monitor`.

Converted from the uncommitted embedded WIP in feature/fan-widget,
fixing a real bug along the way: its fan icon codepoint (U+F1558)
actually resolves to md-kangaroo in the Nerd Font, never caught since
the WIP was never live-tested. Uses md-fan (U+F0210) instead, verified
directly against the font file.

Badge color reflects temperature (primary while normal, amber >=65C,
red only >=80C) using the bar's own primary/foreground color rather
than a hardcoded theme accent, so it matches whichever bar it's on.
Status labels (AUR-Malware/bumblebee) now follow the same tri-color
rule as the shield badge (primary/accent, amber on warn, urgent on
fail/error) instead of a flat urgent-or-muted toggle.

Replaced the Row + `width: parent.width - 160` spacer hack for
right-aligning the status label with a proper anchored left/right
layout (same pattern the header row already uses) — the fixed 160px
offset drifted depending on header text length, making the label
appear to float instead of sitting flush right.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant