Correct stale claims in menu jsonc headers and bar README

Providers never returned JSON rows: they are shell-defined row sources
emitting tab-delimited lines, and extensions cannot declare new names.
bar.shellQuote moved to Util.qml, and the UpperCamelCase widget id
migration no longer exists.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
David Heinemeier Hansson
2026-08-15 16:21:25 +02:00
co-authored by Claude Fable 5
parent 16c8888f96
commit b68c22208a
3 changed files with 8 additions and 10 deletions
+3 -3
View File
@@ -10,7 +10,7 @@
// label Visible row title.
// action Shell command to run. If omitted, the row is a submenu.
// target Existing submenu id to open. Use for links/aliases.
// provider Runtime provider function/command returning JSON rows.
// provider Name of a shell-defined runtime row source (e.g. "fonts").
// aliases alternate `omarchy menu summon <name>` routes; also searchable.
// description Optional subtitle and extra search text.
// when Shell condition; hide row when it fails.
@@ -21,8 +21,8 @@
// "personal.notes": {"icon":"󰎞","label":"Notes","action":"omarchy-launch-editor ~/notes"},
// "personal.files": {"icon":"","label":"Files","action":"uwsm-app -- nautilus ~/Documents"},
//
// Only use provider when a provider_name function or command named "name"
// returns JSON rows. Static submenus only need dotted ids.
// provider can only reference row sources the shell already defines (the
// providers map in Menu.qml). Static submenus only need dotted ids.
//
// Example: replace the default About action by reusing the same id. Existing
// fields are kept unless overridden.
+3 -2
View File
@@ -4,8 +4,9 @@
// IDs are object keys. Dotted IDs imply hierarchy: trigger.share.file belongs
// under trigger.share.
// Kind is inferred: action -> action, target -> link, otherwise submenu.
// Dotted IDs define the tree. Use provider:"name" only when the submenu
// calls provider_name() or a command named "name" to return JSON rows.
// Dotted IDs define the tree. provider:"name" points a submenu at one of
// the shell's providers (the providers map in shell/plugins/menu/Menu.qml);
// new provider names cannot be declared here. See docs/menu.md.
// Optional fields:
// aliases alternate `omarchy menu summon <name>` routes; also searchable.
// Reserved for established names users already type; new entries
+2 -5
View File
@@ -160,8 +160,7 @@ Widgets receive `bar` (the shell root), `moduleName` (string), and `settings` (o
- `bar.position``"top" | "bottom" | "left" | "right"`
- `bar.vertical` — boolean shortcut
- `bar.barSize` — 26 horizontal / 28 vertical
- `bar.run(command)` — fire-and-forget bash exec
- `bar.shellQuote(value)` — safe shell-quote a string
- `bar.run(command)` — fire-and-forget bash exec (quote arguments with `Util.shellQuote` from `qs.Commons`)
- `bar.showTooltip(target, text)` / `bar.hideTooltip(target)` — shared tooltip popup
- `bar.requestPopout(owner)` / `bar.releasePopout(owner)` — one-popup-at-a-time coordinator
@@ -171,9 +170,7 @@ richer popup plugins live in feature directories such as `../panels/audio/`,
`../panels/network/`, and `../agents/`; and feature plugins such as
`omarchy.menu` and `omarchy.media` declare their bar-widget entry points in their own
`manifest.json`. Bar layout ids are namespaced, e.g. `omarchy.audio`,
`omarchy.network`, and `omarchy.clock`. Older UpperCamelCase ids such as
`AudioPanel` and `Clock` are migrated forward; new configs should use the
namespaced ids.
`omarchy.network`, and `omarchy.clock`.
Third-party widgets ship as separate plugins under
`~/.config/omarchy/plugins/<plugin-id>/` with their own `manifest.json`