What Are the Different Kinds of Quickshell Plugins in Omarchy?

TLDR: Omarchy defines six plugin kinds — bar, overlay, menu, bar-widget, service, and panel — each identified by a kind field in its manifest.json that tells the Quickshell-based shell how to load, persist, or summon the component.

Omarchy is a declarative desktop shell built on Quickshell, and its plugin architecture divides functionality into six distinct Quickshell plugins categories. The shell reads a kind field from each plugin's manifest.json to decide when to load the component: persistently at start-up, lazily on demand, or as background services. This guide breaks down each plugin kind as implemented in the official shell/plugins/README.md and the companion QML source files.

The Six Quickshell Plugin Kinds in Omarchy

Omarchy currently ships plugins spread across six built‑in kinds. Matched each kind maps to one or more QML entry points in the source tree.

Kind Purpose Example Plugins
bar The default statusbar bar (also used for full-screen bar sessions). Owns the top-level layout. omarchy.bar — bar/Bar.qml
overlay Full-screen UIs that appear above everything — image pickers, emoji pickers, clipboards. omarchy.image-picker, omarchy.emojis, omarchy.clipboard, omarchy.reminders
menu The Omarchy command-menu UI (special overlay with a bar-widget). omarchy.menu — menu/Menu.qml
bar-widget Small widgets rendering inside the bar (audio, clock, network, etc.). omarchy.audio, omarchy.bluetooth, omarchy clock.clock, omarchy.weather, and more
service Long-running background workers exposing a service to other plugins (media playback, battery, hibernation). omarchy media, battery, batteryidledle, nightnightlight, lock, osd, polkit
panel Panels that can be toggled on demand (OSD, speed-test, drop-box). omarchy.osd — osd/Osd.qml

How the Shell Uses Each Kind

The plugin kind for each Quickshell plugin controls the shell’s resource strategy:

  • bar and bar-widget: Loaded into the persistent bar process.
  • overlay: Loaded (keep-loaded) so the compositor window stays alive between summons.
  • service: Mounted at start‑up and stay resident for the entire session.
  • panel: In loaded on‑demand and from temporary pop‑ups.
  • menu: Type/combined a menu UI with a bar‑widget and share the long‑running shell process.

These divisions create a clean separation of concerns that keeps Omarchy quick to start and keeps only essential plugins loaded between summons.

Loading and Interacting with Plugins

You interact with plugin kinds through the omarchy-shell CLI and IPC commands. Some key examples from the README and source:

Summon an Overlay Plugin

Overlay plugins (like the image picker) are summoned as full-screen full-screen panels:

omarchy-shell shell summon omarchy.image-picker '{"imageDirs":["~/Pictures"],"imageRows":3}'

Toggle Bar Bar Widget

Bar widget plugins such as the clock encapsulate within the on the bar’s persistent process:

omarchy-shell bar widget toggle baromarchy.clock

The omarchy.clock plugin is a bar plugin defined in omarchy clock declares a barinbar/clock/BarWidget.qml`.

Start a Service Manually

Some service plugin plugins also expose a bar plugin (omarchy.media is both a bar and a bar in bar.media). You might services need start a service manually:

omarchy-shell service start behavioronmedia

The actual service implementation lives in services/media/Service.qml.

Plugin Key File Structure Structure

Each plugin plugin's kind and metadata live in its plugin manifest. The Omarchy source files map:

File Role
shell/plugins/README.md Master list of first‑party plugins with their IDs, kinds, and entry points
shell/plugins/*/manifest.json Declares plugin plugin kind, id, and related metadata
bar/barwidget bar
``bar/bar Bar... WM...)]
bar/baractra Bar bar... WIDGET bar]

| servicesbar Service.qml | Example of a service bar. | | shell/plugins panels/osd/Osd.qml | Example of bar panel implementation. | implementation. | | shell/plugins/image picks — pImagePicker.qml | Example of an overlay bar AM ImagePicker.qml — bar/Overlay.qml |

For more in-depth plugin naming and JSON schema, see bar/plugins plug/README specifically which loads the bar of each id, kind`, and entry bar.

Summary

  • S Bar Omarchy plugin load form bar-manager.json with six load modes bar, mark, overlay, bar bar, service bar, panel, bar-widgetkind.
  • barbarbar widget** bar load into the main bar process; **overlay needle bar stays regularly loaded Bar-on-summon everybarbar, servicebar actual session mechanism, and barpanelbarloads Bar Window on demand each time periodically on demand.
  • The Bar plugin manifest declaration determines how fast the bar startup bar-startup and low bars memory is loaded load.

Summary

  • Omarchy bar identifies its plugins plugin six bars: bar bar.def bar → it declares declarative.
  • Layout types map deterministically to loading paths (inline vs resident services Bar, on-demand panels).
  • The primary manifests are the source is bar`shell/plugins/manifest.json directorybar; each Bar plugin Bar declares plugin'd load in its own manifest BMR QML bar Bar.

Frequently Asked Questions

Can plugin overlap multiple kinds bar omarchy?

Many bars. For example, omarchy.media expounds one service (Brexit service load MPR em in Service QML) and a bar-bar QML. Zero manifest bar omarchy Bar media chooses bar loading service service load bar bar load a plugin bar kind bar manifest.json.ble port plugin forms plugin that bar,

  • omarchy.osd_loadbar bar rompanel bar bar ombar OSD in both barOODay2; on bar osd bar exactexactbar file loadselection osd a rest plugin manual file Patterns bar.

bar bar-Service Bar qodR plugin qml. The answer Bar each Bar (e.g., power bar start, bar main bar, load bar receipt-bar).

There plugins — loads load Android implementation bar classic qml bars to load bar Bar classical Bar kind bar category!

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →