{"id":13477594,"url":"https://github.com/infokiller/web-search-navigator","last_synced_at":"2025-05-14T23:07:02.804Z","repository":{"id":23308910,"uuid":"98684875","full_name":"infokiller/web-search-navigator","owner":"infokiller","description":"Web extension that adds keyboard shortcuts to Google, YouTube, Github, Amazon, and others (Chrome/Firefox/Edge/Safari)","archived":false,"fork":false,"pushed_at":"2025-05-05T03:45:04.000Z","size":13031,"stargazers_count":932,"open_issues_count":36,"forks_count":79,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-05-05T04:32:07.144Z","etag":null,"topics":["amazon-search","chrome-extension","chrome-extensions","colemak","edge-extension","firefox-addon","firefox-extension","github-search","google","google-scholar","google-search","keybindings","keyboard-navigation","keyboard-shortcuts","startpage","vim","youtube","youtube-search"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/infokiller.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-07-28T20:17:50.000Z","updated_at":"2025-05-05T03:45:01.000Z","dependencies_parsed_at":"2023-02-19T04:01:29.393Z","dependency_job_id":"5e85ee38-9395-420e-a7aa-fdf07e8b690a","html_url":"https://github.com/infokiller/web-search-navigator","commit_stats":{"total_commits":886,"total_committers":33,"mean_commits":"26.848484848484848","dds":0.6309255079006773,"last_synced_commit":"49a10c38438b464bf1361b631fe4020da9e98abf"},"previous_names":[],"tags_count":27,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/infokiller%2Fweb-search-navigator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/infokiller%2Fweb-search-navigator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/infokiller%2Fweb-search-navigator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/infokiller%2Fweb-search-navigator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/infokiller","download_url":"https://codeload.github.com/infokiller/web-search-navigator/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254243362,"owners_count":22038046,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["amazon-search","chrome-extension","chrome-extensions","colemak","edge-extension","firefox-addon","firefox-extension","github-search","google","google-scholar","google-search","keybindings","keyboard-navigation","keyboard-shortcuts","startpage","vim","youtube","youtube-search"],"created_at":"2024-07-31T16:01:44.886Z","updated_at":"2025-05-14T23:06:57.789Z","avatar_url":"https://github.com/infokiller.png","language":"JavaScript","funding_links":[],"categories":["JavaScript","[](#table-of-contents) Table of contents"],"sub_categories":["[](#filesharing-search-engines)Filesharing Search Engines"],"readme":"# ![Logo](./src/icon48.png?raw=true) Web Search Navigator\n\n[![Chrome Web Store](https://img.shields.io/chrome-web-store/rating/cohamjploocgoejdfanacfgkhjkhdkek?label=Chrome)](https://chrome.google.com/webstore/detail/web-search-navigator/cohamjploocgoejdfanacfgkhjkhdkek)\n[![Mozilla Add-on](https://img.shields.io/amo/rating/web-search-navigator?label=Firefox)](https://addons.mozilla.org/en-US/firefox/addon/web-search-navigator/)\n[![CodeFactor](https://www.codefactor.io/repository/github/infokiller/web-search-navigator/badge)](https://www.codefactor.io/repository/github/infokiller/web-search-navigator)\n[![CodeQL](https://github.com/infokiller/web-search-navigator/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/infokiller/web-search-navigator/actions/workflows/codeql-analysis.yml)\n[![Linters](https://github.com/infokiller/web-search-navigator/actions/workflows/lint.yml/badge.svg)](https://github.com/infokiller/web-search-navigator/actions/workflows/lint.yml)\n\nBrowser extension that adds configurable keyboard shortcuts to Google search,\nYouTube, Startpage, Brave Search, Google Scholar, Github, Gitlab, and Amazon.\n\n![Demo flow](./assets/demo.gif?raw=true)\n\n## Table of contents\n\n- [Table of contents](#table-of-contents)\n- [Features](#features)\n- [Installation](#installation)\n  - [Chrome](#chrome)\n    - [Installing from a release](#installing-from-a-release)\n  - [Firefox](#firefox)\n  - [Edge](#edge)\n  - [Safari (experimental)](#safari-experimental)\n- [Keybindings](#keybindings)\n- [Development](#development)\n  - [Coding style](#coding-style)\n  - [Commit messages](#commit-messages)\n  - [Building for development](#building-for-development)\n  - [Building a release](#building-a-release)\n  - [Adding a new search engine](#adding-a-new-search-engine)\n- [Troubleshooting](#troubleshooting)\n- [Privacy policy](#privacy-policy)\n- [Trademarks notice](#trademarks-notice)\n\n## Features\n\n- Lightweight\n- Supports Chrome, Firefox, and Edge\n- Extensive Google keyboard shortcuts including:\n  - Selecting results\n  - Opening results in the background or foreground\n  - Navigating to other sections (maps/news/videos/etc)\n  - Navigating to the next/previous result page\n  - Changing time restrictions\n- Support for navigating cards such as Top Stories, Twitter, and videos\n- All keyboard shortcuts can be changed\n- Settings are synched between devices with the same browser profile\n- Supports both key combos and key sequences\n- Custom CSS rules to control the look of highlighted results\n- Experimental and optional support for YouTube, Startpage, Brave Search, Google\n  Scholar, Github, Gitlab, and Amazon (needs to be enabled in the options). Note\n  that the extension does not have permissions for these optional websites\n  unless you explicitly enable them.\n\n## Installation\n\n### Chrome\n\nInstall from the\n[Chrome Web Store](https://chrome.google.com/webstore/detail/enhanced-keyboard-navigat/cohamjploocgoejdfanacfgkhjkhdkek).\n\nSee below for downloading a release and installing it manually (not recommended\nsince you won't get updates automatically).\n\n#### Installing from a release\n\n1. Download the latest release from\n   \u003chttps://github.com/infokiller/web-search-navigator/releases\u003e\n1. Extract the zip file to any directory you'd like, though you need to make\n   sure the directory is not deleted while you want to use the extension\n1. Go to extensions page in Chrome (URL: `chrome://extensions`)\n1. Enable developer mode if needed\n1. Disable other existing instances of Web Search Navigator (from the store or\n   from loading another unpacked version)\n1. Click \"Load Unpacked\" and select the directory you extracted the release zip\n   into\n\n### Firefox\n\nInstall from the\n[Add-ons for Firefox](https://addons.mozilla.org/firefox/addon/web-search-navigator/).\n\n### Edge\n\nInstall from\n[Microsoft Edge Add-ons](https://microsoftedge.microsoft.com/addons/detail/inkjbmhmeghalgpacijccmbmbclkjgop).\n\n### Safari (experimental)\n\n\u003e NOTE: Safari is supported on a best-effort basis and isn't packaged yet.\n\nFollow\n[these steps](https://github.com/infokiller/web-search-navigator/issues/64#issuecomment-1166552333).\n\n## Keybindings\n\n\u003e NOTE:\n\u003e\n\u003e - Shortcuts for navigation to tabs (images, news, etc.) only work when the tab\n\u003e   is visible.\n\u003e - All shortcuts can be customized to your liking via options\n\n| Shortcuts                                                                                                                                                      | Action                                              |\n| -------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------- |\n| \u003ckbd\u003e↓\u003c/kbd\u003e/\u003ckbd\u003ej\u003c/kbd\u003e                                                                                                                                      | Select next search result                           |\n| \u003ckbd\u003e↑\u003c/kbd\u003e/\u003ckbd\u003ek\u003c/kbd\u003e                                                                                                                                      | Select previous search result                       |\n| \u003ckbd\u003e/\u003c/kbd\u003e/\u003ckbd\u003eEscape\u003c/kbd\u003e                                                                                                                                 | Focus on input search box                           |\n| \u003ckbd\u003eEnter\u003c/kbd\u003e/\u003ckbd\u003eSpace\u003c/kbd\u003e                                                                                                                              | Navigate to selected result                         |\n| \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eEnter\u003c/kbd\u003e/\u003ckbd\u003e⌘\u003c/kbd\u003e + \u003ckbd\u003eEnter\u003c/kbd\u003e/\u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eSpace\u003c/kbd\u003e                                                          | Open selected result in background tab              |\n| \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eShift\u003c/kbd\u003e + \u003ckbd\u003eEnter\u003c/kbd\u003e/\u003ckbd\u003e⌘\u003c/kbd\u003e + \u003ckbd\u003eShift\u003c/kbd\u003e + \u003ckbd\u003eEnter\u003c/kbd\u003e/\u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eShift\u003c/kbd\u003e + \u003ckbd\u003eSpace\u003c/kbd\u003e | Open selected result in new window/tab              |\n| \u003ckbd\u003e←\u003c/kbd\u003e/\u003ckbd\u003eh\u003c/kbd\u003e                                                                                                                                      | Navigate to previous search result page             |\n| \u003ckbd\u003e→\u003c/kbd\u003e/\u003ckbd\u003el\u003c/kbd\u003e                                                                                                                                      | Navigate to next search result page                 |\n| \u003ckbd\u003ea\u003c/kbd\u003e/\u003ckbd\u003es\u003c/kbd\u003e                                                                                                                                      | Navigate to All tab (= default search tab)          |\n| \u003ckbd\u003ei\u003c/kbd\u003e                                                                                                                                                   | Navigate to images tab                              |\n| \u003ckbd\u003ev\u003c/kbd\u003e                                                                                                                                                   | Navigate to videos tab                              |\n| \u003ckbd\u003em\u003c/kbd\u003e                                                                                                                                                   | Navigate to maps tab                                |\n| \u003ckbd\u003en\u003c/kbd\u003e                                                                                                                                                   | Navigate to news tab                                |\n| \u003ckbd\u003eAlt\u003c/kbd\u003e + \u003ckbd\u003es\u003c/kbd\u003e                                                                                                                                  | Navigate to shopping tab                            |\n| \u003ckbd\u003eb                                                                                                                                                         | Navigate to books tab                               |\n| \u003ckbd\u003eAlt\u003c/kbd\u003e + \u003ckbd\u003el\u003c/kbd\u003e                                                                                                                                  | Navigate to flights tab                             |\n| \u003ckbd\u003ef\u003c/kbd\u003e                                                                                                                                                   | Navigate to financial tab                           |\n| \u003ckbd\u003ez\u003c/kbd\u003e + \u003ckbd\u003eh\u003c/kbd\u003e                                                                                                                                    | Filter results by past hour                         |\n| \u003ckbd\u003ez\u003c/kbd\u003e + \u003ckbd\u003ed\u003c/kbd\u003e                                                                                                                                    | Filter results by past 24 hours (day)               |\n| \u003ckbd\u003ez\u003c/kbd\u003e + \u003ckbd\u003ew\u003c/kbd\u003e                                                                                                                                    | Filter results by past week                         |\n| \u003ckbd\u003ez\u003c/kbd\u003e + \u003ckbd\u003em\u003c/kbd\u003e                                                                                                                                    | Filter results by past month                        |\n| \u003ckbd\u003ez\u003c/kbd\u003e + \u003ckbd\u003ey\u003c/kbd\u003e                                                                                                                                    | Filter results by past year                         |\n| \u003ckbd\u003ez\u003c/kbd\u003e + \u003ckbd\u003ez\u003c/kbd\u003e                                                                                                                                    | Turn off filter (show all results)                  |\n| \u003ckbd\u003ez\u003c/kbd\u003e + \u003ckbd\u003es\u003c/kbd\u003e                                                                                                                                    | Toggle sort by date/relevance (only when filtering) |\n\n## Development\n\n### Coding style\n\nTo check the code for linting and formatting errors, run `yarn run check`. We\nuse a Javascript coding style based on\n[Google's](https://google.github.io/styleguide/jsguide.html). We use the\nfollowing tools to lint the code enforce a consistent style:\n\n- Javascript: [eslint](https://eslint.org/) for both linting and formatting\n- CSS: [Stylelint](https://stylelint.io/) for linting and\n  [Prettier](https://prettier.io/) for formatting\n- Markdown: [Markdownlint](https://github.com/igorshubovych/markdownlint-cli)\n  for linting and [Prettier](https://prettier.io/) for formatting\n- Bash: [Shellcheck](https://github.com/koalaman/shellcheck) for linting and\n  [shfmt](https://github.com/mvdan/sh) for formatting. shfmt doesn't run in\n  `yarn run check` because it can't be installed using `yarn install`.\n\nPlease try to write your code in a similar style, and run `yarn run check`\nbefore sending a pull request.\n\n### Commit messages\n\nStarting from 2020-07-19, this project uses\n[Conventional Commits](https://www.conventionalcommits.org/). Please write all\nyou commit messages in this style.\n\n### Building for development\n\nWe use [yarn](https://yarnpkg.com/) package manager for dependency management\nand [gulp](https://gulpjs.com/) for building. To build the extension for\ndevelopment run:\n\n```sh\nyarn install \u0026\u0026 yarn build\n```\n\nThe extension will be deployed directly to the `src` directory.\n\nThe easiest way to run the built extension is to use `web-ext` which will run a\nseparate it in a separate browser profile and reload it automatically on changes\nto the source files. From the project root directory:\n\n```sh\n# Replace '--target chromium' with \"--target firefox-desktop\" for Firefox.\nyarn run web-ext run --source-dir src --target chromium \\\n  --start-url 'https://www.google.com/search?q=whatever'\n```\n\nAlternatively, you can load this directory as an unpacked extensions to your\nbrowser.\n\n_It would be better to deploy for example to `build/deploy` and add `gulp-watch`\nto update the deployed files automatically. However when done so the Chrome's\nauto-reload extension gets broken and one has to reload the extension manually\non every change. Hence the `src` directory is used for the convenience._\n\n### Building a release\n\nTo build a bundle consumable by the browser with minified dependencies:\n\n```sh\n# Replace make-chrome.sh with make-firefox.sh for Firefox\nyarn install \u0026\u0026 yarn build --env production \u0026\u0026 ./tools/make-chrome.sh\n```\n\nThen, upload the bundle to the browser store from\n`./build/chrome/package.zip`/`./build/firefox/package.zip`.\n\n### Adding a new search engine\n\nSee a\n[reference commit with minimal changes for amazon.com](https://github.com/infokiller/web-search-navigator/commit/f57a7e4aedf66d8395995671ef4f18f3e93333b0).\nSpecific steps:\n\n- Add the required URLs to the `optional_permissions` key in\n  [`src/manifest.json`](./src/manifest.json)\n- Add a checkbox for enabling it to\n  [`src/options_page.html`](./src/options_page.html) (copy an existing one and\n  modify it)\n- Add code to [`src/options_page.js`](./src/options_page.js) for handling the\n  permission request\n- Add a new class to [`src/search_engines.js`](./src/search_engines.js) with the\n  required properties. See the documentation at the top of the file and use the\n  other search engines classes in that file as a reference.\n- Add a class instance to\n  [`searchEngines`](https://github.com/infokiller/web-search-navigator/blob/60d64947b07381e0be61df657c4de4a85ccfc2a7/src/search_engines.js#L542).\n\n## Troubleshooting\n\nBefore reporting a bug, please check and answer the following:\n\n- Does it happen when you disable other extensions?\n- Does it happen only in Chrome, only in Firefox, or both?\n\nIn addition, please try to reproduce the bug in a clean browser profile with no\nother extensions. The easiest way to do it is to clone the repo and use\n`web-ext`:\n\n```sh\ngit clone https://github.com/infokiller/web-search-navigator\ncd web-search-navigator\nyarn install \u0026\u0026 yarn build\n# Replace chromium with firefox-desktop for firefox\nyarn run web-ext run --source-dir src --target chromium\n```\n\nThis will open a clean browser instance with no other extensions. Note that this\nbrowser instance will have the default extension options (including permissions\nfor alternative search engines), so you may need to modify the option.\n\n## Privacy policy\n\nSee [PRIVACY_POLICY.md](./docs/PRIVACY_POLICY.md).\n\n## Trademarks notice\n\nThis project is not affiliated with Google LLC.\n\n©2023 Google LLC All rights reserved. Google™ search is a trademark of Google\nLLC.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finfokiller%2Fweb-search-navigator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finfokiller%2Fweb-search-navigator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finfokiller%2Fweb-search-navigator/lists"}