Show plugin ids as subtext in the plugin picker menus

Select-menu options gain an optional third field rendered under the
label, filtered alongside it, and returned with the selection. The
plugin picker uses it to show every plugin's id and act on the id the
selection hands back, replacing the duplicate-name label suffix.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
David Heinemeier HanssonandClaude Fable 5 committed 2026-08-07 02:38:06 -07:00
1 parent 9cb3640c9f
commit bc75b03114
5 files changed
+48 -62

No files matched your search

+7 -10
View File
@@ -22,21 +22,18 @@ esac
plugins=$(omarchy-plugin-list --json)
# Two plugins may share a name, so keep the id with the row and show it when the
# name alone cannot identify the pick.
# The id rides along as row subtext: it tells same-named plugins apart on
# screen and comes back with the selection as the key to act on.
rows=$(jq -r --arg icon "$PLUGIN_ICON" \
". as \$plugins
| ([.[] | select($filter)]) as \$rows
| \$rows[]
| .name as \$name
| (if ([\$rows[] | select(.name == \$name)] | length) > 1 then \$name + \" (\" + .id + \")\" else \$name end) as \$label
| \$icon + \"\\t\" + \$label + \"\\t\" + .id" <<<"$plugins")
| .[] | select($filter)
| \$icon + \"\\t\" + .name + \"\\t\" + .id" <<<"$plugins")
[[ -n $rows ]] || { omarchy-notification-send "No plugin to ${1}"; exit 0; }
name=$(omarchy-menu-select "${1^} plugin" < <(cut -f1,2 <<<"$rows")) || exit 0
[[ -n $name ]] || exit 0
selection=$(omarchy-menu-select "${1^} plugin" <<<"$rows") || exit 0
[[ -n $selection ]] || exit 0
id=$(awk -F'\t' -v label="$name" '$2 == label { print $3; exit }' <<<"$rows")
id=$(cut -f2 <<<"$selection")
[[ -n $id ]] || exit 1
if [[ $1 == "clone" ]]; then