Skip to content

Instantly share code, notes, and snippets.

@philc
Created July 21, 2014 01:05
Show Gist options
  • Star 17 You must be signed in to star a gist
  • Fork 9 You must be signed in to fork a gist
  • Save philc/e849b48e6c5f32592d62 to your computer and use it in GitHub Desktop.
Save philc/e849b48e6c5f32592d62 to your computer and use it in GitHub Desktop.
A script to copy Chrome's search engine settings into Vimium's settings format
#!/bin/sh
# This script lists user defined search engines in Chromium.
# It replaces {inputEncoding}, which appears in some search engine definitions, with
# UTF-8, {google:baseURL} with the Google URL, and omits other such tokens.
# Location of Chromium's 'Web Data' SQLite3 file
CHROMIUM_WEB_DATA="$HOME/.config/chromium/Default/Web Data"
# Location to create temporary copy of 'Web Data', since the database is locked while
# Chromium is running
COPY=$(mktemp)
cp "$CHROMIUM_WEB_DATA" "$COPY"
sqlite3 <<COMMANDS "$COPY" |
.echo off
.separator ': '
select keyword, url from keywords;
.quit
COMMANDS
sed -e \ '
s#{searchTerms}#%s#g
s#{google:baseURL}#https://google.com/#g
s#{inputEncoding}#UTF-8#g
s#&?[^{}?&]\+={[^}]\+}##g
s#{[^}]\+}##g
'
rm "$COPY"
@acodecow
Copy link

acodecow commented Aug 4, 2020

Thanks! ❤

By the way, it works on windows chromium edge browser by git bash, following this path:

CHROMIUM_WEB_DATA="$HOME\AppData\Local\Microsoft\Edge\User Data\Default\Web Data"

@xatier
Copy link

xatier commented Mar 13, 2022

Similar to @ijoseph 's fork, I'm using awk to do the same. 😄

#!/bin/sh

# This script lists user defined search engines in Chromium.
# It replaces {inputEncoding}, which appears in some search engine definitions, with
# UTF-8, {google:baseURL} with the Google URL, and omits other such tokens.

# Location of Chromium's 'Web Data' SQLite3 file
CHROMIUM_WEB_DATA="$HOME/.config/microsoft-edge-dev/Default/Web Data"

# Location to create temporary copy of 'Web Data', since the database is locked while
# Chromium is running
COPY=$(mktemp)

cp "$CHROMIUM_WEB_DATA" "$COPY"

sqlite3 <<COMMANDS "$COPY" |
.echo off
select keyword, url, short_name from keywords;
.quit
COMMANDS
sed -e \ '
s#{searchTerms}#%s#g
s#{google:baseURL}#https://google.com/#g
s#{inputEncoding}#UTF-8#g
s#&?[^{}?&]\+={[^}]\+}##g
s#{[^}]\+}##g
' |
awk -v FS='|' '{ print $1": "$2"  "$3}'
rm "$COPY"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment