https://github.com/b0o/surfingkeys-conf
🏄 A SurfingKeys config which adds 180+ key mappings & 50+ search engines
https://github.com/b0o/surfingkeys-conf
browser chrome chrome-extension chromium conf config configuration firefox firefox-addon surfingkeys vim web-browser
Last synced: about 1 month ago
JSON representation
🏄 A SurfingKeys config which adds 180+ key mappings & 50+ search engines
- Host: GitHub
- URL: https://github.com/b0o/surfingkeys-conf
- Owner: b0o
- License: mit
- Created: 2017-08-28T01:21:00.000Z (over 7 years ago)
- Default Branch: main
- Last Pushed: 2025-01-11T04:47:20.000Z (4 months ago)
- Last Synced: 2025-04-01T09:23:05.802Z (about 1 month ago)
- Topics: browser, chrome, chrome-extension, chromium, conf, config, configuration, firefox, firefox-addon, surfingkeys, vim, web-browser
- Language: JavaScript
- Homepage:
- Size: 5.58 MB
- Stars: 411
- Watchers: 16
- Forks: 71
- Open Issues: 19
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
README
# Maddison's SurfingKeys Configuration
This is my configuration for the [SurfingKeys](https://github.com/brookhong/Surfingkeys) browser extension.
It includes:
- [265 key mappings for 104 unique websites](#site-specific-key-mappings) which **automate many common actions**.
- [Omnibar integration with 58 Search Engines and Knowledge Sources](#omnibar-search-engine-integrations), many of which include **inline images** and **instant answers**.## Table of Contents
1. [Site-Specific Key Mappings](#site-specific-key-mappings)
2. [Omnibar Search Engine Integrations](#omnibar-search-engine-integrations)
3. [Installation Instructions](#installation)
4. [Screenshots](#screenshots)
5. [License](#license)## Features
### Site-Specific Key Mappings
globalMappingDescription
F
Open a link in non-active new tabzf
Open link URL in vim editorw
Scroll ups
Scroll downK
Scroll half page upJ
Scroll half page downgh
Scroll to element targeted by URL hashgi
Edit current URL with vim editorgI
View image in new tabg.
Go to parent domainyp
Copy URL path of current pageyI
Copy Image URLyA
Copy link as MarkdownyO
Copy page URL/Title as Org-mode linkyM
Copy page URL/Title as Markdown linkyT
Duplicate current tab (non-active new tab);se
Edit Settings=W
Lookup whois information for domain=d
Lookup dns information for domain=D
Lookup all information for domain=c
Show Google's cached version of page=a
Show Archive.org Wayback Machine for page=A
Show Alexa.com info for domain=s
View social discussions for page=S
View summary for page=o
Show outline.com version of page=bw
Show BuiltWith report for page=wa
Show Wappalyzer report for page;pd
Toggle PDF viewer from SurfingKeysgxE
Close tab to leftgxR
Close tab to right\cgh
Open clipboard string as GitHub path (e.g. 'torvalds/linux')F
Open a link in non-active new taboh
Open URL from historyalgolia.comMappingDescription
<Space>a
Open search resultamazon.comMappingDescription
<Space>fs
Fakespot<Space>a
View product<Space>c
Add to Cart<Space>R
View Product Reviews<Space>Q
View Product Q&A<Space>A
Open Account page<Space>C
Open Cart page<Space>O
Open Orders pageaur.archlinux.orgMappingDescription
<Space>a
View packagebehance.netMappingDescription
<Space>s
Appreciate project<Space>b
Add project to collection<Space>a
View project<Space>A
View project (non-active new tab)bsky.appMappingDescription
<Space>d
Copy user DID<Space>p
Copy user post IDchatgpt.comMappingDescription
i
Focus inputclaude.aiMappingDescription
i
Focus inputcraigslist.orgMappingDescription
<Space>a
View listingdevdocs.ioMappingDescription
w
Scroll sidebar ups
Scroll sidebar downe
Scroll sidebar page upd
Scroll sidebar page downk
Scroll body upj
Scroll body downK
Scroll body page upJ
Scroll body page downduckduckgo.comMappingDescription
<Space>a
Open search result<Space>A
Open search result (non-active new tab)]]
Show more results<Space>g
Open search in Google<Space>sgh
Search site:github.com<Space>sre
Search site:reddit.comebay.comMappingDescription
<Space>fs
Fakespotfonts.adobe.comMappingDescription
<Space>a
Activate font<Space>s
Favorite fontgithub.comMappingDescription
<Space>A
Open repository Actions page<Space>C
Open repository Commits page<Space>I
Open repository Issues page<Space>N
Open notifications page<Space>P
Open repository Pull Requests page<Space>R
Open Repository page<Space>S
Open repository Settings page<Space>W
Open repository Wiki page<Space>X
Open repository Security page<Space>O
Open repository Owner's profile page<Space>M
Open your profile page ('Me')<Space>a
View Repository<Space>u
View User<Space>f
View File<Space>c
View Commit<Space>i
View Issue<Space>p
View Pull Request<Space>e
View external linkgu
Go up one path in the URL (GitHub)<Space>s
Toggle Star<Space>yy
Copy Project Path<Space>Y
Copy Project Path (including domain)<Space>l
Toggle repo language stats<Space>D
Open in github.dev (new tab)<Space>dd
Open in github.dev<Space>G
View on SourceGraph<Space>r
View live raw version of file<Space>yr
Copy raw link to file<Space>yf
Copy link to file<Space>gcp
Open clipboard string as file path in repogithub.ioMappingDescription
<Space>R
Open Repository pagegitlab.comMappingDescription
<Space>s
Toggle Star<Space>y
Copy Project Path<Space>Y
Copy Project Path (including domain)<Space>D
View GoDoc for Projecthome.nest.comMappingDescription
=
Increment temperature-
Decrement temperature<Space>h
Switch mode to Heat<Space>c
Switch mode to Cool<Space>r
Switch mode to Heat/Cool<Space>o
Switch mode to Off<Space>f
Switch fan On<Space>F
Switch fan Offikea.comMappingDescription
<Space>d
Toggle Product Details<Space>i
Toggle Product Details<Space>r
Toggle Product Reviews<Space>C
Open Cart page<Space>P
Open Profile page<Space>F
Open Favorites page<Space>O
Open Orders pagenews.ycombinator.comMappingDescription
<Space>x
Collapse comment<Space>X
Collapse next comment<Space>s
Upvote<Space>S
Downvote<Space>a
View post (link)<Space>A
View post (link and comments)<Space>c
View post (comments)<Space>C
View post (comments) (non-active new tab)<Space>e
View external linkgp
Go to parent]]
Next page[[
Prev pageproducthunt.comMappingDescription
<Space>a
View product (external)<Space>v
View product<Space>s
Upvote productraw.githubusercontent.comMappingDescription
<Space>R
Open Repository page<Space>F
Open Source Filereddit.comMappingDescription
<Space>x
Collapse comment<Space>X
Collapse next comment<Space>s
Upvote<Space>S
Downvote<Space>e
Expand expando<Space>a
View post (link)<Space>A
View post (link) (non-active new tab)<Space>c
View post (comments)<Space>C
View post (comments) (non-active new tab)rescript-lang.orgMappingDescription
i
Focus search field<Space>a
Open docs link<Space>L
Open language manual<Space>R
Open ReScript + React docs<Space>G
Open GenType docs<Space>P
Open package index<Space>Y
Open playground<Space>S
Open syntax lookup<Space>F
Open community forum<Space>A
Open API docs<Space>J
Open JS API docs<Space>B
Open Belt API docs<Space>D
Open DOM API docsw
Scroll sidebar ups
Scroll sidebar downe
Scroll sidebar page upd
Scroll sidebar page downk
Scroll body upj
Scroll body downK
Scroll body page upJ
Scroll body page downstackoverflow.comMappingDescription
<Space>a
View questiontwitter.comMappingDescription
<Space>f
Follow user<Space>s
Like tweet<Space>R
Retweet<Space>c
Comment/Reply<Space>T
New tweet<Space>u
Goto user<Space>t
Goto tweetvimeo.comMappingDescription
<Space>F
Toggle fullscreenwikipedia.orgMappingDescription
<Space>s
Toggle simple version of current article<Space>a
View page<Space>e
View external link<Space>ys
Copy article summary as Markdown<Space>R
View WikiRank for current articlewww.google.comMappingDescription
<Space>a
Open search result<Space>A
Open search result (new tab)<Space>d
Open search in DuckDuckGowww.yelp.comMappingDescription
<Space>fs
Fakespotyoutube.comMappingDescription
A
Open videoC
Open channelgH
Goto homepageF
Toggle fullscreenYt
Copy YouTube video link for current timeYm
Copy YouTube video markdown link for current timeThere are also mappings to open academic papers from [70+ publishers](https://github.com/b0o/surfingkeys-conf/blob/4263985b12b2acd126a70988de4db8a39e118144/src/keys.js#L1240) using a [DOI handler](https://github.com/b0o/surfingkeys-conf/blob/4263985b12b2acd126a70988de4db8a39e118144/src/conf.priv.example.js#L38-L41).
### Omnibar Search Engine Integrations
To open the omnibar integration for a search engine, press the search leader key (`a` by default) followed by the alias for the desired search engine, as found in the table below.
For example, to open the Wikipedia omnibar integration, type `awp`.
Alias
Name
Domain
Screenshots
![]()
D
duckduckgo-lucky
duckduckgo.com
![]()
G
google-lucky
www.google.com
![]()
af
archforums ∗
bbs.archlinux.org
![]()
al
archlinux ∗
www.archlinux.org
![]()
at
alternativeTo ∗
alternativeto.net
![]()
au
AUR
aur.archlinux.org
:framed_picture:
![]()
aw
archwiki
wiki.archlinux.org
![]()
az
amazon
smile.amazon.com
:framed_picture:
![]()
ci
caniuse
caniuse.com
![]()
cl
craigslist
www.craigslist.org
![]()
cs
chromestore ∗
chrome.google.com
![]()
du
duckduckgo
duckduckgo.com
![]()
de
define
onelook.com
:framed_picture:
![]()
dh
dockerhub
hub.docker.com
:framed_picture:
![]()
di
duckduckgo-images
duckduckgo.com
![]()
dm
duckduckgo-maps
duckduckgo.com
![]()
dn
duckduckgo-news
duckduckgo.com
![]()
do
domainr
domainr.com
:framed_picture:
![]()
dv
duckduckgo-videos
duckduckgo.com
![]()
eb
ebay
www.ebay.com
![]()
fa
firefox-addons
addons.mozilla.org
:framed_picture:
![]()
fe
firefox-extensions
addons.mozilla.org
![]()
ft
firefox-themes
addons.mozilla.org
![]()
gI
google-reverse-image
www.google.com
![]()
gg
golang ∗
golang.org
![]()
gh
github
github.com
:framed_picture:
![]()
gi
google-images
www.google.com
![]()
go
www.google.com
![]()
gs
google-scholar
scholar.google.com
![]()
hd
hexdocs
hex.pm
![]()
hf
huggingface
huggingface.co
![]()
hn
hackernews
news.ycombinator.com
:framed_picture:
![]()
ho
hoogle
www.haskell.org
:framed_picture:
![]()
hw
haskellwiki
wiki.haskell.org
![]()
hx
hex
hex.pm
![]()
jq
jquery ∗
jquery.com
![]()
ka
kagi
kagi.com
![]()
md
mdn
developer.mozilla.org
:framed_picture:
![]()
no
node ∗
nodejs.org
![]()
np
npm
www.npmjs.com
![]()
ow
owasp
www.owasp.org
![]()
rc
crates
crates.io
![]()
rd
crates-docs
docs.rs
![]()
re
www.reddit.com
:framed_picture::framed_picture:
![]()
rr
query-rs
query.rs
![]()
se
stackexchange
stackexchange.com
![]()
so
stackoverflow
stackoverflow.com
![]()
th
thesaurus
www.onelook.com
:framed_picture:
![]()
ts
typescript
www.typescriptlang.org
![]()
tw
twitter.com
![]()
un
unicode †
symbl.cc
:framed_picture:
![]()
vw
vimwiki
vim.fandom.com
![]()
wa
wolframalpha ∗
www.wolframalpha.com
:framed_picture::framed_picture:
![]()
wp
wikipedia
en.wikipedia.org
:framed_picture:
![]()
ws
wikipedia-simple
simple.wikipedia.org
![]()
wt
wiktionary
en.wiktionary.org
![]()
yp
yelp
www.yelp.com
![]()
yt
youtube ∗
www.youtube.com
:framed_picture:
## Installation
Requires **`Surfingkeys v1.0.0 or newer`**.
### Pre-built
_Coming soon!_
### Build and Install
#### Dependencies
- **git**
- **node.js v17**#### Procedure
1. **Clone**
```shell
$ git clone http://github.com/b0o/surfingkeys-conf
$ cd surfingkeys-conf
```2. **Install Node.js dependencies**
```shell
$ npm install
```3. **Gulp Build/Install**
```shell
$ npm run gulp install # OR "npm run gulp build" to build to ./build/surfingkeys.js without installing
```This will build the final configuration file and place it at `~/.config/surfingkeys.js`.
If you already have a file in that location, make sure you back it up first!4. **Load your configuration into the SurfingKeys Extension**
Option A (recommended): Configure SurfingKeys to automatically load the configuration file
Local File Access (Chrome/Chromium only)- **I.** Visit `chrome://extensions/` and enable `Allow access to file URLs` for the Surfingkeys extension.
- **II.** Open the SurfingKeys configuration page: `chrome-extension://gfbliohnnapiefjpjlpjnehglfpaknnc/pages/options.html`.
- **III.** Set the `Load settings from` option to point to the configuration file.
_Note: you must specify the full, absolute path; the tilde `~` or environment variables like `$HOME` won't work_:
- **Linux**: `file:///home/{USERNAME}/.config/surfingkeys.js` (replace `{USERNAME}` with your username)
- **macOS**: `file:///Users/{USERNAME}/.config/surfingkeys.js` (replace `{USERNAME}` with your username)
- **Windows**: `file://%Homedrive%%Homepath%/surfingkeys.js` (This is a guess, please correct me if I'm wrong)- **IV.** Repeat these steps after you make any changes to your configuration files. Your new configuration will be automatically loaded by SurfingKeys.
Local Web Server (Chrome, Chromium, and Firefox)- **I.** Run the configuration file server:
See [Running the Local Web Server](#running-the-local-web-server)
- **II.** Open the SurfingKeys configuration page:
Chrome: `chrome-extension://gfbliohnnapiefjpjlpjnehglfpaknnc/pages/options.html`
Firefox: `moz-extension://7b04efeb-0b36-47f6-9f57-70293e5ee7b2/pages/options.html`
- **III.** Set the `Load settings from` option to `http://localhost:9919`
- **IV.** SurfingKeys will lose the settings as soon as the local web server shuts down. You will likely want to configure your system to automatically
start the server on login.If you run Linux with systemd, an [example user service](./extra/surfingkeys-conf.service) is provided in this repo. You will need to modify
it to contain the proper path to your `surfingkeys-conf` repo.- **V.** Repeat the `npm run gulp build` command from step 4 above after you make any changes to your configuration files.
Your new configuration will be automatically loaded by the web server and SurfingKeys will pick it up the next time you load a webpage.
Option B: Manually copy/paste into the SurfingKeys configuration form- **I.** Copy the contents of `./build/surfingkeys.js` (or `$HOME/.config/surfingkeys.js` if you ran `gulp install`)
- **II.** Paste the contents into the SurfingKeys configuration page:
Chrome: `chrome-extension://gfbliohnnapiefjpjlpjnehglfpaknnc/pages/options.html`
Firefox: `moz-extension://7b04efeb-0b36-47f6-9f57-70293e5ee7b2/pages/options.html`
- **III.** Repeat these steps after you make any changes to your configuration files. Your new configuration will be automatically loaded by SurfingKeys.
### Optional: Private API Key Configuration
Some omnibar search engine integrations require private API keys for access (marked with a ∗ in [the table](#omnibar-search-engine-integrations) above).
These keys are to be defined in `./src/conf.priv.js`, which should be created based on the template: [`./src/conf.priv.example.js`](./src/conf.priv.example.js).
The template contains instructions on how to generate each API key.Note: The `./src/conf.priv.js` does not exist in the repository, you need to copy the template file. The `conf.priv.js` should not be commited!
1. Copy the example private configuration:
```shell
$ cp ./src/conf.priv.example.js ./src/conf.priv.js
```2. Open `./src/conf.priv.js` in your favorite editor and follow the instructions inside:
```shell
$ vim ./src/conf.priv.js
```### Running the Local Web Server
This project provides a local web server which:
- Serves your configuration file via HTTP
- Serves additional API routes for certain search engines, like the `unicode` search engine.To run the local web server, follow steps 1-3 in the [installation instructions above](#procedure), then run:
```shell
$ gulp serve-simple
```Alternatively, you can use the `gulp serve` task, which also automatically rebuilds the configuration file whenever a source file is modified.
If you wish to use the local web server, you will likely want it to start automatically with your PC.
If you run Linux with systemd, an [example user service](./extra/surfingkeys-conf.service) is provided for this purpose.
You will need to modify it to contain the proper path to your `surfingkeys-conf` repo.**Note:** This starts a local web server on `localhost:9919` which serves your built configuration file and additional API endpoints. Depending on your firewall configuration, other devices on your network may be able to read your configuration file, including any private API keys or other secrets you have configured in `conf.priv.js`. Proceed with caution.
## Screenshots
##### AUR
##### amazon
##### define
##### dockerhub
##### domainr
##### firefox-addons
##### github
##### hackernews
##### hoogle
##### mdn

##### reddit 2
##### thesaurus
##### unicode
##### wolframalpha
##### wolframalpha 2
##### wikipedia
##### youtube
## Copyright
Author
© 2017-2025 Maddison HellstromLicense
Released under the MIT License