Show Remove... as the title of all submenus under Remove

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
David Heinemeier Hansson
2026-07-22 12:04:25 -07:00
co-authored by Claude Fable 5
parent 43260b29cd
commit 6ff61289fa
4 changed files with 14 additions and 10 deletions
+9 -8
View File
@@ -10,6 +10,7 @@
// aliases alternate `omarchy menu summon <name>` routes; also searchable
// iconFont font family used for the icon glyph, when it differs from the menu font
// keywords extra search terms beyond id/label/aliases
// title header text shown when the submenu is open; defaults to label
// when shell condition; hide row when it fails
// checked shell condition; append ✓ when it succeeds
@@ -234,15 +235,15 @@
"remove.package": {"icon":"󰣇","label":"Package","keywords":"uninstall","action":"xdg-terminal-exec --app-id=org.omarchy.terminal omarchy-pkg-remove"},
"remove.webapp": {"icon":"","label":"Web App","keywords":"uninstall","when":"grep -qE '^Exec=.*(omarchy-launch-webapp|omarchy-webapp-handler)' $HOME/.local/share/applications/*.desktop","action":"omarchy-webapp-remove"},
"remove.tui": {"icon":"","label":"TUI","keywords":"uninstall terminal app","when":"grep -qE '^Exec=.*(\\$TERMINAL|xdg-terminal-exec).*-e' $HOME/.local/share/applications/*.desktop","action":"omarchy-tui-remove"},
"remove.development": {"icon":"󰵮","label":"Development","keywords":"uninstall languages"},
"remove.development": {"icon":"󰵮","label":"Development","title":"Remove","keywords":"uninstall languages"},
"remove.theme": {"icon":"󰸌","label":"Theme","keywords":"uninstall","action":"omarchy-theme-remove"},
"remove.browser": {"icon":"","label":"Browser","keywords":"uninstall"},
"remove.browser": {"icon":"","label":"Browser","title":"Remove","keywords":"uninstall"},
"remove.dictation": {"icon":"","label":"Dictation","keywords":"uninstall voice","when":"omarchy-pkg-present voxtype-bin","action":"omarchy-launch-floating-terminal-with-presentation omarchy-voxtype-remove"},
"remove.gaming": {"icon":"","label":"Gaming","keywords":"uninstall steam retroarch minecraft"},
"remove.service": {"icon":"","label":"Services","keywords":"uninstall dropbox tailscale vpn"},
"remove.gaming": {"icon":"","label":"Gaming","title":"Remove","keywords":"uninstall steam retroarch minecraft"},
"remove.service": {"icon":"","label":"Services","title":"Remove","keywords":"uninstall dropbox tailscale vpn"},
"remove.windows": {"icon":"󰍲","label":"Windows","keywords":"uninstall vm","when":"[[ -f $HOME/.local/share/applications/windows-vm.desktop ]]","action":"omarchy-launch-floating-terminal-with-presentation 'omarchy-windows-vm remove'"},
"remove.preinstalls": {"icon":"󰏓","label":"Preinstalls","when":"[[ ! -f $HOME/.local/state/omarchy/preinstalls-removed ]]","action":"omarchy-launch-floating-terminal-with-presentation omarchy-remove-preinstalls"},
"remove.security": {"icon":"","label":"Security","keywords":"fingerprint fido2 ssh sshd"},
"remove.security": {"icon":"","label":"Security","title":"Remove","keywords":"fingerprint fido2 ssh sshd"},
"remove.security.fingerprint": {"icon":"󰈷","label":"Fingerprint","when":"omarchy-pkg-present fprintd","action":"omarchy-launch-floating-terminal-with-presentation omarchy-remove-security-fingerprint"},
"remove.security.fido2": {"icon":"","label":"Fido2","when":"omarchy-pkg-present pam-u2f","action":"omarchy-launch-floating-terminal-with-presentation omarchy-remove-security-fido2"},
"remove.security.sshd": {"icon":"󰣀","label":"SSHD","keywords":"ssh server remote","when":"systemctl is-enabled --quiet sshd","action":"omarchy-launch-floating-terminal-with-presentation omarchy-remove-security-sshd"},
@@ -264,11 +265,11 @@
"remove.gaming.lutris": {"icon":"","label":"Lutris","when":"omarchy-pkg-present lutris","action":"omarchy-launch-floating-terminal-with-presentation omarchy-remove-gaming-lutris"},
"remove.gaming.heroic": {"icon":"󱓟","label":"Heroic (Epic Games)","when":"omarchy-pkg-present heroic-games-launcher-bin","action":"omarchy-launch-floating-terminal-with-presentation omarchy-remove-gaming-heroic"},
"remove.development.rails": {"icon":"󰫏","label":"Ruby on Rails","when":"[[ -d $HOME/.local/share/mise/installs/ruby ]]","action":"omarchy-launch-floating-terminal-with-presentation 'omarchy-remove-dev-env ruby'"},
"remove.development.javascript": {"icon":"","label":"JavaScript","keywords":"node bun deno"},
"remove.development.javascript": {"icon":"","label":"JavaScript","title":"Remove","keywords":"node bun deno"},
"remove.development.go": {"icon":"","label":"Go","keywords":"golang","when":"[[ -d $HOME/.local/share/mise/installs/go ]]","action":"omarchy-launch-floating-terminal-with-presentation 'omarchy-remove-dev-env go'"},
"remove.development.php": {"icon":"","label":"PHP","keywords":"laravel symfony"},
"remove.development.php": {"icon":"","label":"PHP","title":"Remove","keywords":"laravel symfony"},
"remove.development.python": {"icon":"","label":"Python","when":"[[ -d $HOME/.local/share/mise/installs/python ]]","action":"omarchy-launch-floating-terminal-with-presentation 'omarchy-remove-dev-env python'"},
"remove.development.elixir": {"icon":"","label":"Elixir","keywords":"phoenix"},
"remove.development.elixir": {"icon":"","label":"Elixir","title":"Remove","keywords":"phoenix"},
"remove.development.zig": {"icon":"","label":"Zig","when":"[[ -d $HOME/.local/share/mise/installs/zig ]]","action":"omarchy-launch-floating-terminal-with-presentation 'omarchy-remove-dev-env zig'"},
"remove.development.rust": {"icon":"","label":"Rust","when":"[[ -d $HOME/.rustup ]]","action":"omarchy-launch-floating-terminal-with-presentation 'omarchy-remove-dev-env rust'"},
"remove.development.java": {"icon":"","label":"Java","when":"[[ -d $HOME/.local/share/mise/installs/java ]]","action":"omarchy-launch-floating-terminal-with-presentation 'omarchy-remove-dev-env java'"},
+2 -1
View File
@@ -274,6 +274,7 @@ Item {
kind: "action",
icon: (value === current) ? "✓" : (spec.icon || ""),
label: label,
title: "",
target: "",
keywords: spec.keywordsFor(value),
description: "",
@@ -885,7 +886,7 @@ Item {
anchors.left: parent.left
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
text: root.filterText || (root.dmenuActive ? (root.dmenuPrompt + "…") : ((root.item(root.activeMenu) ? root.item(root.activeMenu).label : "Go") + "…"))
text: root.filterText || (root.dmenuActive ? (root.dmenuPrompt + "…") : ((root.item(root.activeMenu) ? (root.item(root.activeMenu).title || root.item(root.activeMenu).label) : "Go") + "…"))
color: root.foreground
opacity: root.filterText ? 1 : 0.58
font.family: root.fontFamily
+2 -1
View File
@@ -40,6 +40,7 @@ function normalizeItem(id, raw) {
icon: value.icon || "",
iconFont: value.iconFont || "",
label: value.label || id,
title: value.title || "",
target: value.target || "",
keywords: normalizeKeywords(id, aliases, value.keywords),
description: value.description || "",
@@ -96,7 +97,7 @@ function mergeMenuSources(defaultItems, userItems) {
}
if (!nextItems.root) {
nextItems.root = { id: "root", parent: "", kind: "menu", icon: "", iconFont: "", label: "Go", target: "", keywords: "", description: "", aliases: [], when: "", checked: "", action: "", provider: "" }
nextItems.root = { id: "root", parent: "", kind: "menu", icon: "", iconFont: "", label: "Go", title: "", target: "", keywords: "", description: "", aliases: [], when: "", checked: "", action: "", provider: "" }
nextOrder.unshift("root")
}
for (var k3 = 0; k3 < nextOrder.length; k3++) nextItems[nextOrder[k3]].order = k3
+1
View File
@@ -36,6 +36,7 @@ assertDeepEqual(
icon: '',
iconFont: '',
label: 'Themes',
title: '',
target: '',
keywords: 'appearance colors',
description: '',