OpenNav is a lightweight, keyboard-centric browser selector/launcher written in Rust using GTK4.
- Launch any browser that's installed in your system
- Open links in browser of your choice (just set OpenNav as your default browser)
- Launch searches with search engines of your choice in the browser of your choice
- (yes, you can add/manage search engines in OpenNav and configure keywords)
- Launch in a specific profile (just create a .desktop file for it)
It automatically detects your installed browsers and lets you quickly select which one to launch, search something or open a link with. It learns your preferences over time, sorting your most-used or most recently used browsers to the top (or just set it to list alphabetically).
- 🚀 Fast Startup: Optimized for instant launch.
- ⌨️ Keyboard Driven: Navigate, filter, and launch without touching the mouse.
- 🔍 Smart Filtering: Type to filter browsers instantly.
- 📌 Pinning: Keep your favorite browsers pinned to the top (
Ctrl+P). - 📊 Usage Sorting: Automatically sorts browsers by usage frequency.
- 🛠️ Customizable: Supports custom icons (including absolute paths) and recognizes Flatpaks.
- 🌑 Modern UI: Dark theme support with readable styling.
Download the .AppImage from the Releases page.
chmod +x OpenNav-x86_64.AppImage
./OpenNav-x86_64.AppImage-
Dependencies:
- Fedora:
sudo dnf install gtk4-devel gcc - Ubuntu/Debian:
sudo apt install libgtk-4-dev build-essential
- Fedora:
-
Build & Run:
git clone https://github.com/jasiralavi/opennav.git cd opennav cargo run --release -- https://cyfersolutions.com -
Install Desktop Entry (Required for icons/integration):
# Update paths in opennav.desktop if needed, then: cp opennav.desktop ~/.local/share/applications/com.opennav.app.desktop update-desktop-database ~/.local/share/applications/
See distribution.md or flatpak/ folder for instructions on building a local Flatpak.
OpenNav serves two main purposes:
- Browser Picker: When you click a link in another app (like Discord or Slack), OpenNav pops up, letting you choose which browser to open that specific link in.
- Quick Launcher: You can launch OpenNav directly to quickly open any of your installed browsers, optionally typing a URL to go straight there.
- Direct Web Search: Type a search query (e.g., "rust lang") in the URL bar and select a browser. OpenNav will automatically detect it's a search term and perform a web search using the browser's default search engine (or Google).
To make OpenNav your browser picker, you must set it as your system's Default Web Browser:
- GNOME: Settings -> Default Applications -> Web. Select "OpenNav".
- KDE Plasma: System Settings -> Applications -> Default Applications -> Web Browser. Select "OpenNav".
To open OpenNav instantly with a keyboard shortcut (e.g., Super+B or Ctrl+Alt+B):
- Open your desktop environment's Keyboard Shortcuts settings.
- Add a new custom shortcut.
- Set the command to:
opennav(or the path to your AppImage if using that). - Assign your preferred key combination.
| Key | Action |
|---|---|
| Type | Filter list |
| Ctrl + L | Focus URL Bar |
| Up / Down | Navigation |
| Enter / Click | Launch Selected |
| Ctrl + Enter | Launch & Keep Open |
| Ctrl + Click | Launch & Keep Open |
| Ctrl + P | Pin/Unpin Browser |
| Ctrl + S | Open Settings |
| Ctrl + ? | Show Shortcuts |
| Esc | Close / Clear Search |
OpenNav detects browsers by scanning your system's .desktop files. To add a specific browser profile (like "Work" or "Personal"), you need to create a custom desktop entry for it.
- Create Profile: Run
firefox -Pin your terminal to create a new profile (e.g., named "Work"). - Create Desktop File: Create
~/.local/share/applications/firefox-work.desktop. - Add Content:
[Desktop Entry] Name=Firefox Work Exec=firefox -P "Work" %u Icon=firefox Type=Application MimeType=x-scheme-handler/http;x-scheme-handler/https;
Note: The
-P "ProfileName"flag is the key part.
- Find Profile Path: Chrome uses internal names like "Profile 1". Run
ls ~/.config/google-chrome/ | grep Profileto list them. - Verify: Test with
google-chrome --profile-directory="Profile 1". - Create Desktop File: Create
~/.local/share/applications/chrome-work.desktop. - Add Content:
[Desktop Entry] Name=Chrome Work Exec=/usr/bin/google-chrome --profile-directory="Profile 1" %U Icon=google-chrome Type=Application MimeType=x-scheme-handler/http;x-scheme-handler/https;
After creating any .desktop file, you must run this command for OpenNav to detect the new entry:
update-desktop-database ~/.local/share/applicationsGNU General Public License v3.0


