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:
barandbar-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.jsonwith six load modesbar,mark,overlay,bar bar,service bar,panel,bar-widgetkind. - bar
barbarwidget** 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 barosd 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:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →