Esc Back Menu
An Omarchy shell plugin that changes one small but
annoying behavior of the built-in Omarchy menu: pressing Escape inside a
submenu now takes you back to the previous menu instead of closing the whole
launcher.
It is a drop-in replacement for the stock omarchy.menu plugin — everything
else (search, navigation, providers, bar widget, omarchy-menu.jsonc
extensions) works exactly the same.
The problem
In the stock Omarchy menu, the keyboard behaves like this:
| Key | Stock behavior |
|---|---|
Escape |
Clears the search filter, otherwise closes the menu entirely |
Backspace / ← |
Goes back to the previous submenu |
→ / Enter |
Enters a submenu / activates the selected row |
So if you are navigating deep into submenus with the keyboard and instinctively
hit Escape to go back one level — as most launchers and TUIs behave — the
menu simply vanishes and you have to start over.
What this plugin changes
| Key | Behavior with this plugin |
|---|---|
Escape with text in the search filter |
Clears the filter (unchanged) |
Escape inside a submenu |
Goes back to the previous menu |
Escape at the root menu |
Closes the menu (unchanged) |
That is literally the whole diff — one line in Menu.qml:
} else if (event.key === Qt.Key_Escape) {
if (root.filterText) root.setFilter("")
- else root.cancel()
+ else if (!root.goBack()) root.cancel()
event.accepted = true
}
goBack() pops the navigation stack and returns false when you are already
at the root menu, in which case the plugin falls back to the original
cancel() behavior and closes. Backspace and ← keep working as before.
Installation
Requires an up-to-date Omarchy system (Quickshell-based menu).
omarchy plugin add https://github.com/devgtv/omarchy-menu-esc-back.git --enable
Enabling a menu-kind plugin automatically replaces the menu currently in use,
so the stock omarchy.menu gets disabled for you. Your
~/.config/omarchy/extensions/omarchy-menu.jsonc extensions keep working —
they are loaded by id, not by plugin.
If you prefer to do it step by step:
# 1. Add the plugin (without enabling yet)
omarchy plugin add https://github.com/devgtv/omarchy-menu-esc-back.git
# 2. Enable it (replaces the active menu)
omarchy plugin enable devgtv.menu-esc-back
Then open the menu as usual (Super + Space, or clicking the bar widget),
enter any submenu and press Escape — you should land back on the previous
menu instead of the menu closing.
Updating
Because the plugin is installed from git, it can be updated in place:
omarchy plugin update devgtv.menu-esc-back
Uninstalling / going back to the stock menu
omarchy plugin remove devgtv.menu-esc-back
omarchy plugin enable omarchy.menu
Your system is back to the exact stock behavior.
How it was made / keeping it in sync
This plugin is a straight clone of the built-in omarchy.menu
(omarchy plugin clone omarchy.menu) with the one-line change shown above.
The manifest.json records this via "omarchy": { "clonedFrom": "omarchy.menu" }.
Because it vendors the menu code, upstream fixes to omarchy.menu do not flow
in automatically. If Omarchy updates the stock menu and this plugin starts to
misbehave after an omarchy update, please
open an issue and the
plugin will be re-synced.
Plugin structure
manifest.json # Plugin manifest (id: devgtv.menu-esc-back)
Menu.qml # Menu UI + key handling (contains the Esc change)
MenuModel.js # Menu model/providers (unmodified from upstream)
BarWidget.qml # Bar widget that launches the menu (unmodified)
License
MIT — see LICENSE.
This is a derivative work of Omarchy's built-in omarchy.menu plugin
(copyright the Omarchy authors), which is also MIT licensed. Original project:
https://github.com/basecamp/omarchy