Quicksearch
A keyboard-summoned search bar for the Omarchy shell. Press a key anywhere, type, hit Enter, land in your browser.
- One key, from anywhere. Default
ALT + SPACE. No bar icon. - Bang quicklinks.
v cats→ YouTube,g rust traits→ Google. You define the keyword and the URL template. - Bang-only bookmarks. A quicklink with no
{input}just opens its page —hn→ Hacker News, no query needed. - Configurable default engine. DuckDuckGo out of the box.
- URLs pass straight through.
github.comopens the site, not a search. - Settings without a mouse.
Ctrl+,or the gear icon: edit bangs, pick the default, rebind the shortcut. - No setup step.
omarchy plugin add … --enablealso bindsALT + SPACEand seeds the config on first run.

Install
omarchy plugin add https://github.com/equa-tory/omarchy-quicksearch.git --enable
That's it. On first run the plugin seeds ~/.config/omarchy/quicksearch.json
and binds ALT + SPACE — it edits ~/.config/hypr/bindings.lua (with a
timestamped backup) and reloads Hyprland, then shows a notification telling you
the key. If ALT + SPACE is already taken it won't steal it; the notification
says so and you pick a key from the Settings pane instead.
Prefer a different key from the start, or want to do it by hand:
~/.config/omarchy/plugins/io.github.equa-tory.quicksearch/install.sh "SUPER + P"
# or
python3 ~/.config/omarchy/plugins/io.github.equa-tory.quicksearch/scripts/bindings.py set "SUPER + P"
# or add the line yourself:
# o.bind("ALT + SPACE", "Quicksearch", "omarchy-shell shell toggle io.github.equa-tory.quicksearch {}")
Uninstall
~/.config/omarchy/plugins/io.github.equa-tory.quicksearch/uninstall.sh
Removes the managed keybinding block, then the plugin. Running
omarchy plugin remove on its own leaves the binding behind as a dead key
(the installer never runs plugin code, so it can't clean up) — bindings.py remove or the Settings pane's remove path fixes that.
Using it
| Key | Action |
|---|---|
Enter |
Search / open. A leading bang routes to that quicklink. |
Ctrl+Enter |
Force the default engine, ignoring any bang (v for vendetta). |
Ctrl+, |
Open Settings (also the gear icon). |
Esc |
Clear the field, then close. |
| click a bang chip | Prefill its keyword. |
Routing, in order:
- Empty input → nothing.
- A URL (
https://…, or a barehost.tld/…) → opens directly. - First word matches a bang keyword →
- bookmark bang (URL has no
{input}): opens the page, with or without anything after it. - template bang: routes when there's a query after the keyword; a lone
gwith nothing after it is just searched.
- bookmark bang (URL has no
- Everything else → the default engine.
A leading ! (!v, !g cats) forces the bang either way.
Configuration
~/.config/omarchy/quicksearch.json, created on first run, reloaded when you
save it. The Settings pane writes the same file.
{
"version": 1,
"defaultEngine": "ddg",
"engines": [
{ "keyword": "ddg", "name": "DuckDuckGo", "url": "https://duckduckgo.com/?q={input}" },
{ "keyword": "g", "name": "Google", "url": "https://www.google.com/search?q={input}" },
{ "keyword": "hn", "name": "Hacker News","url": "https://news.ycombinator.com" }
]
}
{input}is replaced with the URL-encoded query.- A URL with no
{input}is a bookmark — the keyword opens it directly. iconis one Nerd Font glyph (optional).defaultEngineis akeyword. If it is missing or wrong, the first engine wins.- A broken file falls back to the built-in defaults and shows a warning in the panel rather than breaking the key.
Bundled defaults: ddg DuckDuckGo (default), g Google, gg ChatGPT, x X,
v YouTube, gh GitHub, w Wikipedia, aur AUR.
The shortcut
Auto-bound to ALT + SPACE on first run. Change it from the Settings pane
(gear icon → SHORTCUT → Rebind), or:
python3 scripts/bindings.py set "SUPER + P" # rebind
python3 scripts/bindings.py status # show current
python3 scripts/bindings.py remove # remove the managed block
Delete ~/.config/omarchy/quicksearch.json and the plugin treats the next
start as a fresh install again (re-seeds, re-checks the binding).
Known limitations
- The panel appears on one monitor (the primary), like Omarchy's own emoji and clipboard overlays.
Development
node tests/test_router.mjs # routing table
omarchy plugin validate . # manifest
omarchy-shell shell toggle io.github.equa-tory.quicksearch '{}'
omarchy-shell shell toggle io.github.equa-tory.quicksearch '{"view":"settings"}'
Editing QML hot-reloads on save. Editing Router.js needs
rm -rf ~/.cache/quickshell/qmlcache && omarchy-restart-shell — the compiled JS
is cached by path, not invalidated on change.
License
MIT — see LICENSE.