From 1e928d58db8598e6b3d90121208edf1bc20dda80 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 22 Jul 2026 16:06:55 -0700 Subject: [PATCH] Remove menu keywords feature --- config/omarchy/extensions/omarchy-menu.jsonc | 7 +- default/omarchy/omarchy-menu.jsonc | 289 +++++++++---------- shell/plugins/menu/Menu.qml | 15 +- shell/plugins/menu/MenuModel.js | 29 +- test/shell.d/menu-test.sh | 7 +- 5 files changed, 161 insertions(+), 186 deletions(-) diff --git a/config/omarchy/extensions/omarchy-menu.jsonc b/config/omarchy/extensions/omarchy-menu.jsonc index ca9e95f6..96823968 100644 --- a/config/omarchy/extensions/omarchy-menu.jsonc +++ b/config/omarchy/extensions/omarchy-menu.jsonc @@ -12,15 +12,14 @@ // target Existing submenu id to open. Use for links/aliases. // provider Runtime provider function/command returning JSON rows. // aliases alternate `omarchy menu summon ` routes; also searchable. - // keywords Extra search terms beyond id/label/aliases. // description Optional subtitle and extra search text. // when Shell condition; hide row when it fails. // checked Shell condition; append ✓ when it succeeds. // // Examples: - // "personal": {"icon":"","label":"Personal","keywords":"notes projects"}, - // "personal.notes": {"icon":"󰎞","label":"Notes","action":"omarchy-launch-editor ~/notes","keywords":"notes"}, - // "personal.files": {"icon":"","label":"Files","action":"uwsm-app -- nautilus ~/Documents","keywords":"files documents"}, + // "personal": {"icon":"","label":"Personal"}, + // "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. diff --git a/default/omarchy/omarchy-menu.jsonc b/default/omarchy/omarchy-menu.jsonc index f497fb1c..05126ceb 100644 --- a/default/omarchy/omarchy-menu.jsonc +++ b/default/omarchy/omarchy-menu.jsonc @@ -9,105 +9,104 @@ // Optional fields: // aliases alternate `omarchy menu summon ` 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 // Root Menu "apps": {"icon":"󰀻","label":"Apps","aliases":["app","applications"],"action":"omarchy-shell shell summon omarchy.launcher"}, - "learn": {"icon":"󰧑","label":"Learn","keywords":"manual docs help"}, + "learn": {"icon":"󰧑","label":"Learn"}, "trigger": {"icon":"󱓞","label":"Trigger"}, "style": {"icon":"","label":"Style"}, "setup": {"icon":"","label":"Setup","aliases":["settings"]}, "install": {"icon":"󰉉","label":"Install"}, "remove": {"icon":"󰭌","label":"Remove","aliases":["uninstall"]}, - "update": {"icon":"","label":"Update","aliases":["restart","refresh"],"keywords":"upgrade channel firmware timezone"}, - "about": {"icon":"","label":"About","keywords":"omarchy system information","action":"omarchy-launch-about"}, - "system": {"icon":"","label":"System","aliases":["power-menu"],"keywords":"lock logout reboot shutdown suspend hibernate"}, + "update": {"icon":"","label":"Update","aliases":["restart","refresh"]}, + "about": {"icon":"","label":"About","action":"omarchy-launch-about"}, + "system": {"icon":"","label":"System","aliases":["power-menu"]}, // System "system.screensaver": {"icon":"󱄄","label":"Screensaver","action":"omarchy-launch-screensaver force"}, - "system.lock": {"icon":"","label":"Lock","keywords":"screen","action":"omarchy-system-lock"}, - "system.suspend": {"icon":"󰒲","label":"Suspend","keywords":"sleep","when":"! omarchy-toggle-enabled suspend-off","action":"systemctl suspend"}, - "system.hibernate": {"icon":"󰤁","label":"Hibernate","keywords":"sleep","when":"omarchy-hibernation-available","action":"systemctl hibernate"}, - "system.logout": {"icon":"󰍃","label":"Logout","keywords":"sign out","action":"omarchy-system-logout"}, - "system.reboot": {"icon":"󰜉","label":"Reboot","keywords":"restart","action":"omarchy-system-reboot"}, - "system.shutdown": {"icon":"󰐥","label":"Shutdown","keywords":"power off","action":"omarchy-system-shutdown"}, + "system.lock": {"icon":"","label":"Lock","action":"omarchy-system-lock"}, + "system.suspend": {"icon":"󰒲","label":"Suspend","when":"! omarchy-toggle-enabled suspend-off","action":"systemctl suspend"}, + "system.hibernate": {"icon":"󰤁","label":"Hibernate","when":"omarchy-hibernation-available","action":"systemctl hibernate"}, + "system.logout": {"icon":"󰍃","label":"Logout","action":"omarchy-system-logout"}, + "system.reboot": {"icon":"󰜉","label":"Reboot","action":"omarchy-system-reboot"}, + "system.shutdown": {"icon":"󰐥","label":"Shutdown","action":"omarchy-system-shutdown"}, // Learn - "learn.keybindings": {"icon":"","label":"Keybindings","keywords":"keyboard shortcuts bindings","action":"omarchy-menu-keybindings"}, - "learn.omarchy": {"icon":"","label":"Omarchy","keywords":"manual documentation","action":"omarchy-launch-webapp 'https://learn.omacom.io/2/the-omarchy-manual'"}, - "learn.hyprland": {"icon":"","label":"Hyprland","keywords":"wiki docs","action":"omarchy-launch-webapp 'https://wiki.hypr.land/'"}, - "learn.arch": {"icon":"󰣇","label":"Arch","keywords":"linux wiki docs","action":"omarchy-launch-webapp 'https://wiki.archlinux.org/title/Main_page'"}, - "learn.neovim": {"icon":"","label":"Neovim","keywords":"lazyvim keymaps docs","action":"omarchy-launch-webapp 'https://www.lazyvim.org/keymaps'"}, - "learn.bash": {"icon":"󱆃","label":"Bash","keywords":"shell cheatsheet","action":"omarchy-launch-webapp 'https://devhints.io/bash'"}, - "learn.tmux-keybindings": {"icon":"","label":"Tmux","keywords":"keyboard shortcuts bindings terminal","action":"omarchy-menu-tmux-keybindings"}, + "learn.keybindings": {"icon":"","label":"Keybindings","action":"omarchy-menu-keybindings"}, + "learn.omarchy": {"icon":"","label":"Omarchy","action":"omarchy-launch-webapp 'https://learn.omacom.io/2/the-omarchy-manual'"}, + "learn.hyprland": {"icon":"","label":"Hyprland","action":"omarchy-launch-webapp 'https://wiki.hypr.land/'"}, + "learn.arch": {"icon":"󰣇","label":"Arch","action":"omarchy-launch-webapp 'https://wiki.archlinux.org/title/Main_page'"}, + "learn.neovim": {"icon":"","label":"Neovim","action":"omarchy-launch-webapp 'https://www.lazyvim.org/keymaps'"}, + "learn.bash": {"icon":"󱆃","label":"Bash","action":"omarchy-launch-webapp 'https://devhints.io/bash'"}, + "learn.tmux-keybindings": {"icon":"","label":"Tmux","action":"omarchy-menu-tmux-keybindings"}, // Trigger - "trigger.reminder": {"icon":"󰢌","label":"Reminder","aliases":["reminder"],"keywords":"timer notification remind"}, - "trigger.capture": {"icon":"","label":"Capture","aliases":["capture","screenshot","screenrecord","screen-record","screenrecording"],"keywords":"color text extraction"}, - "trigger.capture.screenshot": {"icon":"","label":"Screenshot","keywords":"picture","action":"omarchy-capture-screenshot"}, - "trigger.capture.screenrecord.stop": {"icon":"","label":"Stop Screenrecording","keywords":"recording video","when":"pgrep -f '^gpu-screen-recorder'","action":"omarchy-capture-screenrecording --stop-recording"}, - "trigger.capture.screenrecord": {"icon":"","label":"Screenrecord","keywords":"record screen video"}, - "trigger.capture.text": {"icon":"󰴑","label":"Text","keywords":"ocr text extraction","action":"omarchy-capture-text"}, - "trigger.capture.color": {"icon":"󰃉","label":"Color","keywords":"picker hyprpicker","action":"pkill hyprpicker || hyprpicker -a"}, + "trigger.reminder": {"icon":"󰢌","label":"Reminder","aliases":["reminder"]}, + "trigger.capture": {"icon":"","label":"Capture","aliases":["capture","screenshot","screenrecord","screen-record","screenrecording"]}, + "trigger.capture.screenshot": {"icon":"","label":"Screenshot","action":"omarchy-capture-screenshot"}, + "trigger.capture.screenrecord.stop": {"icon":"","label":"Stop Screenrecording","when":"pgrep -f '^gpu-screen-recorder'","action":"omarchy-capture-screenrecording --stop-recording"}, + "trigger.capture.screenrecord": {"icon":"","label":"Screenrecord"}, + "trigger.capture.text": {"icon":"󰴑","label":"Text","action":"omarchy-capture-text"}, + "trigger.capture.color": {"icon":"󰃉","label":"Color","action":"pkill hyprpicker || hyprpicker -a"}, "trigger.capture.screenrecord.no-audio": {"icon":"","label":"With no audio","action":"omarchy-capture-screenrecording"}, "trigger.capture.screenrecord.desktop-audio": {"icon":"","label":"With desktop audio","action":"omarchy-capture-screenrecording --with-desktop-audio"}, - "trigger.capture.screenrecord.microphone": {"icon":"","label":"With desktop + microphone audio","keywords":"mic","action":"omarchy-capture-screenrecording --with-desktop-audio --with-microphone-audio"}, - "trigger.capture.screenrecord.webcam": {"icon":"","label":"With desktop + microphone audio + webcam","keywords":"camera","action":"omarchy-capture-screenrecording-with-webcam"}, - "trigger.transcode": {"icon":"󰧸","label":"Transcode","keywords":"convert image video","action":"omarchy-transcode"}, - "trigger.share": {"icon":"","label":"Share","aliases":["share"],"keywords":"clipboard file folder localsend"}, - "trigger.toggle": {"icon":"󰔎","label":"Toggle","aliases":["toggle","toggles"],"keywords":"screensaver nightlight idle notifications bar quickshell"}, - "trigger.hardware": {"icon":"","label":"Hardware","aliases":["hardware","hw"],"keywords":"monitor touchpad touchscreen gpu"}, - "trigger.hardware.laptop-display": {"icon":"󰛧","label":"Laptop Display","keywords":"monitor","when":"omarchy-hw-laptop","action":"omarchy-hyprland-monitor-internal toggle"}, - "trigger.hardware.mirror-display": {"icon":"󰍹","label":"Mirror Display","keywords":"monitor","when":"omarchy-hw-laptop","action":"omarchy-hyprland-monitor-internal-mirror toggle"}, - "trigger.hardware.hybrid-gpu": {"icon":"","label":"Hybrid GPU","keywords":"graphics","when":"omarchy-hw-hybrid-gpu","action":"omarchy-launch-floating-terminal-with-presentation omarchy-toggle-hybrid-gpu"}, - "trigger.hardware.touchpad": {"icon":"󰟸","label":"Touchpad","keywords":"trackpad","when":"omarchy-hw-touchpad","action":"omarchy-toggle-touchpad"}, + "trigger.capture.screenrecord.microphone": {"icon":"","label":"With desktop + microphone audio","action":"omarchy-capture-screenrecording --with-desktop-audio --with-microphone-audio"}, + "trigger.capture.screenrecord.webcam": {"icon":"","label":"With desktop + microphone audio + webcam","action":"omarchy-capture-screenrecording-with-webcam"}, + "trigger.transcode": {"icon":"󰧸","label":"Transcode","action":"omarchy-transcode"}, + "trigger.share": {"icon":"","label":"Share","aliases":["share"]}, + "trigger.toggle": {"icon":"󰔎","label":"Toggle","aliases":["toggle","toggles"]}, + "trigger.hardware": {"icon":"","label":"Hardware","aliases":["hardware","hw"]}, + "trigger.hardware.laptop-display": {"icon":"󰛧","label":"Laptop Display","when":"omarchy-hw-laptop","action":"omarchy-hyprland-monitor-internal toggle"}, + "trigger.hardware.mirror-display": {"icon":"󰍹","label":"Mirror Display","when":"omarchy-hw-laptop","action":"omarchy-hyprland-monitor-internal-mirror toggle"}, + "trigger.hardware.hybrid-gpu": {"icon":"","label":"Hybrid GPU","when":"omarchy-hw-hybrid-gpu","action":"omarchy-launch-floating-terminal-with-presentation omarchy-toggle-hybrid-gpu"}, + "trigger.hardware.touchpad": {"icon":"󰟸","label":"Touchpad","when":"omarchy-hw-touchpad","action":"omarchy-toggle-touchpad"}, "trigger.hardware.touchpad-haptics": {"icon":"󰌌","label":"Touchpad Haptics"}, "trigger.hardware.touchpad-haptics.low": {"icon":"󰌌","label":"low","when":"omarchy-hw-dell-xps-haptic-touchpad && omarchy-cmd-present dell-xps-touchpad-haptics","checked":"[[ \"$(dell-xps-touchpad-haptics get)\" == \"low\" ]]","action":"dell-xps-touchpad-haptics set low"}, - "trigger.hardware.touchpad-haptics.mid": {"icon":"󰌌","label":"mid","keywords":"medium","when":"omarchy-hw-dell-xps-haptic-touchpad && omarchy-cmd-present dell-xps-touchpad-haptics","checked":"[[ \"$(dell-xps-touchpad-haptics get)\" == \"mid\" ]]","action":"dell-xps-touchpad-haptics set mid"}, + "trigger.hardware.touchpad-haptics.mid": {"icon":"󰌌","label":"mid","when":"omarchy-hw-dell-xps-haptic-touchpad && omarchy-cmd-present dell-xps-touchpad-haptics","checked":"[[ \"$(dell-xps-touchpad-haptics get)\" == \"mid\" ]]","action":"dell-xps-touchpad-haptics set mid"}, "trigger.hardware.touchpad-haptics.high": {"icon":"󰌌","label":"high","when":"omarchy-hw-dell-xps-haptic-touchpad && omarchy-cmd-present dell-xps-touchpad-haptics","checked":"[[ \"$(dell-xps-touchpad-haptics get)\" == \"high\" ]]","action":"dell-xps-touchpad-haptics set high"}, - "trigger.hardware.touchscreen": {"icon":"󰆽","label":"Touchscreen","keywords":"tablet","when":"omarchy-hw-touchscreen","action":"omarchy-toggle-touchscreen"}, - "trigger.reminder.set": {"icon":"󰢌","label":"Set one","aliases":["reminder-set","remind"],"keywords":"timer","action":"omarchy-reminder -i"}, - "trigger.reminder.show": {"icon":"󰢌","label":"Show all","keywords":"list","action":"omarchy-reminder show"}, - "trigger.reminder.clear": {"icon":"󰢌","label":"Clear all","keywords":"delete","action":"omarchy-reminder clear"}, + "trigger.hardware.touchscreen": {"icon":"󰆽","label":"Touchscreen","when":"omarchy-hw-touchscreen","action":"omarchy-toggle-touchscreen"}, + "trigger.reminder.set": {"icon":"󰢌","label":"Set one","aliases":["reminder-set","remind"],"action":"omarchy-reminder -i"}, + "trigger.reminder.show": {"icon":"󰢌","label":"Show all","action":"omarchy-reminder show"}, + "trigger.reminder.clear": {"icon":"󰢌","label":"Clear all","action":"omarchy-reminder clear"}, "trigger.share.clipboard": {"icon":"","label":"Clipboard","action":"omarchy-menu-share clipboard"}, "trigger.share.file": {"icon":"","label":"File","action":"xdg-terminal-exec --app-id=org.omarchy.terminal bash -c 'omarchy-menu-share file'"}, - "trigger.share.folder": {"icon":"","label":"Folder","keywords":"directory","action":"xdg-terminal-exec --app-id=org.omarchy.terminal bash -c 'omarchy-menu-share folder'"}, - "trigger.share.receive": {"icon":"󰥦","label":"Receive","keywords":"localsend","action":"uwsm-app -- localsend"}, - "trigger.toggle.idle-lock": {"icon":"󰅶","label":"Stay Awake","keywords":"idle quickshell","action":"omarchy-toggle-idle"}, - "trigger.toggle.notifications": {"icon":"󰂛","label":"Notifications","keywords":"silence dnd","action":"omarchy-toggle-notification-silencing"}, + "trigger.share.folder": {"icon":"","label":"Folder","action":"xdg-terminal-exec --app-id=org.omarchy.terminal bash -c 'omarchy-menu-share folder'"}, + "trigger.share.receive": {"icon":"󰥦","label":"Receive","action":"uwsm-app -- localsend"}, + "trigger.toggle.idle-lock": {"icon":"󰅶","label":"Stay Awake","action":"omarchy-toggle-idle"}, + "trigger.toggle.notifications": {"icon":"󰂛","label":"Notifications","action":"omarchy-toggle-notification-silencing"}, "trigger.toggle.screensaver": {"icon":"󱄄","label":"Screensaver","action":"omarchy-toggle-screensaver"}, - "trigger.toggle.nightlight": {"icon":"󰔎","label":"Nightlight","keywords":"night light hyprsunset","action":"omarchy-toggle-nightlight"}, - "trigger.toggle.top-bar": {"icon":"󰍜","label":"Menu Bar","keywords":"top bar quickshell","action":"omarchy-toggle-bar"}, + "trigger.toggle.nightlight": {"icon":"󰔎","label":"Nightlight","action":"omarchy-toggle-nightlight"}, + "trigger.toggle.top-bar": {"icon":"󰍜","label":"Menu Bar","action":"omarchy-toggle-bar"}, "trigger.toggle.workspace-layout": {"icon":"󱂬","label":"Workspace Layout","action":"omarchy-hyprland-workspace-layout-toggle"}, "trigger.toggle.window-gaps": {"icon":"","label":"Window Gaps","action":"omarchy-hyprland-window-gaps-toggle"}, - "trigger.toggle.one-window-ratio": {"icon":"","label":"1-Window Ratio","keywords":"square","action":"omarchy-hyprland-window-single-square-aspect-toggle"}, + "trigger.toggle.one-window-ratio": {"icon":"","label":"1-Window Ratio","action":"omarchy-hyprland-window-single-square-aspect-toggle"}, // Style - "style.theme": {"icon":"󰸌","label":"Theme","aliases":["theme","themes"],"keywords":"colors","action":"theme=$(omarchy-theme-switcher); [[ -n $theme ]] && omarchy-theme-set \"$theme\""}, + "style.theme": {"icon":"󰸌","label":"Theme","aliases":["theme","themes"],"action":"theme=$(omarchy-theme-switcher); [[ -n $theme ]] && omarchy-theme-set \"$theme\""}, "style.background": {"icon":"","label":"Background","aliases":["background","wallpaper"],"action":"background=$(omarchy-theme-bg-switcher); [[ -n $background ]] && omarchy-theme-bg-set \"$background\""}, - "style.font": {"icon":"","label":"Font","keywords":"typeface","provider":"fonts"}, - "style.bar": {"icon":"󰍜","label":"Menu Bar","keywords":"quickshell top bottom left right settings"}, + "style.font": {"icon":"","label":"Font","provider":"fonts"}, + "style.bar": {"icon":"󰍜","label":"Menu Bar"}, "style.bar.position": {"icon":"","label":"Position"}, "style.bar.transparency": {"icon":"󰂵","label":"Transparency","action":"omarchy-bar transparent toggle"}, - "style.hyprland": {"icon":"","label":"Hyprland","keywords":"look feel","action":"omarchy-launch-config-editor \"$HOME/.config/hypr/looknfeel.lua\""}, - "style.screensaver": {"icon":"󱄄","label":"Screensaver","keywords":"branding"}, - "style.about": {"icon":"","label":"About","keywords":"branding"}, - "style.install": {"icon":"󰉉","label":"Install","keywords":"theme background font"}, + "style.hyprland": {"icon":"","label":"Hyprland","action":"omarchy-launch-config-editor \"$HOME/.config/hypr/looknfeel.lua\""}, + "style.screensaver": {"icon":"󱄄","label":"Screensaver"}, + "style.about": {"icon":"","label":"About"}, + "style.install": {"icon":"󰉉","label":"Install"}, "style.bar.position.top": {"icon":"󰁝","label":"Top","action":"omarchy-bar position top"}, "style.bar.position.bottom": {"icon":"󰁅","label":"Bottom","action":"omarchy-bar position bottom"}, "style.bar.position.left": {"icon":"󰁍","label":"Left","action":"omarchy-bar position left"}, "style.bar.position.right": {"icon":"󰁔","label":"Right","action":"omarchy-bar position right"}, - "style.about.text": {"icon":"","label":"Edit Text","keywords":"branding","action":"omarchy-branding-about text"}, - "style.about.image": {"icon":"","label":"Set From Image","keywords":"branding","action":"omarchy-branding-about image"}, - "style.about.default": {"icon":"","label":"Restore Default","keywords":"branding","action":"omarchy-branding-about reset"}, - "style.screensaver.text": {"icon":"","label":"Edit Text","keywords":"branding","action":"omarchy-branding-screensaver text"}, - "style.screensaver.image": {"icon":"","label":"Set From Image","keywords":"branding","action":"omarchy-branding-screensaver image"}, - "style.screensaver.default": {"icon":"","label":"Restore Default","keywords":"branding","action":"omarchy-branding-screensaver reset"}, + "style.about.text": {"icon":"","label":"Edit Text","action":"omarchy-branding-about text"}, + "style.about.image": {"icon":"","label":"Set From Image","action":"omarchy-branding-about image"}, + "style.about.default": {"icon":"","label":"Restore Default","action":"omarchy-branding-about reset"}, + "style.screensaver.text": {"icon":"","label":"Edit Text","action":"omarchy-branding-screensaver text"}, + "style.screensaver.image": {"icon":"","label":"Set From Image","action":"omarchy-branding-screensaver image"}, + "style.screensaver.default": {"icon":"","label":"Restore Default","action":"omarchy-branding-screensaver reset"}, "style.install.theme": {"icon":"󰸌","label":"Theme","action":"omarchy-launch-floating-terminal-with-presentation omarchy-theme-install"}, - "style.install.background": {"icon":"","label":"Background","keywords":"wallpaper","action":"omarchy-theme-bg-install"}, + "style.install.background": {"icon":"","label":"Background","action":"omarchy-theme-bg-install"}, "style.install.font": {"icon":"","label":"Font"}, "style.install.font.cascadia": {"icon":"","label":"Cascadia Mono","action":"omarchy-install-font 'Cascadia Mono' ttf-cascadia-mono-nerd 'CaskaydiaMono Nerd Font'"}, "style.install.font.meslo": {"icon":"","label":"Meslo LG Mono","action":"omarchy-install-font 'Meslo LG Mono' ttf-meslo-nerd 'MesloLGL Nerd Font'"}, @@ -117,14 +116,14 @@ "style.install.font.iosevka": {"icon":"","label":"Iosevka","action":"omarchy-install-font Iosevka ttf-iosevka-nerd 'Iosevka Nerd Font Mono'"}, // Setup - "setup.monitors": {"icon":"󰍹","label":"Monitors","keywords":"monitor display hyprland","action":"omarchy-launch-config-editor \"$HOME/.config/hypr/monitors.lua\""}, - "setup.keybindings": {"icon":"","label":"Keybindings","keywords":"keyboard shortcuts","when":"[[ -f ~/.config/hypr/bindings.lua ]]","action":"omarchy-launch-config-editor \"$HOME/.config/hypr/bindings.lua\""}, - "setup.input": {"icon":"","label":"Input","keywords":"keyboard touchpad mouse","when":"[[ -f ~/.config/hypr/input.lua ]]","action":"omarchy-launch-config-editor \"$HOME/.config/hypr/input.lua\""}, + "setup.monitors": {"icon":"󰍹","label":"Monitors","action":"omarchy-launch-config-editor \"$HOME/.config/hypr/monitors.lua\""}, + "setup.keybindings": {"icon":"","label":"Keybindings","when":"[[ -f ~/.config/hypr/bindings.lua ]]","action":"omarchy-launch-config-editor \"$HOME/.config/hypr/bindings.lua\""}, + "setup.input": {"icon":"","label":"Input","when":"[[ -f ~/.config/hypr/input.lua ]]","action":"omarchy-launch-config-editor \"$HOME/.config/hypr/input.lua\""}, "setup.direct-boot": {"icon":"","label":"Direct Boot","action":"omarchy-launch-floating-terminal-with-presentation omarchy-config-direct-boot"}, - "setup.default": {"icon":"","label":"Defaults","aliases":["default","defaults"],"keywords":"browser terminal editor"}, + "setup.default": {"icon":"","label":"Defaults","aliases":["default","defaults"]}, "setup.default.browser": {"icon":"","label":"Browser"}, "setup.default.browser.chromium": {"icon":"","label":"Chromium","when":"omarchy-cmd-present chromium","checked":"[[ \"$(omarchy-default-browser)\" == \"chromium\" ]]","action":"omarchy-default-browser chromium"}, - "setup.default.browser.chrome": {"icon":"󰊯","label":"Chrome","keywords":"google","when":"omarchy-cmd-present google-chrome-stable","checked":"[[ \"$(omarchy-default-browser)\" == \"chrome\" ]]","action":"omarchy-default-browser chrome"}, + "setup.default.browser.chrome": {"icon":"󰊯","label":"Chrome","when":"omarchy-cmd-present google-chrome-stable","checked":"[[ \"$(omarchy-default-browser)\" == \"chrome\" ]]","action":"omarchy-default-browser chrome"}, "setup.default.browser.brave": {"icon":"󰖟","label":"Brave","when":"omarchy-cmd-present brave","checked":"[[ \"$(omarchy-default-browser)\" == \"brave\" ]]","action":"omarchy-default-browser brave"}, "setup.default.browser.brave-origin": {"icon":"󰖟","label":"Brave Origin","when":"omarchy-cmd-present brave-origin","checked":"[[ \"$(omarchy-default-browser)\" == \"brave-origin\" ]]","action":"omarchy-default-browser brave-origin"}, "setup.default.browser.edge": {"icon":"󰇩","label":"Edge","when":"omarchy-cmd-present microsoft-edge-stable","checked":"[[ \"$(omarchy-default-browser)\" == \"edge\" ]]","action":"omarchy-default-browser edge"}, @@ -136,54 +135,54 @@ "setup.default.terminal.ghostty": {"icon":"","label":"Ghostty","when":"omarchy-cmd-present ghostty","checked":"[[ \"$(omarchy-default-terminal)\" == \"ghostty\" ]]","action":"omarchy-default-terminal ghostty"}, "setup.default.terminal.kitty": {"icon":"","label":"Kitty","when":"omarchy-cmd-present kitty","checked":"[[ \"$(omarchy-default-terminal)\" == \"kitty\" ]]","action":"omarchy-default-terminal kitty"}, "setup.default.editor": {"icon":"","label":"Editor"}, - "setup.default.editor.neovim": {"icon":"","label":"Neovim","keywords":"nvim","when":"omarchy-cmd-present nvim","checked":"[[ \"$(omarchy-default-editor)\" == \"nvim\" ]]","action":"omarchy-default-editor nvim"}, - "setup.default.editor.vscode": {"icon":"","label":"VSCode","keywords":"code","when":"omarchy-cmd-present code","checked":"[[ \"$(omarchy-default-editor)\" == \"code\" ]]","action":"omarchy-default-editor code"}, + "setup.default.editor.neovim": {"icon":"","label":"Neovim","when":"omarchy-cmd-present nvim","checked":"[[ \"$(omarchy-default-editor)\" == \"nvim\" ]]","action":"omarchy-default-editor nvim"}, + "setup.default.editor.vscode": {"icon":"","label":"VSCode","when":"omarchy-cmd-present code","checked":"[[ \"$(omarchy-default-editor)\" == \"code\" ]]","action":"omarchy-default-editor code"}, "setup.default.editor.cursor": {"icon":"","label":"Cursor","when":"omarchy-cmd-present cursor","checked":"[[ \"$(omarchy-default-editor)\" == \"cursor\" ]]","action":"omarchy-default-editor cursor"}, "setup.default.editor.zed": {"icon":"","label":"Zed","when":"omarchy-cmd-present zeditor","checked":"[[ \"$(omarchy-default-editor)\" == \"zeditor\" ]]","action":"omarchy-default-editor zed"}, "setup.default.editor.sublime": {"icon":"","label":"Sublime Text","when":"omarchy-cmd-present sublime_text","checked":"[[ \"$(omarchy-default-editor)\" == \"sublime_text\" ]]","action":"omarchy-default-editor sublime_text"}, "setup.default.editor.helix": {"icon":"","label":"Helix","when":"omarchy-cmd-present helix","checked":"[[ \"$(omarchy-default-editor)\" == \"helix\" ]]","action":"omarchy-default-editor helix"}, "setup.default.editor.vim": {"icon":"","label":"Vim","when":"omarchy-cmd-present vim","checked":"[[ \"$(omarchy-default-editor)\" == \"vim\" ]]","action":"omarchy-default-editor vim"}, "setup.default.editor.emacs": {"icon":"","label":"Emacs","when":"omarchy-cmd-present emacs","checked":"[[ \"$(omarchy-default-editor)\" == \"emacs\" ]]","action":"omarchy-default-editor emacs"}, - "setup.security": {"icon":"","label":"Security","keywords":"fingerprint fido2 ssh sshd"}, - "setup.config": {"icon":"","label":"Config","keywords":"files hyprland bar quickshell"}, + "setup.security": {"icon":"","label":"Security"}, + "setup.config": {"icon":"","label":"Config"}, "setup.security.fingerprint": {"icon":"󰈷","label":"Fingerprint","action":"omarchy-launch-floating-terminal-with-presentation omarchy-setup-security-fingerprint"}, - "setup.security.fido2": {"icon":"","label":"Fido2","keywords":"key","action":"omarchy-launch-floating-terminal-with-presentation omarchy-setup-security-fido2"}, - "setup.security.sshd": {"icon":"󰣀","label":"SSHD","keywords":"ssh server remote key","action":"omarchy-launch-floating-terminal-with-presentation omarchy-setup-security-sshd"}, + "setup.security.fido2": {"icon":"","label":"Fido2","action":"omarchy-launch-floating-terminal-with-presentation omarchy-setup-security-fido2"}, + "setup.security.sshd": {"icon":"󰣀","label":"SSHD","action":"omarchy-launch-floating-terminal-with-presentation omarchy-setup-security-sshd"}, "setup.security.passwordless-sudo": {"icon":"󰟵","label":"Passwordless Sudo","action":"omarchy-launch-floating-terminal-with-presentation omarchy-sudo-passwordless"}, "setup.config.hyprland": {"icon":"","label":"Hyprland","action":"omarchy-launch-config-editor \"$HOME/.config/hypr/hyprland.lua\""}, - "setup.config.hyprsunset": {"icon":"","label":"Hyprsunset","keywords":"night light","action":"omarchy-launch-config-editor ~/.config/hypr/hyprsunset.conf && omarchy-restart-hyprsunset"}, - "setup.config.xcompose": {"icon":"󰞅","label":"XCompose","keywords":"compose key","action":"omarchy-launch-config-editor ~/.XCompose && omarchy-restart-xcompose"}, + "setup.config.hyprsunset": {"icon":"","label":"Hyprsunset","action":"omarchy-launch-config-editor ~/.config/hypr/hyprsunset.conf && omarchy-restart-hyprsunset"}, + "setup.config.xcompose": {"icon":"󰞅","label":"XCompose","action":"omarchy-launch-config-editor ~/.XCompose && omarchy-restart-xcompose"}, // Install - "install.package": {"icon":"󰣇","label":"Package","keywords":"pacman aur","action":"xdg-terminal-exec --app-id=org.omarchy.terminal omarchy-pkg-install"}, - "install.aur": {"icon":"󰣇","label":"AUR","keywords":"package","action":"xdg-terminal-exec --app-id=org.omarchy.terminal omarchy-pkg-aur-install"}, - "install.webapp": {"icon":"","label":"Web App","keywords":"pwa","action":"omarchy-launch-floating-terminal-with-presentation omarchy-webapp-install"}, - "install.tui": {"icon":"","label":"TUI","keywords":"terminal app","action":"omarchy-launch-floating-terminal-with-presentation omarchy-tui-install"}, - "install.service": {"icon":"","label":"Service","keywords":"dropbox tailscale vpn"}, - "install.style": {"icon":"","label":"Style","keywords":"theme background font","target":"style.install"}, - "install.development": {"icon":"󰵮","label":"Development","keywords":"languages programming"}, - "install.editor": {"icon":"","label":"Editor","keywords":"ide"}, - "install.terminal": {"icon":"","label":"Terminal","keywords":"emulator"}, - "install.browser": {"icon":"","label":"Browser","keywords":"web"}, - "install.ai": {"icon":"󱚤","label":"AI","keywords":"dictation ollama lm studio crush"}, - "install.gaming": {"icon":"","label":"Gaming","keywords":"steam battlenet retroarch minecraft lutris heroic blizzard"}, - "install.windows": {"icon":"󰍲","label":"Windows","keywords":"vm","action":"omarchy-launch-floating-terminal-with-presentation 'omarchy-windows-vm install'"}, + "install.package": {"icon":"󰣇","label":"Package","action":"xdg-terminal-exec --app-id=org.omarchy.terminal omarchy-pkg-install"}, + "install.aur": {"icon":"󰣇","label":"AUR","action":"xdg-terminal-exec --app-id=org.omarchy.terminal omarchy-pkg-aur-install"}, + "install.webapp": {"icon":"","label":"Web App","action":"omarchy-launch-floating-terminal-with-presentation omarchy-webapp-install"}, + "install.tui": {"icon":"","label":"TUI","action":"omarchy-launch-floating-terminal-with-presentation omarchy-tui-install"}, + "install.service": {"icon":"","label":"Service"}, + "install.style": {"icon":"","label":"Style","target":"style.install"}, + "install.development": {"icon":"󰵮","label":"Development"}, + "install.editor": {"icon":"","label":"Editor"}, + "install.terminal": {"icon":"","label":"Terminal"}, + "install.browser": {"icon":"","label":"Browser"}, + "install.ai": {"icon":"󱚤","label":"AI"}, + "install.gaming": {"icon":"","label":"Gaming"}, + "install.windows": {"icon":"󰍲","label":"Windows","action":"omarchy-launch-floating-terminal-with-presentation 'omarchy-windows-vm install'"}, "install.browser.chrome": {"icon":"","label":"Chrome","action":"omarchy-launch-floating-terminal-with-presentation 'omarchy-install-browser chrome'"}, "install.browser.edge": {"icon":"","label":"Edge","action":"omarchy-launch-floating-terminal-with-presentation 'omarchy-install-browser edge'"}, "install.browser.brave": {"icon":"","label":"Brave","action":"omarchy-launch-floating-terminal-with-presentation 'omarchy-install-browser brave'"}, "install.browser.brave-origin": {"icon":"","label":"Brave Origin","action":"omarchy-launch-floating-terminal-with-presentation 'omarchy-install-browser brave-origin'"}, "install.browser.firefox": {"icon":"","label":"Firefox","action":"omarchy-launch-floating-terminal-with-presentation 'omarchy-install-browser firefox'"}, "install.browser.zen": {"icon":"󰖟","label":"Zen","action":"omarchy-launch-floating-terminal-with-presentation 'omarchy-install-browser zen'"}, - "install.service.1password": {"icon":"󰢁","label":"1Password","keywords":"password","action":"omarchy-launch-floating-terminal-with-presentation omarchy-install-service-1password"}, + "install.service.1password": {"icon":"󰢁","label":"1Password","action":"omarchy-launch-floating-terminal-with-presentation omarchy-install-service-1password"}, "install.service.dropbox": {"icon":"","label":"Dropbox","action":"omarchy-launch-floating-terminal-with-presentation omarchy-install-service-dropbox"}, - "install.service.spotify": {"icon":"󰓇","label":"Spotify","keywords":"music","action":"omarchy-launch-floating-terminal-with-presentation omarchy-install-service-spotify"}, - "install.service.signal": {"icon":"󰭹","label":"Signal","keywords":"messenger chat","action":"omarchy-launch-floating-terminal-with-presentation omarchy-install-service-signal"}, - "install.service.tailscale": {"icon":"","label":"Tailscale","keywords":"vpn","action":"omarchy-launch-floating-terminal-with-presentation omarchy-install-service-tailscale"}, - "install.service.nordvpn": {"icon":"󱇱","label":"NordVPN [AUR]","keywords":"vpn","action":"omarchy-launch-floating-terminal-with-presentation omarchy-install-service-nordvpn"}, + "install.service.spotify": {"icon":"󰓇","label":"Spotify","action":"omarchy-launch-floating-terminal-with-presentation omarchy-install-service-spotify"}, + "install.service.signal": {"icon":"󰭹","label":"Signal","action":"omarchy-launch-floating-terminal-with-presentation omarchy-install-service-signal"}, + "install.service.tailscale": {"icon":"","label":"Tailscale","action":"omarchy-launch-floating-terminal-with-presentation omarchy-install-service-tailscale"}, + "install.service.nordvpn": {"icon":"󱇱","label":"NordVPN [AUR]","action":"omarchy-launch-floating-terminal-with-presentation omarchy-install-service-nordvpn"}, "install.service.once": {"icon":"󰏖","label":"ONCE","action":"omarchy-launch-floating-terminal-with-presentation omarchy-install-service-once"}, - "install.service.bitwarden": {"icon":"󰟵","label":"Bitwarden","keywords":"password","action":"omarchy-install-and-launch Bitwarden 'bitwarden bitwarden-cli' bitwarden"}, - "install.service.chromium-account": {"icon":"","label":"Chromium Account","keywords":"google","action":"omarchy-launch-floating-terminal-with-presentation omarchy-install-chromium-google-account"}, - "install.editor.vscode": {"icon":"","label":"VSCode","keywords":"code","action":"omarchy-launch-floating-terminal-with-presentation omarchy-install-editor-vscode"}, + "install.service.bitwarden": {"icon":"󰟵","label":"Bitwarden","action":"omarchy-install-and-launch Bitwarden 'bitwarden bitwarden-cli' bitwarden"}, + "install.service.chromium-account": {"icon":"","label":"Chromium Account","action":"omarchy-launch-floating-terminal-with-presentation omarchy-install-chromium-google-account"}, + "install.editor.vscode": {"icon":"","label":"VSCode","action":"omarchy-launch-floating-terminal-with-presentation omarchy-install-editor-vscode"}, "install.editor.cursor": {"icon":"","label":"Cursor","action":"omarchy-install-and-launch Cursor cursor-bin cursor"}, "install.editor.zed": {"icon":"","label":"Zed","action":"omarchy-launch-floating-terminal-with-presentation omarchy-install-editor-zed"}, "install.editor.sublime": {"icon":"","label":"Sublime Text","action":"omarchy-install-and-launch 'Sublime Text' sublime-text-4 sublime_text"}, @@ -194,7 +193,7 @@ "install.terminal.foot": {"icon":"","label":"Foot","action":"omarchy-launch-floating-terminal-with-presentation 'omarchy-install-terminal foot'"}, "install.terminal.ghostty": {"icon":"","label":"Ghostty","action":"omarchy-launch-floating-terminal-with-presentation 'omarchy-install-terminal ghostty'"}, "install.terminal.kitty": {"icon":"","label":"Kitty","action":"omarchy-launch-floating-terminal-with-presentation 'omarchy-install-terminal kitty'"}, - "install.ai.dictation": {"icon":"","label":"Dictation","keywords":"voice","action":"omarchy-launch-floating-terminal-with-presentation omarchy-voxtype-install"}, + "install.ai.dictation": {"icon":"","label":"Dictation","action":"omarchy-launch-floating-terminal-with-presentation omarchy-voxtype-install"}, "install.ai.lm-studio": {"icon":"󱚤","label":"LM Studio","action":"omarchy-install-app 'LM Studio' lmstudio-bin"}, "install.ai.ollama": {"icon":"󱚤","label":"Ollama","action":"if omarchy-cmd-present nvidia-smi; then ollama_pkg=ollama-cuda; elif omarchy-cmd-present rocminfo; then ollama_pkg=ollama-rocm; else ollama_pkg=ollama; fi; install Ollama \"$ollama_pkg\""}, "install.ai.crush": {"icon":"󱚤","label":"Crush","action":"omarchy-install-app Crush crush-bin"}, @@ -204,17 +203,17 @@ "install.gaming.geforce-now": {"icon":"󰢹","label":"NVIDIA GeForce NOW","action":"omarchy-launch-floating-terminal-with-presentation omarchy-install-gaming-geforce-now"}, "install.gaming.xbox-cloud": {"icon":"","label":"Xbox Cloud Gaming","action":"omarchy-launch-floating-terminal-with-presentation omarchy-install-gaming-xbox-cloud"}, "install.gaming.xbox-controllers": {"icon":"󰂯","label":"Xbox Controllers","action":"omarchy-launch-floating-terminal-with-presentation omarchy-install-gaming-xbox-controllers"}, - "install.gaming.battlenet": {"icon":"","label":"Battle.net","keywords":"blizzard wow overwatch diablo","action":"omarchy-launch-floating-terminal-with-presentation omarchy-install-gaming-battlenet"}, + "install.gaming.battlenet": {"icon":"","label":"Battle.net","action":"omarchy-launch-floating-terminal-with-presentation omarchy-install-gaming-battlenet"}, "install.gaming.lutris": {"icon":"","label":"Lutris","action":"omarchy-launch-floating-terminal-with-presentation omarchy-install-gaming-lutris"}, "install.gaming.heroic": {"icon":"󱓟","label":"Heroic (Epic Games)","action":"omarchy-launch-floating-terminal-with-presentation omarchy-install-gaming-heroic"}, "install.gaming.retro-launcher": {"icon":"󰯉","label":"RetroArch Game Launcher","action":"omarchy-games-retro-install"}, "install.development.rails": {"icon":"󰫏","label":"Ruby on Rails","action":"omarchy-launch-floating-terminal-with-presentation 'omarchy-install-dev-env ruby'"}, - "install.development.docker-dbs": {"icon":"","label":"Docker DB","keywords":"databases","action":"omarchy-launch-floating-terminal-with-presentation omarchy-install-docker-dbs"}, - "install.development.javascript": {"icon":"","label":"JavaScript","keywords":"node bun deno"}, - "install.development.go": {"icon":"","label":"Go","keywords":"golang","action":"omarchy-launch-floating-terminal-with-presentation 'omarchy-install-dev-env go'"}, - "install.development.php": {"icon":"","label":"PHP","keywords":"laravel symfony"}, + "install.development.docker-dbs": {"icon":"","label":"Docker DB","action":"omarchy-launch-floating-terminal-with-presentation omarchy-install-docker-dbs"}, + "install.development.javascript": {"icon":"","label":"JavaScript"}, + "install.development.go": {"icon":"","label":"Go","action":"omarchy-launch-floating-terminal-with-presentation 'omarchy-install-dev-env go'"}, + "install.development.php": {"icon":"","label":"PHP"}, "install.development.python": {"icon":"","label":"Python","action":"omarchy-launch-floating-terminal-with-presentation 'omarchy-install-dev-env python'"}, - "install.development.elixir": {"icon":"","label":"Elixir","keywords":"phoenix"}, + "install.development.elixir": {"icon":"","label":"Elixir"}, "install.development.zig": {"icon":"","label":"Zig","action":"omarchy-launch-floating-terminal-with-presentation 'omarchy-install-dev-env zig'"}, "install.development.rust": {"icon":"","label":"Rust","action":"omarchy-launch-floating-terminal-with-presentation 'omarchy-install-dev-env rust'"}, "install.development.java": {"icon":"","label":"Java","action":"omarchy-launch-floating-terminal-with-presentation 'omarchy-install-dev-env java'"}, @@ -232,21 +231,21 @@ "install.development.elixir.phoenix": {"icon":"","label":"Phoenix","action":"omarchy-launch-floating-terminal-with-presentation 'omarchy-install-dev-env phoenix'"}, // Remove - "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","title":"Remove","keywords":"uninstall languages"}, - "remove.theme": {"icon":"󰸌","label":"Theme","keywords":"uninstall","action":"omarchy-theme-remove"}, - "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","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.package": {"icon":"󰣇","label":"Package","action":"xdg-terminal-exec --app-id=org.omarchy.terminal omarchy-pkg-remove"}, + "remove.webapp": {"icon":"","label":"Web App","when":"grep -qE '^Exec=.*(omarchy-launch-webapp|omarchy-webapp-handler)' $HOME/.local/share/applications/*.desktop","action":"omarchy-webapp-remove"}, + "remove.tui": {"icon":"","label":"TUI","when":"grep -qE '^Exec=.*(\\$TERMINAL|xdg-terminal-exec).*-e' $HOME/.local/share/applications/*.desktop","action":"omarchy-tui-remove"}, + "remove.development": {"icon":"󰵮","label":"Development","title":"Remove"}, + "remove.theme": {"icon":"󰸌","label":"Theme","action":"omarchy-theme-remove"}, + "remove.browser": {"icon":"","label":"Browser","title":"Remove"}, + "remove.dictation": {"icon":"","label":"Dictation","when":"omarchy-pkg-present voxtype-bin","action":"omarchy-launch-floating-terminal-with-presentation omarchy-voxtype-remove"}, + "remove.gaming": {"icon":"","label":"Gaming","title":"Remove"}, + "remove.service": {"icon":"","label":"Services","title":"Remove"}, + "remove.windows": {"icon":"󰍲","label":"Windows","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","title":"Remove","keywords":"fingerprint fido2 ssh sshd"}, + "remove.security": {"icon":"","label":"Security","title":"Remove"}, "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"}, + "remove.security.sshd": {"icon":"󰣀","label":"SSHD","when":"systemctl is-enabled --quiet sshd","action":"omarchy-launch-floating-terminal-with-presentation omarchy-remove-security-sshd"}, "remove.browser.chrome": {"icon":"","label":"Chrome","when":"omarchy-pkg-present google-chrome","action":"omarchy-launch-floating-terminal-with-presentation 'omarchy-remove-browser chrome'"}, "remove.browser.edge": {"icon":"","label":"Edge","when":"omarchy-pkg-present microsoft-edge-stable-bin","action":"omarchy-launch-floating-terminal-with-presentation 'omarchy-remove-browser edge'"}, "remove.browser.brave": {"icon":"","label":"Brave","when":"omarchy-pkg-present brave-bin","action":"omarchy-launch-floating-terminal-with-presentation 'omarchy-remove-browser brave'"}, @@ -254,7 +253,7 @@ "remove.browser.firefox": {"icon":"","label":"Firefox","when":"omarchy-pkg-present firefox","action":"omarchy-launch-floating-terminal-with-presentation 'omarchy-remove-browser firefox'"}, "remove.browser.zen": {"icon":"","label":"Zen","when":"omarchy-pkg-present zen-browser-bin","action":"omarchy-launch-floating-terminal-with-presentation 'omarchy-remove-browser zen'"}, "remove.service.dropbox": {"icon":"","label":"Dropbox","when":"omarchy-pkg-present dropbox","action":"omarchy-launch-floating-terminal-with-presentation omarchy-remove-service-dropbox"}, - "remove.service.tailscale": {"icon":"","label":"Tailscale","keywords":"vpn","when":"omarchy-pkg-present tailscale","action":"omarchy-launch-floating-terminal-with-presentation omarchy-remove-service-tailscale"}, + "remove.service.tailscale": {"icon":"","label":"Tailscale","when":"omarchy-pkg-present tailscale","action":"omarchy-launch-floating-terminal-with-presentation omarchy-remove-service-tailscale"}, "remove.gaming.steam": {"icon":"","label":"Steam","when":"omarchy-pkg-present steam","action":"omarchy-launch-floating-terminal-with-presentation omarchy-remove-gaming-steam"}, "remove.gaming.retroarch": {"icon":"","label":"RetroArch","when":"omarchy-pkg-present retroarch","action":"omarchy-launch-floating-terminal-with-presentation omarchy-remove-gaming-retroarch"}, "remove.gaming.minecraft": {"icon":"󰍳","label":"Minecraft","when":"omarchy-pkg-present minecraft-launcher","action":"omarchy-launch-floating-terminal-with-presentation omarchy-remove-gaming-minecraft"}, @@ -265,11 +264,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","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","title":"Remove","keywords":"laravel symfony"}, + "remove.development.javascript": {"icon":"","label":"JavaScript","title":"Remove"}, + "remove.development.go": {"icon":"","label":"Go","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","title":"Remove"}, "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","title":"Remove","keywords":"phoenix"}, + "remove.development.elixir": {"icon":"","label":"Elixir","title":"Remove"}, "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'"}, @@ -287,33 +286,33 @@ "remove.development.elixir.phoenix": {"icon":"","label":"Phoenix","when":"[[ -d $HOME/.local/share/mise/installs/elixir ]]","action":"omarchy-launch-floating-terminal-with-presentation 'omarchy-remove-dev-env phoenix'"}, // Update - "update.omarchy": {"icon":"","iconFont":"omarchy","label":"Omarchy","keywords":"system","action":"omarchy-launch-floating-terminal-with-presentation omarchy-update"}, - "update.channel": {"icon":"󰔫","label":"Channel","keywords":"stable rc dev edge source"}, - "update.config": {"icon":"","label":"Config","keywords":"refresh default"}, + "update.omarchy": {"icon":"","iconFont":"omarchy","label":"Omarchy","action":"omarchy-launch-floating-terminal-with-presentation omarchy-update"}, + "update.channel": {"icon":"󰔫","label":"Channel"}, + "update.config": {"icon":"","label":"Config"}, "update.themes": {"icon":"󰸌","label":"Extra Themes","action":"omarchy-launch-floating-terminal-with-presentation omarchy-theme-update"}, - "update.process": {"icon":"","label":"Process","keywords":"restart services"}, - "update.hardware": {"icon":"󰇅","label":"Hardware","keywords":"restart audio wifi bluetooth trackpad"}, - "update.firmware": {"icon":"","label":"Firmware","keywords":"fwupd","action":"omarchy-launch-floating-terminal-with-presentation omarchy-update-firmware"}, - "update.password": {"icon":"","label":"Password","keywords":"drive user"}, - "update.timezone": {"icon":"","label":"Timezone","keywords":"time zone","action":"omarchy-menu-timezone"}, - "update.time": {"icon":"","label":"Time","keywords":"clock ntp","action":"omarchy-launch-floating-terminal-with-presentation omarchy-update-time"}, + "update.process": {"icon":"","label":"Process"}, + "update.hardware": {"icon":"󰇅","label":"Hardware"}, + "update.firmware": {"icon":"","label":"Firmware","action":"omarchy-launch-floating-terminal-with-presentation omarchy-update-firmware"}, + "update.password": {"icon":"","label":"Password"}, + "update.timezone": {"icon":"","label":"Timezone","action":"omarchy-menu-timezone"}, + "update.time": {"icon":"","label":"Time","action":"omarchy-launch-floating-terminal-with-presentation omarchy-update-time"}, "update.channel.stable": {"icon":"🟢","label":"Stable","checked":"[[ \"$(omarchy-channel-current)\" == \"stable\" ]]","action":"omarchy-launch-floating-terminal-with-presentation 'omarchy-channel-set stable'"}, - "update.channel.rc": {"icon":"🟡","label":"RC","keywords":"release candidate","checked":"[[ \"$(omarchy-channel-current)\" == \"rc\" ]]","action":"omarchy-launch-floating-terminal-with-presentation 'omarchy-channel-set rc'"}, - "update.channel.edge": {"icon":"🟠","label":"Edge","keywords":"development","checked":"[[ \"$(omarchy-channel-current)\" == \"edge\" ]]","action":"omarchy-launch-floating-terminal-with-presentation 'omarchy-channel-set edge'"}, - "update.channel.dev": {"icon":"🔴","label":"Dev","keywords":"source mode development quattro","checked":"[[ \"$(omarchy-channel-current)\" == \"dev\" ]]","action":"omarchy-launch-floating-terminal-with-presentation 'omarchy-channel-set dev'"}, - "update.process.hyprsunset": {"icon":"","label":"Hyprsunset","keywords":"restart","action":"omarchy-restart-hyprsunset"}, - "update.process.osd": {"icon":"","label":"OSD","keywords":"restart","action":"omarchy-restart-shell"}, - "update.process.shell": {"icon":"󰍜","label":"Shell","keywords":"restart bar quickshell omarchy-shell","action":"omarchy-restart-shell"}, - "update.config.hyprland": {"icon":"","label":"Hyprland","keywords":"refresh","action":"omarchy-launch-floating-terminal-with-presentation omarchy-refresh-hyprland"}, - "update.config.hyprsunset": {"icon":"","label":"Hyprsunset","keywords":"refresh","action":"omarchy-launch-floating-terminal-with-presentation omarchy-refresh-hyprsunset"}, - "update.config.plymouth": {"icon":"󱣴","label":"Plymouth","keywords":"refresh","action":"omarchy-launch-floating-terminal-with-presentation omarchy-refresh-plymouth"}, - "update.config.osd": {"icon":"","label":"OSD","keywords":"refresh","action":"omarchy-restart-shell"}, - "update.config.tmux": {"icon":"","label":"Tmux","keywords":"refresh","action":"omarchy-launch-floating-terminal-with-presentation omarchy-refresh-tmux"}, - "update.config.shell": {"icon":"󰍜","label":"Shell","keywords":"refresh bar quickshell","action":"omarchy-launch-floating-terminal-with-presentation omarchy-refresh-shell"}, - "update.hardware.audio": {"icon":"","label":"Audio","keywords":"restart audio pipewire speakers usb","action":"omarchy-launch-floating-terminal-with-presentation omarchy-restart-audio"}, - "update.hardware.wifi": {"icon":"󱚾","label":"Wi-Fi","keywords":"restart wireless","action":"omarchy-launch-floating-terminal-with-presentation omarchy-restart-wifi"}, - "update.hardware.bluetooth": {"icon":"󰂯","label":"Bluetooth","keywords":"restart","action":"omarchy-launch-floating-terminal-with-presentation omarchy-restart-bluetooth"}, - "update.hardware.trackpad": {"icon":"󰟸","label":"Trackpad","keywords":"restart touchpad","action":"omarchy-launch-floating-terminal-with-presentation omarchy-restart-trackpad"}, + "update.channel.rc": {"icon":"🟡","label":"RC","checked":"[[ \"$(omarchy-channel-current)\" == \"rc\" ]]","action":"omarchy-launch-floating-terminal-with-presentation 'omarchy-channel-set rc'"}, + "update.channel.edge": {"icon":"🟠","label":"Edge","checked":"[[ \"$(omarchy-channel-current)\" == \"edge\" ]]","action":"omarchy-launch-floating-terminal-with-presentation 'omarchy-channel-set edge'"}, + "update.channel.dev": {"icon":"🔴","label":"Dev","checked":"[[ \"$(omarchy-channel-current)\" == \"dev\" ]]","action":"omarchy-launch-floating-terminal-with-presentation 'omarchy-channel-set dev'"}, + "update.process.hyprsunset": {"icon":"","label":"Hyprsunset","action":"omarchy-restart-hyprsunset"}, + "update.process.osd": {"icon":"","label":"OSD","action":"omarchy-restart-shell"}, + "update.process.shell": {"icon":"󰍜","label":"Shell","action":"omarchy-restart-shell"}, + "update.config.hyprland": {"icon":"","label":"Hyprland","action":"omarchy-launch-floating-terminal-with-presentation omarchy-refresh-hyprland"}, + "update.config.hyprsunset": {"icon":"","label":"Hyprsunset","action":"omarchy-launch-floating-terminal-with-presentation omarchy-refresh-hyprsunset"}, + "update.config.plymouth": {"icon":"󱣴","label":"Plymouth","action":"omarchy-launch-floating-terminal-with-presentation omarchy-refresh-plymouth"}, + "update.config.osd": {"icon":"","label":"OSD","action":"omarchy-restart-shell"}, + "update.config.tmux": {"icon":"","label":"Tmux","action":"omarchy-launch-floating-terminal-with-presentation omarchy-refresh-tmux"}, + "update.config.shell": {"icon":"󰍜","label":"Shell","action":"omarchy-launch-floating-terminal-with-presentation omarchy-refresh-shell"}, + "update.hardware.audio": {"icon":"","label":"Audio","action":"omarchy-launch-floating-terminal-with-presentation omarchy-restart-audio"}, + "update.hardware.wifi": {"icon":"󱚾","label":"Wi-Fi","action":"omarchy-launch-floating-terminal-with-presentation omarchy-restart-wifi"}, + "update.hardware.bluetooth": {"icon":"󰂯","label":"Bluetooth","action":"omarchy-launch-floating-terminal-with-presentation omarchy-restart-bluetooth"}, + "update.hardware.trackpad": {"icon":"󰟸","label":"Trackpad","action":"omarchy-launch-floating-terminal-with-presentation omarchy-restart-trackpad"}, "update.password.drive": {"icon":"","label":"Drive Encryption","action":"omarchy-launch-floating-terminal-with-presentation omarchy-drive-password"}, - "update.password.user": {"icon":"","label":"User","keywords":"passwd","action":"omarchy-launch-floating-terminal-with-presentation passwd"}, + "update.password.user": {"icon":"","label":"User","action":"omarchy-launch-floating-terminal-with-presentation passwd"}, } diff --git a/shell/plugins/menu/Menu.qml b/shell/plugins/menu/Menu.qml index 22a4642c..a0199074 100644 --- a/shell/plugins/menu/Menu.qml +++ b/shell/plugins/menu/Menu.qml @@ -182,10 +182,6 @@ Item { return MenuModel.normalizeAliases(value) } - function normalizeKeywords(id, aliases, raw) { - return MenuModel.normalizeKeywords(id, aliases, raw) - } - function normalizeItem(id, raw) { return MenuModel.normalizeItem(id, raw) } @@ -222,14 +218,12 @@ Item { "fonts": { script: "current=$(omarchy-font-current 2>/dev/null); omarchy-font-list 2>/dev/null | while read -r f; do [[ -z $f ]] && continue; printf '%s\\t%s\\t%s\\n' \"$f\" \"$f\" \"$current\"; done", icon: "", - actionFor: function(value) { return "omarchy-font-set '" + value.replace(/'/g, "'\\''") + "'" }, - keywordsFor: function(value) { return value + " typeface" } + actionFor: function(value) { return "omarchy-font-set '" + value.replace(/'/g, "'\\''") + "'" } }, "power-profiles": { script: "current=$(powerprofilesctl get 2>/dev/null); omarchy-powerprofiles-list 2>/dev/null | while read -r p; do [[ -z $p ]] && continue; printf '%s\\t%s\\t%s\\n' \"$p\" \"$p\" \"$current\"; done", icon: "\udb81\udc0b", - actionFor: function(value) { return "omarchy-powerprofiles-set autodetect '" + value.replace(/'/g, "'\\''") + "'" }, - keywordsFor: function(value) { return value + " power profile" } + actionFor: function(value) { return "omarchy-powerprofiles-set autodetect '" + value.replace(/'/g, "'\\''") + "'" } } }) @@ -276,7 +270,6 @@ Item { label: label, title: "", target: "", - keywords: spec.keywordsFor(value), description: "", action: spec.actionFor(value), provider: "", @@ -376,8 +369,8 @@ Item { return MenuModel.termInSearchWords(term, text) } - function keywordTextMatches(query, text) { - return MenuModel.keywordTextMatches(query, text) + function descriptionTextMatches(query, text) { + return MenuModel.descriptionTextMatches(query, text) } function matchesQuery(entry, query) { diff --git a/shell/plugins/menu/MenuModel.js b/shell/plugins/menu/MenuModel.js index c26326a5..b03fc981 100644 --- a/shell/plugins/menu/MenuModel.js +++ b/shell/plugins/menu/MenuModel.js @@ -10,19 +10,6 @@ function normalizeAliases(value) { return [] } -function normalizeKeywords(id, aliases, raw) { - var parts = String(raw || "").split(/\s+/) - var seen = {} - var out = [] - for (var i = 0; i < parts.length; i++) { - var p = parts[i] - if (!p || seen[p]) continue - seen[p] = true - out.push(p) - } - return out.join(" ") -} - function normalizeItem(id, raw) { var value = raw || {} var aliases = normalizeAliases(value.aliases) @@ -42,7 +29,6 @@ function normalizeItem(id, raw) { label: value.label || id, title: value.title || "", target: value.target || "", - keywords: normalizeKeywords(id, aliases, value.keywords), description: value.description || "", action: value.action || "", provider: value.provider || "", @@ -97,7 +83,7 @@ function mergeMenuSources(defaultItems, userItems) { } if (!nextItems.root) { - nextItems.root = { id: "root", parent: "", kind: "menu", icon: "", iconFont: "", label: "Go", title: "", target: "", keywords: "", description: "", aliases: [], when: "", checked: "", action: "", provider: "" } + nextItems.root = { id: "root", parent: "", kind: "menu", icon: "", iconFont: "", label: "Go", title: "", target: "", description: "", aliases: [], when: "", checked: "", action: "", provider: "" } nextOrder.unshift("root") } for (var k3 = 0; k3 < nextOrder.length; k3++) nextItems[nextOrder[k3]].order = k3 @@ -224,7 +210,7 @@ function termInSearchWords(term, text) { return false } -function keywordTextMatches(query, text) { +function descriptionTextMatches(query, text) { var terms = String(query || "").toLowerCase().trim().split(/\s+/) for (var i = 0; i < terms.length; i++) { if (terms[i] && !termInSearchWords(terms[i], text)) return false @@ -237,13 +223,13 @@ function matchesQuery(entry, query, visible) { if (!visible) return false var nameText = nameSearchText(entry) - var keywordText = (entry.keywords + " " + entry.description).toLowerCase() + var descriptionText = String(entry.description || "").toLowerCase() var terms = String(query || "").toLowerCase().trim().split(/\s+/) for (var i = 0; i < terms.length; i++) { if (!terms[i]) continue if (nameText.indexOf(terms[i]) >= 0) continue - if (termInSearchWords(terms[i], keywordText)) continue + if (termInSearchWords(terms[i], descriptionText)) continue return false } @@ -254,14 +240,14 @@ function searchScore(items, entry, query) { var needle = String(query || "").toLowerCase().trim() var label = entry.label.toLowerCase() var nameText = nameSearchText(entry) - var keywordText = (entry.keywords + " " + entry.description).toLowerCase() + var descriptionText = String(entry.description || "").toLowerCase() var score = 80 if (label === needle) score = entry.parent === "root" ? 2 : 0 else if (label.indexOf(needle) === 0) score = 10 else if (label.indexOf(needle) >= 0) score = 30 else if (nameText.indexOf(needle) >= 0) score = 40 - else if (keywordTextMatches(needle, keywordText)) score = 60 + else if (descriptionTextMatches(needle, descriptionText)) score = 60 if (entry.kind === "menu" || entry.kind === "link") score -= 2 @@ -291,7 +277,6 @@ if (typeof module !== "undefined") { module.exports = { stripJsonc: stripJsonc, normalizeAliases: normalizeAliases, - normalizeKeywords: normalizeKeywords, normalizeItem: normalizeItem, parseMenuJsonc: parseMenuJsonc, mergeMenuSources: mergeMenuSources, @@ -308,7 +293,7 @@ if (typeof module !== "undefined") { leafIdFor: leafIdFor, nameSearchText: nameSearchText, termInSearchWords: termInSearchWords, - keywordTextMatches: keywordTextMatches, + descriptionTextMatches: descriptionTextMatches, matchesQuery: matchesQuery, searchScore: searchScore, displayRow: displayRow diff --git a/test/shell.d/menu-test.sh b/test/shell.d/menu-test.sh index 8a488265..df36f109 100644 --- a/test/shell.d/menu-test.sh +++ b/test/shell.d/menu-test.sh @@ -19,7 +19,7 @@ const parsed = menu.parseMenuJsonc(` "style.theme": { "label": "Themes", "aliases": "theme", - "keywords": "appearance appearance colors", + "description": "appearance colors", "action": "omarchy-theme-set" }, }, @@ -38,8 +38,7 @@ assertDeepEqual( label: 'Themes', title: '', target: '', - keywords: 'appearance colors', - description: '', + description: 'appearance colors', action: 'omarchy-theme-set', provider: '', aliases: ['theme'], @@ -84,7 +83,7 @@ assert(menu.matchesQuery(entry, 'theme', true), 'menu matches labels and aliases assert(menu.matchesQuery(entry, 'colors', true), 'menu matches aliases') assert(!menu.matchesQuery(entry, 'missing', true), 'menu rejects missing terms') assert(!menu.matchesQuery(entry, 'theme', false), 'menu hides invisible matches') -assert(menu.searchScore(merged.items, entry, 'theme') < menu.searchScore(merged.items, entry, 'appearance'), 'menu scores name matches above keyword matches') +assert(menu.searchScore(merged.items, entry, 'theme') < menu.searchScore(merged.items, entry, 'appearance'), 'menu scores name matches above description matches') assertDeepEqual( menu.displayRow(merged.items, merged.itemOrder, {}, entry, 'Style', 12, 'search'),