Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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: 3 days 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: 2024-11-21T01:03:46.000Z (about 1 month ago)
- Last Synced: 2024-12-22T07:04:57.712Z (10 days ago)
- Topics: browser, chrome, chrome-extension, chromium, conf, config, configuration, firefox, firefox-addon, surfingkeys, vim, web-browser
- Language: JavaScript
- Homepage:
- Size: 5.54 MB
- Stars: 394
- Watchers: 17
- Forks: 67
- Open Issues: 18
-
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 55 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 history
algolia.comMappingDescription<Space>a
Open search result
amazon.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 page
aur.archlinux.orgMappingDescription<Space>a
View package
behance.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 ID
chatgpt.comMappingDescriptioni
Focus input
claude.aiMappingDescriptioni
Focus input
craigslist.orgMappingDescription<Space>a
View listing
devdocs.ioMappingDescriptionw
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 down
duckduckgo.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.com
ebay.comMappingDescription<Space>fs
Fakespot
fonts.adobe.comMappingDescription<Space>a
Activate font<Space>s
Favorite font
github.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 repo
github.ioMappingDescription<Space>R
Open Repository page
gitlab.comMappingDescription<Space>s
Toggle Star<Space>y
Copy Project Path<Space>Y
Copy Project Path (including domain)<Space>D
View GoDoc for Project
home.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 Off
ikea.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 page
news.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 page
producthunt.comMappingDescription<Space>a
View product (external)<Space>v
View product<Space>s
Upvote product
raw.githubusercontent.comMappingDescription<Space>R
Open Repository page<Space>F
Open Source File
reddit.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.orgMappingDescriptioni
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 down
stackoverflow.comMappingDescription<Space>a
View question
twitter.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 tweet
vimeo.comMappingDescription<Space>F
Toggle fullscreen
wikipedia.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 article
www.google.comMappingDescription<Space>a
Open search result<Space>A
Open search result (new tab)<Space>d
Open search in DuckDuckGo
www.yelp.comMappingDescription<Space>fs
Fakespot
youtube.comMappingDescriptionA
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
re
www.reddit.com
:framed_picture::framed_picture:
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
![AUR screenshot](./assets/screenshots/au.png)##### amazon
![amazon screenshot](./assets/screenshots/az.png)##### define
![define screenshot](./assets/screenshots/de.png)##### dockerhub
![dockerhub screenshot](./assets/screenshots/dh.png)##### domainr
![domainr screenshot](./assets/screenshots/do.png)##### firefox-addons
![firefox-addons screenshot](./assets/screenshots/fa.png)##### github
![github screenshot](./assets/screenshots/gh.png)##### hackernews
![hackernews screenshot](./assets/screenshots/hn.png)##### hoogle
![hoogle screenshot](./assets/screenshots/ho.png)##### mdn
![mdn screenshot](./assets/screenshots/md.png)
![reddit screenshot](./assets/screenshots/re-01.png)##### reddit 2
![reddit screenshot](./assets/screenshots/re-02.png)##### thesaurus
![thesaurus screenshot](./assets/screenshots/th.png)##### unicode
![unicode screenshot](./assets/screenshots/un.png)##### wolframalpha
![wolframalpha screenshot](./assets/screenshots/wa-01.png)##### wolframalpha 2
![wolframalpha screenshot](./assets/screenshots/wa-02.png)##### wikipedia
![wikipedia screenshot](./assets/screenshots/wp.png)##### youtube
![youtube screenshot](./assets/screenshots/yt.png)## Copyright
Author
© 2017-2024 Maddison HellstromLicense
Released under the MIT License