From b68c22208a044106ff7f79829eae702da1970f6c Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 15 Aug 2026 16:05:57 +0200 Subject: [PATCH] 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 --- config/omarchy/extensions/omarchy-menu.jsonc | 6 +++--- default/omarchy/omarchy-menu.jsonc | 5 +++-- shell/plugins/bar/README.md | 7 ++----- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/config/omarchy/extensions/omarchy-menu.jsonc b/config/omarchy/extensions/omarchy-menu.jsonc index 96823968..14bb0a3c 100644 --- a/config/omarchy/extensions/omarchy-menu.jsonc +++ b/config/omarchy/extensions/omarchy-menu.jsonc @@ -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 ` 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. diff --git a/default/omarchy/omarchy-menu.jsonc b/default/omarchy/omarchy-menu.jsonc index 6978038c..eb538c70 100644 --- a/default/omarchy/omarchy-menu.jsonc +++ b/default/omarchy/omarchy-menu.jsonc @@ -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 ` routes; also searchable. // Reserved for established names users already type; new entries diff --git a/shell/plugins/bar/README.md b/shell/plugins/bar/README.md index 6ffdcc46..5741c5f3 100644 --- a/shell/plugins/bar/README.md +++ b/shell/plugins/bar/README.md @@ -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//` with their own `manifest.json`