Last active
October 25, 2024 18:00
-
-
Save y9c/c1f604c3678812626de6fe389eab36fc to your computer and use it in GitHub Desktop.
surfingkeys_config.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/************************************************************* | |
* File Name : surfingkeys_config.js | |
* Created By : Ye Chang | |
* Creation Date : [2017-12-22 21:55] | |
* Last Modified : [2023-11-19 13:35] | |
* Description : | |
**************************************************************/ | |
// ----------------------------------------------------------------------------------------------------------------------- | |
// - Surfingkeys: https://github.com/brookhong/Surfingkeys#properties-list | |
// - Dracula Theme: https://github.com/dracula/dracula-theme#color-palette | |
// ----------------------------------------------------------------------------------------------------------------------- | |
// ----------------------------------------------------------------------------------------------------------------------- | |
// Map/Unmap Keys | |
// ----------------------------------------------------------------------------------------------------------------------- | |
// scroll setting | |
api.map('u', 'e'); | |
api.mapkey('p', "Open the clipboard's URL in the current tab", function () { | |
Front.getContentFromClipboard(function (response) { | |
window.location.href = response.data; | |
}); | |
}); | |
api.map('P', 'cc'); | |
api.map('gi', 'i'); | |
api.map('F', 'gf'); | |
api.map('gf', 'w'); | |
api.map('`', "'"); | |
api.map('H', 'S'); | |
api.map('L', 'D'); | |
api.map('gt', 'R'); | |
api.map('K', 'R'); | |
api.unmap('R') | |
api.map('gT', 'E'); | |
api.map('J', 'E'); | |
api.unmap('E') | |
api.map(";a", ";s"); | |
api.map(";q", "<Alt-s>"); | |
api.unmap(";s"); | |
//api.unmap("<Alt-s>"); | |
api.unmap('se'); | |
// map keys for certain sites | |
api.unmapAllExcept( | |
['H', 'L', 'J', 'K', 'gg', 'G', 'd', 'u', 'f', 'F', 'x'], | |
/gmail.com|twitter.com|github.com/ | |
); | |
//api.unmap(".", /github.com/); | |
// ----------------------------------------------------------------------------------------------------------------------- | |
// Settings API | |
// ----------------------------------------------------------------------------------------------------------------------- | |
// settings.nextLinkRegex = "/((>>|next|chevron_right)+)/i"; | |
// settings.prevLinkRegex = "/((<<|prev(ious)?|chevron_left)+)/i"; | |
// ----------------------------------------------------------------------------------------------------------------------- | |
// Search Engines | |
// ----------------------------------------------------------------------------------------------------------------------- | |
api.addSearchAlias('at', 'alternativeto', 'http://alternativeto.net/software/'); | |
api.addSearchAlias('oh', 'openhub', 'http://code.openhub.net/search?s=/'); | |
api.addSearchAlias('rs', 'rseek', 'http://www.rseek.org/?q='); | |
api.addSearchAlias( | |
'gs', | |
'scholar', | |
'https://scholar.google.com/scholar?hl=en&as_sdt=0%2C14=' | |
); | |
// ----------------------------------------------------------------------------------------------------------------------- | |
// Dictionary | |
// ----------------------------------------------------------------------------------------------------------------------- | |
api.Front.registerInlineQuery({ | |
url: function (q) { | |
return `https://translate.googleapis.com/translate_a/single?client=gtx&sl=en&tl=zh-CN&hl=zh-CN&dt=t&dt=bd&dj=1&source=bubble&q=${q}` | |
}, | |
parseResult: function (res) { | |
const resObj = JSON.parse(res.text) | |
let con = document.createElement('div') | |
con.style = "padding:0 15px;font-size:20px;line-height:1.2;min-height:300px;overflow:auto;" | |
con.innerHTML = '<p>Google 翻译</p>' | |
if (resObj.dict && Array.isArray(resObj.dict) && resObj.dict.length > 0) { | |
resObj.dict.forEach(d => { | |
con.innerHTML += `<p><b>${d.pos}</b> ${d.terms.join(';')}<p>` | |
}) | |
} else if (resObj.sentences && Array.isArray(resObj.sentences) && resObj.sentences.length > 0) { | |
resObj.sentences.forEach(d => { | |
con.innerHTML += `<p>${d.trans}<p>` | |
}) | |
} else { | |
con.innerHTML += `<p>...(failed to translate)...<p>` | |
} | |
return con.outerHTML | |
} | |
}); | |
// ----------------------------------------------------------------------------------------------------------------------- | |
// Change hints styles | |
// ----------------------------------------------------------------------------------------------------------------------- | |
api.Hints.characters = 'asdfgqwertvbn'; | |
api.Hints.style( | |
'border: solid 0px #ff79c6; color:#44475a; background: #f1fa8c; background-color: #f1fa8c; font-size: 9pt; font-family: "PragmataPro"' | |
); | |
api.Hints.style( | |
"border: solid 0px #ff79c6; padding: 1px; background: #7FAB97; font-size: 9pt; font-family: 'PragmataPro'", | |
'text' | |
); | |
settings.hintAlign = 'left'; | |
// ----------------------------------------------------------------------------------------------------------------------- | |
// Change search marks and cursor | |
// ----------------------------------------------------------------------------------------------------------------------- | |
api.Visual.style('marks', 'background-color: #f1fa8c;'); | |
api.Visual.style('cursor', 'background-color: #6272a4; color: #f8f8f2'); | |
// ----------------------------------------------------------------------------------------------------------------------- | |
// Change theme (fonts, color) | |
// ----------------------------------------------------------------------------------------------------------------------- | |
settings.theme = ` | |
/* Edit these variables for easy theme making */ | |
:root { | |
/* Font */ | |
--font: 'Source Code Pro', Ubuntu, sans; | |
--font-size: large; | |
--font-weight: normal; | |
/* -------------- */ | |
/* --- THEMES --- */ | |
/* -------------- */ | |
/* -------------------- */ | |
/* -- Tomorrow Night -- */ | |
/* -------------------- */ | |
/* -- DELETE LINE TO ENABLE THEME | |
--fg: #C5C8C6; | |
--bg: #282A2E; | |
--bg-dark: #1D1F21; | |
--border: #373b41; | |
--main-fg: #81A2BE; | |
--accent-fg: #52C196; | |
--info-fg: #AC7BBA; | |
--select: #585858; | |
-- DELETE LINE TO ENABLE THEME */ | |
/* Unused Alternate Colors */ | |
/* --cyan: #4CB3BC; */ | |
/* --orange: #DE935F; */ | |
/* --red: #CC6666; */ | |
/* --yellow: #CBCA77; */ | |
/* -------------------- */ | |
/* -- NORD -- */ | |
/* -------------------- */ | |
/* -- DELETE LINE TO ENABLE THEME | |
--fg: #E5E9F0; | |
--bg: #3B4252; | |
--bg-dark: #2E3440; | |
--border: #4C566A; | |
--main-fg: #88C0D0; | |
--accent-fg: #A3BE8C; | |
--info-fg: #5E81AC; | |
--select: #4C566A; | |
-- DELETE LINE TO ENABLE THEME */ | |
/* Unused Alternate Colors */ | |
/* --orange: #D08770; */ | |
/* --red: #BF616A; */ | |
/* --yellow: #EBCB8B; */ | |
/* -------------------- */ | |
/* -- DOOM ONE -- */ | |
/* -------------------- */ | |
--fg: #51AFEF; | |
--bg: #2E3440; | |
--bg-dark: #21242B; | |
--border: #2257A0; | |
--main-fg: #51AFEF; | |
--accent-fg: #98be65; | |
--info-fg: #C678DD; | |
--select: #4C566A; | |
/* Unused Alternate Colors */ | |
/* --border-alt: #282C34; */ | |
/* --cyan: #46D9FF; */ | |
/* --orange: #DA8548; */ | |
/* --red: #FF6C6B; */ | |
/* --yellow: #ECBE7B; */ | |
/* -------------------- */ | |
/* -- MONOKAI -- */ | |
/* -------------------- */ | |
/* -- DELETE LINE TO ENABLE THEME | |
--fg: #F8F8F2; | |
--bg: #272822; | |
--bg-dark: #1D1E19; | |
--border: #2D2E2E; | |
--main-fg: #F92660; | |
--accent-fg: #E6DB74; | |
--info-fg: #A6E22E; | |
--select: #556172; | |
-- DELETE LINE TO ENABLE THEME */ | |
/* Unused Alternate Colors */ | |
/* --red: #E74C3C; */ | |
/* --orange: #FD971F; */ | |
/* --blue: #268BD2; */ | |
/* --violet: #9C91E4; */ | |
/* --cyan: #66D9EF; */ | |
} | |
/* ---------- Generic ---------- */ | |
.sk_theme { | |
background: var(--bg); | |
color: var(--fg); | |
background-color: var(--bg); | |
border-color: var(--border); | |
font-family: var(--font); | |
font-size: var(--font-size); | |
font-weight: var(--font-weight); | |
} | |
input { | |
font-family: var(--font); | |
font-weight: var(--font-weight); | |
} | |
.sk_theme tbody { | |
color: var(--fg); | |
} | |
.sk_theme input { | |
color: var(--fg); | |
} | |
/* Hints */ | |
#sk_hints .begin { | |
color: var(--accent-fg) !important; | |
} | |
#sk_tabs .sk_tab { | |
background: var(--bg-dark); | |
border: 1px solid var(--border); | |
} | |
#sk_tabs .sk_tab_title { | |
color: var(--fg); | |
} | |
#sk_tabs .sk_tab_url { | |
color: var(--main-fg); | |
} | |
#sk_tabs .sk_tab_hint { | |
background: var(--bg); | |
border: 1px solid var(--border); | |
color: var(--accent-fg); | |
} | |
.sk_theme #sk_frame { | |
background: var(--bg); | |
opacity: 0.5; | |
color: var(--accent-fg); | |
} | |
/* ---------- Omnibar ---------- */ | |
/* Uncomment this and use settings.omnibarPosition = 'bottom' for Pentadactyl/Tridactyl style bottom bar */ | |
/* .sk_theme#sk_omnibar { | |
width: 100%; | |
left: 0; | |
} */ | |
.sk_theme .title { | |
color: var(--accent-fg); | |
} | |
.sk_theme .url { | |
color: var(--main-fg); | |
} | |
.sk_theme .annotation { | |
color: var(--accent-fg); | |
} | |
.sk_theme .omnibar_highlight { | |
color: var(--accent-fg); | |
} | |
.sk_theme .omnibar_timestamp { | |
color: var(--info-fg); | |
} | |
.sk_theme .omnibar_visitcount { | |
color: var(--accent-fg); | |
} | |
.sk_theme #sk_omnibarSearchResult ul li:nth-child(odd) { | |
background: var(--bg-dark); | |
} | |
.sk_theme #sk_omnibarSearchResult ul li.focused { | |
background: var(--border); | |
} | |
.sk_theme #sk_omnibarSearchArea { | |
border-top-color: var(--border); | |
border-bottom-color: var(--border); | |
} | |
.sk_theme #sk_omnibarSearchArea input, | |
.sk_theme #sk_omnibarSearchArea span { | |
font-size: var(--font-size); | |
} | |
.sk_theme .separator { | |
color: var(--accent-fg); | |
} | |
/* ---------- Popup Notification Banner ---------- */ | |
#sk_banner { | |
font-family: var(--font); | |
font-size: var(--font-size); | |
font-weight: var(--font-weight); | |
background: var(--bg); | |
border-color: var(--border); | |
color: var(--fg); | |
opacity: 0.9; | |
} | |
/* ---------- Popup Keys ---------- */ | |
#sk_keystroke { | |
background-color: var(--bg); | |
} | |
.sk_theme kbd .candidates { | |
color: var(--info-fg); | |
} | |
.sk_theme span.annotation { | |
color: var(--accent-fg); | |
} | |
/* ---------- Popup Translation Bubble ---------- */ | |
#sk_bubble { | |
background-color: var(--bg) !important; | |
color: var(--fg) !important; | |
border-color: var(--border) !important; | |
} | |
#sk_bubble * { | |
color: var(--fg) !important; | |
} | |
#sk_bubble div.sk_arrow div:nth-of-type(1) { | |
border-top-color: var(--border) !important; | |
border-bottom-color: var(--border) !important; | |
} | |
#sk_bubble div.sk_arrow div:nth-of-type(2) { | |
border-top-color: var(--bg) !important; | |
border-bottom-color: var(--bg) !important; | |
} | |
/* ---------- Search ---------- */ | |
#sk_status, | |
#sk_find { | |
font-size: var(--font-size); | |
border-color: var(--border); | |
} | |
.sk_theme kbd { | |
background: var(--bg-dark); | |
border-color: var(--border); | |
box-shadow: none; | |
color: var(--fg); | |
} | |
.sk_theme .feature_name span { | |
color: var(--main-fg); | |
} | |
/* ---------- ACE Editor ---------- */ | |
#sk_editor { | |
background: var(--bg-dark) !important; | |
height: 50% !important; | |
font-family: monospace !important; | |
font-szie: x-large !important | |
/* Remove this to restore the default editor size */ | |
} | |
.ace_dialog-bottom { | |
border-top: 1px solid var(--bg) !important; | |
} | |
.ace-chrome .ace_print-margin, | |
.ace_gutter, | |
.ace_gutter-cell, | |
.ace_dialog { | |
background: var(--bg) !important; | |
} | |
.ace-chrome { | |
color: var(--fg) !important; | |
} | |
.ace_gutter, | |
.ace_dialog { | |
color: var(--fg) !important; | |
} | |
.ace_cursor { | |
color: var(--fg) !important; | |
} | |
.normal-mode .ace_cursor { | |
background-color: var(--fg) !important; | |
border: var(--fg) !important; | |
opacity: 0.7 !important; | |
} | |
.ace_marker-layer .ace_selection { | |
background: var(--select) !important; | |
} | |
.ace_editor, | |
.ace_dialog span, | |
.ace_dialog input { | |
font-family: var(--font); | |
font-size: var(--font-size); | |
font-weight: var(--font-weight); | |
} | |
`; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment