A lightweight browser extension for Microsoft Edge that provides modal keyboard navigation for web pages with minimal permissions. Navigate the web with Vim-style keybindings without sacrificing your privacy.
I am not an expert in JavaScript nor in Browser extensions. This project was only possible due to the support of AI and opencode. I would have not taken this effort if I were allowed to use Vimium (which is not possible due to compliance requirements and the many permissions, Vimium needs for certain features).
You can find this extension in the Microsoft Edge-Add-Ons store.
NOTE: Since this project was created with heavy use of LLMs, I moved it to from Codeberg here.
- Vim-inspired keybindings for efficient web browsing
- Modal navigation - keyboard shortcuts work in "normal mode" (outside input fields)
- Press
ito focus an input field and enter "insert mode" - Press
Escfrom any input field to return to "normal mode"
- Press
- Minimal permissions - only requests what is needed, no access to:
- Browse history
- Files
- All sites data
- Personal information
- Easy toggle - enable/disable via popup
j- Scroll downk- Scroll uph- Scroll leftl- Scroll rightd- Scroll down (large step)u- Scroll up (large step)Ctrl-d- Scroll down (half page)Ctrl-u- Scroll up (half page)
gg- Go to top of pageG(Shift+g) - Go to bottom of pageJ(Shift+j) - Switch to left tabK(Shift+k) - Switch to right tab<- Move current tab to the left>- Move current tab to the rightgt- Move current tab to a tab group (auto-moves if only one group, otherwise shows picker)Ctrl-o- Go backward in tab activation historyCtrl-i- Go forward in tab activation historyH(Shift+h) - Go back in browser historyL(Shift+l) - Go forward in browser historyr- Reload current pageo- Open omnibar (search open tabs or enter a URL)t- Open new tabx- Close current tabX(Shift+x) - Reopen last closed tabco- Close other tabs (confirm withy)cl- Close tabs to the left (confirm withy)cr- Close tabs to the right (confirm withy)
f- Show hints for clickable elements (links, buttons) and activate themF(Shift+f) - Show hints for clickable elements and open links in new tabyy- Copy current page URL to clipboardyf- Show hints for links and copy selected link URL to clipboardyt- Copy current page title to clipboardylm- Copy current page as markdown link[title](url)yla- Copy current page as AsciiDoc linkurl[title]i- Focus first input field on page/- Search page (type query, Enter/Shift+Enter to navigate matches)n- Jump to next search matchN(Shift+n) - Jump to previous search match?- Show keyboard shortcuts help overlayEsc- Close search / exit input field to normal mode / unfocus element / exit link hint mode
- Download or clone this repository
- Open Microsoft Edge and navigate to
edge://extensions/ - Enable "Developer mode" in the bottom-left corner
- Click "Load unpacked"
- Select the extension folder
- The extension icon should appear in your toolbar
The extension includes icon files with a nautical ship wheel design and hjkl directional keys:
icons/icon16.png(16x16 pixels)icons/icon48.png(48x48 pixels)icons/icon128.png(128x128 pixels)
The icons are already included and ready to use.
In order to pubsh the extension, you need to ZIP it without the directory. In the project directory please execute:
zip -r ../modal-browsing.zip *.js LICENSE *.json *.html iconsThis extension is built with privacy in mind:
- No tracking - zero telemetry or analytics
- Minimal permissions - only
activeTab,storage,tabs,tabGroups, andclipboardWrite - No external requests - all code runs locally
- No data collection - your browsing history stays private
.
├── manifest.json # Extension configuration
├── content.js # Main keyboard handling logic
├── popup.html # Extension popup UI
├── popup.js # Popup functionality
├── icons/ # Extension icons
└── README.md # This file
- Customizable keybindings via settings page
- Additional link hint modes (open in background tab, download link, etc.)
This is required to query information about the active tab (e.g., the URL) and to be able to display the help popup.
This is required to be able to navigate between tabs usind <ctrl-i> and <ctrl-o> and for moving the current to a tab group selected using gt.
This is required for copying the current URL or a markdown/asciidoc link to the clipboard.
This is required for moving the current to a tab group selected using gt.
Contributions are welcome! Please feel free to submit issues or pull requests.
Apache License Version 2.0 - feel free to use and modify as needed.