Browser extension to search and navigate browser tabs, local bookmarks and history.
🔎 Browser extension to (fuzzy) search and navigate bookmarks, history and open tabs.
This extension does not collect any data nor does it make any external requests (see Privacy).
It supports two different search approaches:
With this extension you can also tag your bookmarks including auto completions. The tags are considered when searching and can be used for navigation.
The extension is very customizable (see user options) and has a dark / light theme that is selected based on your system settings (see prefers-color-scheme).
For a list of recent changes, see CHANGELOG.md.
CTRL
+ Shift
+ .
, but you can customize this (I personally use Ctrl+J
).Shift
or Alt
to open the result in the current tabCtrl
to open the result without closing the popup.#
: only bookmarks with the tag will be returned (exact "starts with" search)
#github #pr
to only get results which have both tags~
: only bookmarks within the folder will be returned (exact "starts with" search)
~Sites ~Blogs
to only get results which have both tagst
(including space): only tabs will be searched.b
(including space): only bookmarks will be searched.h
(including space): only history will be searched.s
(including space): only search engines will be proposed.customSearchEngines
allows you to define your own search mode aliasesg
(including space): Do a Google search.d
(including space): Do a dict.cc search.Ctrl+N
and Ctrl+J
to navigate search results upCtrl+P
and Ctrl+K
to navigate search results downchrome://downloads
. +<whole number>
to your bookmark title (before tags)
Bookmark Title +20
or Another Bookmark +10 #tag1 #tag2
#
in bookmark titles that do not indicate a tag.~
in bookmark folder names.The extension is highly customizable. Finding and setting options is a bit technical, though.
The user options are written in YAML or JSON notation.
For now, there is no nice options overview, so you have to find them in the popup/js/model/options.js file in the defaultOptions
object.
From there you can see the available options, their names, default values and descriptions.
When defining your custom config, you only need to define the options that you want to overwrite from the defaults.
âš The options are not validated properly. Please make sure to use them correctly.
If something breaks, consider resetting your options.
An exemplary user config can look like the following example:
searchStrategy: fuzzy
displayVisitCounter: true
displayDateAdded: true
If you have troubles with performance, here are a few options that might help. Feel free to pick & choose and tune the values to your situation:
searchStrategy: precise
searchMinMatchCharLength: 2
displaySearchMatchHighlight: false,
searchMaxResults: 20
historyMaxItems: 200
Precise search is faster than fuzzy search. Start searching only when at least 2 characters are entered Highlighting search matches takes some effort, this can be disabled. Number of search results can be further limited Number of browser history items can be further reduced
Or a more advanced example:
searchStrategy: precise
historyDaysAgo: 14
historyMaxItems: 1200
historyIgnoreList:
- http://localhost
- http://127.0.0.1
colorStripeWidth: 4 # Customize width of search result color stripe
bookmarkColor: '#46e6e6' # customize color for bookmark results
scoreTabBaseScore: 70 # customize base score for open tabs
searchEngineChoices:
- name: Google
urlPrefix: https://google.com/search?q=
customSearchEngines:
- alias: ['g', 'google']
name: Google
urlPrefix: https://www.google.com/search?q=$s
blank: https://www.google.com
- alias: d
name: dict.cc
urlPrefix: https://www.dict.cc/?s=$s
- alias: [gh, github]
name: GitHub
urlPrefix: https://github.com/search?q=$s
blank: https://github.com
- alias: npm
name: NPM
urlPrefix: https://www.npmjs.com/search?q=$s
blank: https://www.npmjs.com
In case of making multilingual searching (CJK) correctly, you may need to tweak uFuzzy options via option ufuzzyOptions
, for example:
# make CJK chars work for fuzzy search
uFuzzyOptions:
interSplit: (p{Unified_Ideograph=yes})+
The scoring systems works roughly the following:
scoreBookmarkBaseScore
).scoreTitleWeight
).exactStartsWithBonus
will add score if either the title or the url start exactly with the search term, including spaces.For a description of the scoring options and what they do, please see popup/js/model/options.js.
This extension is built to respect your privacy:
Prerequisite: Node.js
# install dependencies
npm install
# build extension
npm run build
The source code for the extension can be found in popup/ (HTML, JS and libs) and sass/ (SCSS/CSS).
The built extensions can be found
npm install
and npm run build
(via bash / git bash)chrome://extensions/
on Chrome and edge://extensions/
on Edge).dist/firefox
as a temporary addon in about:debugging
.npm run build
for a complete buildnpm run start
to start the extension locally in a browser (with mock data)npm run test
to run end to end testsnpm run
This extension makes use of the following helpful open-source projects (thanks!):
Please create a GitHub issue to give your feedback. All ideas, suggestions or bug reports are welcome.