diff options
Diffstat (limited to 'surfingkeys/surfingkeys.ts')
| -rw-r--r-- | surfingkeys/surfingkeys.ts | 523 |
1 files changed, 523 insertions, 0 deletions
diff --git a/surfingkeys/surfingkeys.ts b/surfingkeys/surfingkeys.ts new file mode 100644 index 0000000..845aad5 --- /dev/null +++ b/surfingkeys/surfingkeys.ts @@ -0,0 +1,523 @@ +declare var api: any; +declare var settings: any; + +function orgCapture() { + location.href = 'org-protocol://capture?' + + new URLSearchParams({ + template: 'U', + url: window.location.href, + title: document.title, + body: window.getSelection().toString()}); +} + + +api.addSearchAlias('aw', 'archlinux wiki', 'https://wiki.archlinux.org/index.php?search=%s'); +api.addSearchAlias('ap', 'archlinux packages', 'https://archlinux.org/packages/?q=%s'); +api.addSearchAlias('m', 'melpa', 'https://melpa.org/#/?q=%s'); +api.addSearchAlias('e', 'emacswiki', 'https://duckduckgo.com/?q=site%3Aemacswiki.org+%s&atb=v98-1&ia=web'); +api.addSearchAlias('mdn', 'Mozilla Developer Network', 'https://developer.mozilla.org/en-US/search?q=%s'); +api.addSearchAlias('metallum', 'Encyclopaedia Metallum', 'https://www.metal-archives.com/search?searchString=%s&type=band_name'); +api.addSearchAlias('il', 'Lucide Icons', 'https://lucide.dev/icons/?search=%s'); +api.addSearchAlias( + 'w', + 'wikipedia', + 'https://en.wikipedia.org/wiki/', + 's', + 'https://en.wikipedia.org/w/api.php?action=opensearch&format=json&formatversion=2&namespace=0&limit=40&search=', + function(response: any) { + return JSON.parse(response.text)[1]; + }, +); + +api.unmap(':'); +api.mapkey('<Alt-x>', '#7Open commands', function() { + api.Front.openOmnibar({type: "Commands"}); +}); +api.mapkey('gO', '#8Edit current URL and open', () => + api.Front.openOmnibar({type: "URLs", tabbed: false, pref: window.location.href})); + +api.mapkey('<Ctrl-c>g', '#14Load new posts', function() { + const el = document.querySelector('button.updates-button') as HTMLElement; + el.click(); +}, { domain: /phanpy\.social/i }); + +api.mapkey('cc', '#13Capture current page', orgCapture); + +api.vunmap('t'); +api.vmapkey('<Alt-p>', 'Go one tab left', function () { + return api.RUNTIME('previousTab'); +}); +api.imapkey('<Alt-p>', 'Go one tab right', function () { + return api.RUNTIME('previousTab'); +}); +api.vmapkey('<Alt-n>', 'Go one tab right', function () { + return api.RUNTIME('nextTab'); +}); +api.imapkey('<Alt-n>', 'Go one tab right', function () { + return api.RUNTIME('nextTab'); +}); + +api.map('<Ctrl-b>', 'h'); +api.map('<Ctrl-n>', 'j'); +api.map('<Ctrl-p>', 'k'); +api.map('<Ctrl-f>', 'l'); +api.map('<Ctrl-x>xg', 'r'); +api.map('l', 'S'); +api.map('r', 'D'); +api.map('c0', 'yy'); +api.map('cl', 'ya'); +api.map('<Alt-p>', 'E'); +api.map('<Alt-n>', 'R'); +api.map('<Ctrl-u>f', 'af'); + +api.unmap('h'); +api.unmap('j'); +api.unmap('k'); +api.unmap('S'); +api.unmap('D'); +api.unmap('yy'); +api.unmap('E'); +api.unmap('R'); +api.unmap('af'); + +api.map('<Ctrl-v>', 'P'); +api.map('<Alt-v>', 'U'); +api.map('<Alt->>', 'G'); +api.map('<Alt-<>', 'gg'); + +api.unmap('P'); +api.unmap('U'); +api.unmap('G'); +api.unmap('gg'); + +api.cmap('<Ctrl-g>', '<Esc>'); +api.imap('<Ctrl-g>', '<Esc>'); + +api.Hints.setCharacters('arstdhneio'); +api.hintAlign = "left"; + +settings.aceKeybindings = 'emacs'; +settings.defaultSearchEngine = 'd'; +settings.omnibarPosition = "bottom"; + +const hintsCss = "font-size: 13pt; font-family: 'Fantasque Sans Mono'; border: 1px solid #787f7f; color: #bfbfbf !important; background: #222424; padding: 0; line-height: 1;" +api.Hints.style(hintsCss); +api.Hints.style(hintsCss, "text"); + +settings.theme = ` + .sk_theme { + background: #222424; + color: #bfbfbf; + } + .sk_theme input { + color: #bfbfbf; + } + .sk_theme .url { + color: #f1b572; + } + .sk_theme .annotation { + color: #f172b5; + } + .sk_theme kbd { + background: #3f4242; + color: #bfbfbf; + } + .sk_theme .frame { + background: #ff00ff; + } + .sk_theme .omnibar_highlight { + color: #72f1f1; + } + .sk_theme .omnibar_folder { + color: #ff00ff; + } + .sk_theme .omnibar_timestamp { + color: #8872f1; + } + .sk_theme .omnibar_visitcount { + color: #ff00ff; + } + .sk_theme .prompt, .sk_theme .resultPage { + color: #ff00ff; + } + .sk_theme .feature_name { + color: #e0def4; + } + .sk_theme .separator { + color: #56526e; + } + body { + margin: 0; + + font-family: "JetBrains Mono NL", "Cascadia Code", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 12px; + } + #sk_omnibar { + overflow: hidden; + position: fixed; + width: 80%; + max-height: 80%; + left: 10%; + text-align: left; + box-shadow: 0px 2px 10px #2a283e; + z-index: 2147483000; + } + .sk_omnibar_middle { + top: 10%; + border-radius: 4px; + } + .sk_omnibar_bottom { + bottom: 0; + border-radius: 4px 4px 0px 0px; + } + #sk_omnibar span.omnibar_highlight { + text-shadow: 0 0 0.01em; + } + #sk_omnibarSearchArea .prompt, #sk_omnibarSearchArea .resultPage { + display: inline-block; + font-size: 20px; + width: auto; + } + #sk_omnibarSearchArea>input { + display: inline-block; + width: 100%; + flex: 1; + font-size: 20px; + margin-bottom: 0; + padding: 0px 0px 0px 0.5rem; + background: transparent; + border-style: none; + outline: none; + } + #sk_omnibarSearchArea { + display: flex; + align-items: center; + border-bottom: 1px solid #56526e; + } + .sk_omnibar_middle #sk_omnibarSearchArea { + margin: 0.5rem 1rem; + } + .sk_omnibar_bottom #sk_omnibarSearchArea { + margin: 0.2rem 1rem; + } + .sk_omnibar_middle #sk_omnibarSearchResult>ul { + margin-top: 0; + } + .sk_omnibar_bottom #sk_omnibarSearchResult>ul { + margin-bottom: 0; + } + #sk_omnibarSearchResult { + max-height: 60vh; + overflow: hidden; + margin: 0rem 0.6rem; + } + #sk_omnibarSearchResult:empty { + display: none; + } + #sk_omnibarSearchResult>ul { + padding: 0; + } + #sk_omnibarSearchResult>ul>li { + padding: 0.2rem 0rem; + display: block; + max-height: 600px; + overflow-x: hidden; + overflow-y: auto; + } + .sk_theme #sk_omnibarSearchResult>ul>li:nth-child(odd) { + background: #3f4242; + } + .sk_theme #sk_omnibarSearchResult>ul>li.focused { + background: #72aff1; + color: #3f4242; + } + .sk_theme #sk_omnibarSearchResult>ul>li.window { + border: 2px solid #56526e; + border-radius: 8px; + margin: 4px 0px; + } + .sk_theme #sk_omnibarSearchResult>ul>li.window.focused { + border: 2px solid #c4a7e7; + } + .sk_theme div.table { + display: table; + } + .sk_theme div.table>* { + vertical-align: middle; + display: table-cell; + } + #sk_omnibarSearchResult li div.title { + text-align: left; + } + #sk_omnibarSearchResult li div.url { + font-weight: normal; + white-space: nowrap; + } + #sk_omnibarSearchResult li.focused div.url { + white-space: normal; + } + #sk_omnibarSearchResult li span.annotation { + float: right; + } + #sk_omnibarSearchResult .tab_in_window { + display: inline-block; + padding: 5px; + margin: 5px; + box-shadow: 0px 2px 10px #2a283e; + } + #sk_status { + position: fixed; + bottom: 0; + right: 20%; + z-index: 2147483000; + padding: 4px 8px 0 8px; + border-radius: 4px 4px 0px 0px; + border: 1px solid #56526e; + font-size: 12px; + } + #sk_status>span { + line-height: 16px; + } + .expandRichHints span.annotation { + padding-left: 4px; + color: #ea9a97; + } + .expandRichHints .kbd-span { + min-width: 30px; + text-align: right; + display: inline-block; + } + .expandRichHints kbd>.candidates { + color: #e0def4; + font-weight: bold; + } + .expandRichHints kbd { + padding: 1px 2px; + } + #sk_find { + border-style: none; + outline: none; + } + #sk_keystroke { + padding: 6px; + position: fixed; + float: right; + bottom: 0px; + z-index: 2147483000; + right: 0px; + background: #232136; + color: #e0def4; + } + #sk_usage, #sk_popup, #sk_editor { + overflow: auto; + position: fixed; + width: 80%; + max-height: 80%; + top: 10%; + left: 10%; + text-align: left; + box-shadow: #2a283e; + z-index: 2147483298; + padding: 1rem; + } + #sk_nvim { + position: fixed; + top: 10%; + left: 10%; + width: 80%; + height: 30%; + } + #sk_popup img { + width: 100%; + } + #sk_usage>div { + display: inline-block; + vertical-align: top; + } + #sk_usage .kbd-span { + width: 80px; + text-align: right; + display: inline-block; + } + #sk_usage .feature_name { + text-align: center; + padding-bottom: 4px; + } + #sk_usage .feature_name>span { + border-bottom: 2px solid #56526e; + } + #sk_usage span.annotation { + padding-left: 32px; + line-height: 22px; + } + #sk_usage * { + font-size: 10pt; + } + kbd { + white-space: nowrap; + display: inline-block; + padding: 3px 5px; + font: 11px "JetBrains Mono NL", "Cascadia Code", "Helvetica Neue", Helvetica, Arial, sans-serif; + line-height: 10px; + vertical-align: middle; + border: solid 1px #56526e; + border-bottom-lolor: #56526e; + border-radius: 3px; + box-shadow: inset 0 -1px 0 #2a283e; + } + #sk_banner { + padding: 0.5rem; + position: fixed; + left: 10%; + top: -3rem; + z-index: 2147483000; + width: 80%; + border-radius: 0px 0px 4px 4px; + border: 1px solid #56526e; + border-top-style: none; + text-align: center; + background: #232136; + color: #bfbfbf; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + } + #sk_tabs { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: transparent; + overflow: auto; + z-index: 2147483000; + } + div.sk_tab { + display: inline-block; + border-radius: 3px; + padding: 10px 20px; + margin: 5px; + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#232136), color-stop(100%,#232136)); + box-shadow: 0px 3px 7px 0px #2a283e; + } + div.sk_tab_wrap { + display: inline-block; + } + div.sk_tab_icon { + display: inline-block; + vertical-align: middle; + } + div.sk_tab_icon>img { + width: 18px; + } + div.sk_tab_title { + width: 150px; + display: inline-block; + vertical-align: middle; + font-size: 10pt; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + padding-left: 5px; + color: #e0def4; + } + div.sk_tab_url { + font-size: 10pt; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + color: #c4a7e7; + } + div.sk_tab_hint { + display: inline-block; + float:right; + font-size: 10pt; + font-weight: bold; + padding: 0px 2px 0px 2px; + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#232136), color-stop(100%,#232136)); + color: #e0def4; + border: solid 1px #56526e; + border-radius: 3px; + box-shadow: #2a283e; + } + #sk_bubble { + position: absolute; + padding: 9px; + border: 1px solid #56526e; + border-radius: 4px; + box-shadow: 0 0 20px #2a283e; + color: #e0def4; + background-color: #232136; + z-index: 2147483000; + font-size: 14px; + } + #sk_bubble .sk_bubble_content { + overflow-y: scroll; + background-size: 3px 100%; + background-position: 100%; + background-repeat: no-repeat; + } + .sk_scroller_indicator_top { + background-image: linear-gradient(#232136, transparent); + } + .sk_scroller_indicator_middle { + background-image: linear-gradient(transparent, #232136, transparent); + } + .sk_scroller_indicator_bottom { + background-image: linear-gradient(transparent, #232136); + } + #sk_bubble * { + color: #e0def4 !important; + } + div.sk_arrow>div:nth-of-type(1) { + left: 0; + position: absolute; + width: 0; + border-left: 12px solid transparent; + border-right: 12px solid transparent; + background: transparent; + } + div.sk_arrow[dir=down]>div:nth-of-type(1) { + border-top: 12px solid #56526e; + } + div.sk_arrow[dir=up]>div:nth-of-type(1) { + border-bottom: 12px solid #56526e; + } + div.sk_arrow>div:nth-of-type(2) { + left: 2px; + position: absolute; + width: 0; + border-left: 10px solid transparent; + border-right: 10px solid transparent; + background: transparent; + } + div.sk_arrow[dir=down]>div:nth-of-type(2) { + border-top: 10px solid #e0def4; + } + div.sk_arrow[dir=up]>div:nth-of-type(2) { + top: 2px; + border-bottom: 10px solid #e0def4; + } + .ace_editor.ace_autocomplete { + z-index: 2147483300 !important; + width: 80% !important; + } + @media only screen and (max-width: 767px) { + #sk_omnibar { + width: 100%; + left: 0; + } + #sk_omnibarSearchResult { + max-height: 50vh; + overflow: scroll; + } + .sk_omnibar_bottom #sk_omnibarSearchArea { + margin: 0; + padding: 0.2rem; + } + } +`; + +// Local Variables: +// js2-additional-externs: ("api" "settings") +// End: |
