/* https://raw.githubusercontent.com/joshuali925/.vim/HEAD/config/surfingkeys.js GlobalSpeed.json (maybe try https://github.com/xxxily/h5player) {"common":{"audioFx":{"delay":0,"eq":{"enabled":false,"factor":1,"values":[0,0,0,0,0,0,0,0,0,0]},"pitch":0,"volume":1},"backdropFx":{"filters":[{"name":"sepia","value":0},{"name":"hueRotate","value":0},{"name":"grayscale","value":0},{"name":"contrast","value":1},{"name":"brightness","value":1},{"name":"saturate","value":1},{"name":"invert","value":0},{"name":"blur","value":0},{"name":"opacity","value":1}],"transforms":[{"name":"scaleX","value":1},{"name":"scaleY","value":1},{"name":"translateX","value":0},{"name":"translateY","value":0},{"name":"rotateX","value":0},{"name":"rotateY","value":0},{"name":"rotateZ","value":0}]},"elementFx":{"filters":[{"name":"sepia","value":0},{"name":"hueRotate","value":0},{"name":"grayscale","value":0},{"name":"contrast","value":1},{"name":"brightness","value":1},{"name":"saturate","value":1},{"name":"invert","value":0},{"name":"blur","value":0},{"name":"opacity","value":1}],"transforms":[{"name":"scaleX","value":1},{"name":"scaleY","value":1},{"name":"translateX","value":0},{"name":"translateY","value":0},{"name":"rotateX","value":0},{"name":"rotateY","value":0},{"name":"rotateZ","value":0}]},"enabled":true,"enabledLatestViaPopup":false,"lastSpeed":1.4,"speed":1.3},"firstUse":1627628559467,"keybinds":[{"adjustMode":2,"command":"adjustSpeed","enabled":true,"greedy":true,"id":"2623896300","key":{"altKey":false,"code":"KeyX","ctrlKey":false,"metaKey":false,"shiftKey":false},"valueNumberAlt":-0.1},{"adjustMode":1,"command":"adjustSpeed","enabled":true,"greedy":true,"id":"3565761808","key":{"altKey":false,"code":"KeyZ","ctrlKey":false,"metaKey":false,"shiftKey":false},"valueNumber":1},{"adjustMode":2,"command":"adjustSpeed","enabled":true,"greedy":true,"id":"8445439043","key":{"altKey":false,"code":"KeyC","ctrlKey":false,"metaKey":false,"shiftKey":false},"spacing":1,"valueNumberAlt":0.1},{"command":"setState","enabled":true,"greedy":false,"id":"9280901153","key":{"altKey":false,"code":"KeyI","ctrlKey":false,"metaKey":false,"shiftKey":true},"spacing":2,"valueState":"toggle"},{"command":"seek","enabled":true,"greedy":true,"id":"3175808952","key":{"altKey":false,"code":"Comma","ctrlKey":false,"metaKey":false,"shiftKey":false},"valueBool2":true,"valueNumber":-5},{"command":"seek","enabled":true,"greedy":true,"id":"7654966709","key":{"altKey":false,"code":"Period","ctrlKey":false,"metaKey":false,"shiftKey":false},"spacing":1,"valueBool2":true,"valueNumber":5},{"command":"seek","enabled":true,"greedy":true,"id":"3788998064","key":{"ctrlKey":false,"altKey":true,"shiftKey":false,"metaKey":false,"code":"Comma"},"spacing":0,"valueBool":false,"valueBool3":true,"valueNumber":-0.041},{"command":"seek","enabled":true,"greedy":true,"id":"3314411603","key":{"ctrlKey":false,"altKey":true,"shiftKey":false,"metaKey":false,"code":"Period"},"spacing":1,"valueBool3":true,"valueNumber":0.041},{"command":"fullscreen","enabled":true,"greedy":true,"id":"5553514632","key":{"code":"KeyF","shiftKey":true},"spacing":2,"valueBool":true}],"version":10} toggle surfingkeys for current site toggle GlobalSpeed yop toggle pdf viewer */ settings.noPdfViewer = true; // disable pdf viewer, yop or ;s to toggle settings.tabsThreshold = 0; settings.richHintsForKeystroke = 1500; settings.stealFocusOnLoad = false; settings.focusFirstCandidate = true; settings.hintAlign = 'left'; settings.smoothScroll = false; settings.omnibarMaxResults = 20; settings.modeAfterYank = 'Normal'; settings.prevLinkRegex = /(上一封|上页|上一页|上一章|前一页|prev|previous|older|<|‹|←|«|≪|<<|◀)/i; settings.nextLinkRegex = /(下一封|下页|下一页|下一章|后一页|next|newer|>|›|→|»|≫|>>|▶)/i; settings.useNeovim = false; api.iunmap(''); // https://github.com/brookhong/Surfingkeys/issues/2285 api.imap('', ''); api.vmap('-', '$'); api.vmap('', ';'); // temp key holder api.vunmap(';'); api.vmap(';,', ','); api.vmap(',', ''); api.vmap(';n', '*'); api.aceVimMap(',', ';', 'normal'); api.aceVimMap('-', '$', 'normal'); api.aceVimMap('-', '$', 'visual'); api.aceVimMap('', 'gk', 'normal'); api.aceVimMap('', 'gk', 'visual'); api.aceVimMap('', 'gj', 'normal'); api.aceVimMap('', 'gj', 'visual'); api.aceVimMap(';w', '', 'insert'); // default keys // https://github.com/brookhong/Surfingkeys/blob/7626d9515ce6fec36e14499e1e1a4e49a6d1b43a/src/content_scripts/common/api.js#L467 // https://github.com/brookhong/Surfingkeys/blob/HEAD/src/content_scripts/common/default.js api.map('{', 'h'); // scroll left api.map('}', 'l'); // scroll right api.map('h', 'E'); // tab left api.map('as', 'E'); // tab left api.map('l', 'R'); // tab right api.map('ad', 'R'); // tab right api.map('Z[', 'gx0'); // close tabs to the left api.map('Z]', 'gx$'); // close tabs to the right api.map('ZX', 'gxx'); // close other tabs api.map('', 'i'); // temp key holder api.map('i', 'gi'); // first input box api.map('gi', ''); // select input box api.map('I', ''); // disable surfingkeys api.map('', ''); // toggle surfingkeys permanently api.map('', 'p'); // temporarily disable surfingkeys api.map('', 'on'); // new tab api.map('', 'x'); // close tab api.map('H', 'S'); // back in history api.map('L', 'D'); // forward in history api.map(';fi', 'oi'); // open incognito api.map(';fm', 'ox'); // open from recently closed tab api.map(';fh', 'oh'); // open from history api.map('o', 't'); // open url api.map('t', 'T'); // goto tab api.map('s', 'f'); // open in current tab api.map('S', 'q'); // click icons api.map('K', 'Q'); // omnibar translate api.map('q', ''); // hover api.map('Q', ''); // unhover api.map('f', 'gf'); // open in background new tab api.map('F', 'cf'); // open multiple links in new tab api.map('e', 'cS'); // reset scroll target, w to switch frames api.map('E', 'cs'); // switch scroll target api.map(';fj', ';fs'); // choose scroll target api.map('gv', 'V'); // restore visual mode api.map('C', 'v'); // enter caret mode api.map('V', 'zv'); // visual select element api.map('ys', 'ya'); // select url to copy api.map('yP', 'yp'); // copy POST form data api.map('yp', 'yt'); // duplicate page api.map('yt', 'yl'); // copy page title // yj to copy all settings as json, ;pj to restore from clipboard // yy to copy url of current tab, yY to copy url of all tabs api.map('J', 'W'); // move tab to window api.map(';q', 'x'); // close tab api.map(';x', 'x'); // close tab api.map('ZQ', 'ZZ'); // save session and close, ZR to restore api.map('ZZ', 'x'); // close tab api.map(';K', ';t'); // google translate selected text api.unmap(';t'); api.map(';tu', 'X'); // restore closed tab api.map(';r', ';pm'); // preview markdown api.map(';b', 'ab'); // add bookmark api.map(';B', ';db'); // remove bookmark api.map(';c', ';e'); // edit configs api.map(';e', ';U'); // edit url api.unmap(''); api.unmap(''); api.unmap(''); api.unmap('z'); // api.unmap z, x, c, . for Global Speed api.unmap('x'); api.unmap('c'); api.unmap('.'); api.mapkey('g+', 'Increment url', function() { var e,s; IB=1; function isDigit(c) { return ('0' <= c && c <= '9') } L = window.location.href; LL = L.length; for (e=LL-1; e>=0; --e) if (isDigit(L.charAt(e))) { for(s=e-1; s>=0; --s) if (!isDigit(L.charAt(s))) break; break; } ++s; if (e<0) return; oldNum = L.substring(s,e+1); newNum = '' + (parseInt(oldNum,10) + IB); while (newNum.length < oldNum.length) newNum = '0' + newNum; window.location.href = L.substring(0,s) + newNum + L.slice(e+1); }); api.mapkey('g-', 'Decrement url', function() { var e,s; IB=-1; function isDigit(c) { return ('0' <= c && c <= '9') } L = window.location.href; LL = L.length; for (e=LL-1; e>=0; --e) if (isDigit(L.charAt(e))) { for(s=e-1; s>=0; --s) if (!isDigit(L.charAt(s))) break; break; } ++s; if (e<0) return; oldNum = L.substring(s,e+1); newNum = '' + (parseInt(oldNum,10) + IB); while (newNum.length < oldNum.length) newNum = '0' + newNum; window.location.href = L.substring(0,s) + newNum + L.slice(e+1); }); api.unmap('gr'); api.vunmap('gr'); api.mapkey('gr', 'Go to referrer', function() { if(document.referrer) open(document.referrer); }); api.unmap('ga'); api.mapkey('ga', '#12Open Chrome Apps', function() { api.tabOpenLink('chrome://apps/'); }); api.unmap('gc'); api.mapkey('gc', 'Clear cookies for specific sites', function() { api.tabOpenLink('chrome://settings/' + (navigator.userAgent.indexOf('Edg') != -1 ? 'siteData' : 'content/all')); }); api.unmap('gf'); api.mapkey('gf', 'Go to flags', function() { api.tabOpenLink('chrome://flags'); }); api.mapkey('', 'Open Chrome Settings', function() { api.tabOpenLink('chrome://settings/'); }); api.mapkey('', 'Open ChromeOS Settings', function() { api.tabOpenLink('chrome://os-settings/'); }); api.mapkey(';Vs', 'split vertically', function() { document.write(''); }); api.mapkey(';Vh', 'Split horizontally', function() { document.write(''); }) api.mapkey(';Vp', 'Pop window', function() { window.open(document.location.href, '', '_blank'); }); api.mapkey('', 'Hard reload', function() { sessionStorage.clear(); window.location.reload(true); }); api.unmap("'"); api.mapkey("'", '#8Open URL from vim-like marks', function() { // from default om, to delete api.Front.openOmnibar({type: 'VIMarks', tabbed: false}); }); api.unmap('p'); api.mapkey('p', '#0enter ephemeral PassThrough mode to temporarily suppress SurfingKeys', function() { api.Normal.passThrough(1500); }); api.mapkey(';Q', 'Close all tabs', function() { api.RUNTIME('tabOnly'); api.RUNTIME('closeTab'); }); api.unmap(';v'); api.mapkey(';v', 'Edit with web vim', function() { api.Clipboard.read(function(response) { api.Front.showEditor(response.data, function(data) { api.Clipboard.write(data); }, 'textarea'); }); }); api.unmap('P'); api.mapkey('P', 'Open url or search', function() { function validURL(str) { var text = str.trim(); try { var urlToTest = /^https?:\/\//i.test(text) ? text : 'http://' + text; var parsed = new URL(urlToTest); return parsed.hostname.includes('.') || parsed.hostname === 'localhost'; } catch (e) { return false; } } function openUrlOrSearch(text) { if (validURL(text)) { api.tabOpenLink(text); } else { api.tabOpenLink(`https://www.google.com/search?q=${encodeURIComponent(text)}`); } } if (window.getSelection().toString()) { openUrlOrSearch(window.getSelection().toString()); } else { api.Clipboard.read(function(response) { openUrlOrSearch(response.data); }); } }); api.mapkey('gp', 'DuckDuckGo first result', function() { if (window.getSelection().toString()) { api.tabOpenLink('https://duckduckgo.com/?q=!ducky+' + encodeURIComponent(window.getSelection().toString())); } else { api.Clipboard.read(function(response) { api.tabOpenLink('https://duckduckgo.com/?q=!ducky+' + encodeURIComponent(response.data)); }); } }); api.mapkey('gP', 'Google first result', function() { // or use `...&btnI` with https://greasyfork.org/en/scripts/390770-workaround-for-google-i-m-feeling-lucky-redirect (might cover more sites) if (window.getSelection().toString()) { api.tabOpenLink(`https://www.google.com/search?q=${encodeURIComponent(window.getSelection().toString())}&btnI=&sourceid=navclient&gfns=1`); } else { api.Clipboard.read(function(response) { api.tabOpenLink(`https://www.google.com/search?q=${encodeURIComponent(response.data)}&btnI=&sourceid=navclient&gfns=1`); }); } }); api.unmap('v'); api.mapkey('v', 'Copy element text', function() { let removeDuplicates = true; let selectedElement = null; let overlay = null; function createOverlay() { overlay = document.createElement('div'); overlay.style.cssText = 'position:fixed;top:0;left:0;width:100%;height:100%;z-index:999999;pointer-events:none;'; document.body.appendChild(overlay); } function highlightElement(element) { if (!element) return; const rect = element.getBoundingClientRect(); overlay.style.cssText += `border:2px solid red; background:rgba(255,0,0,0.1); top:${rect.top + window.scrollY}px; left:${rect.left + window.scrollX}px; width:${rect.width}px; height:${rect.height}px; position:absolute; pointer-events:none; z-index:999999;`; } function getTextNodes(element) { let textNodes = removeDuplicates ? new Set() : []; let walker = document.createTreeWalker(element, NodeFilter.SHOW_TEXT, null, false); let node; while ((node = walker.nextNode())) { if (node.textContent.trim()) { if (removeDuplicates) textNodes.add(node.textContent.trim()); else textNodes.push(node.textContent.trim()); } } return removeDuplicates ? Array.from(textNodes) : textNodes; } function copyToClipboard(text) { const textarea = document.createElement('textarea'); textarea.value = text; document.body.appendChild(textarea); textarea.select(); document.execCommand('copy'); document.body.removeChild(textarea); } function cleanup() { if (overlay) overlay.remove(); document.removeEventListener('click', handleClick, true); document.removeEventListener('mouseover', handleMouseOver, true); document.removeEventListener('contextmenu', handleRightClick, true); } function handleClick(e) { e.preventDefault(); e.stopPropagation(); selectedElement = e.target; const textNodes = getTextNodes(selectedElement); const content = textNodes.join('\n'); copyToClipboard(content); cleanup(); } function handleMouseOver(e) { highlightElement(e.target); } function handleRightClick(e) { e.preventDefault(); e.stopPropagation(); cleanup(); } createOverlay(); document.addEventListener('click', handleClick, true); document.addEventListener('mouseover', handleMouseOver, true); document.addEventListener('contextmenu', handleRightClick, true); }); api.unmap('r'); api.mapkey('r', 'Toggle full screen', function() { if (window.location.hostname === 'www.bilibili.com') { if (window.location.pathname === '/') { // 换一换, .roll-btn-wrap 旧版, .palette-button-wrap 新版, .feed-roll-btn 内测 document.querySelectorAll('.feed-roll-btn, .palette-button-wrap, .roll-btn-wrap')[0].getElementsByTagName('button')[0].click(); return; } // /video, /(medialist|festival), /bangumi document.querySelectorAll('.bilibili-player-iconfont-web-fullscreen-off, .bpx-player-ctrl-web-enter, .squirtle-video-pagefullscreen')[0].click(); document.getElementById('playerControlBtn').style.visibility = 'hidden' document.getElementById('picinpicBtn').style.visibility = 'hidden' } else if (window.location.hostname === 'www.youtube.com') { document.querySelectorAll('button[title="Default view (t)"]')[0]?.click(); setTimeout(() => document.getElementById('playerControlBtn').click(), 0); } else { document.getElementById('playerControlBtn').click(); // https://greasyfork.org/en/scripts/4870-maximize-video, escape also works } }); api.map('yop', ';s'); // toggle pdf viewer api.mapkey('yoe', 'Toggle editable', function() { document.body.contentEditable = document.body.contentEditable === 'true' ? 'false' : 'true'; }); api.mapkey('yot', 'Toggle dark theme', function() { const odmcss = `:root { filter: invert(90%) hue-rotate(180deg) brightness(100%) contrast(100%); background: #fff; } iframe, img, image, video, [style*="background-image"] { filter: invert() hue-rotate(180deg) brightness(105%) contrast(105%); }`; const ee = document.getElementById('surfingkeys-dark-theme'); if (null != ee) ee.parentNode.removeChild(ee); else { const style = document.createElement('style'); style.type = 'text/css'; style.id = 'surfingkeys-dark-theme'; if (style.styleSheet) style.styleSheet.cssText = odmcss; else style.appendChild(document.createTextNode(odmcss)); document.head.appendChild(style); } }); api.mapkey('yoT', 'Use water.css', function() { const createElement = (tagName, properties) => Object.assign(document.createElement(tagName), properties) document.querySelectorAll('link[rel="stylesheet"],style').forEach((el) => el.remove()) document.querySelectorAll('*').forEach((el) => (el.style = '')) const linkElm = createElement('link', { rel: 'stylesheet', href: 'https://cdn.jsdelivr.net/npm/water.css@2/out/light.css' }) document.head.append(linkElm, !document.querySelectorAll('meta[name="viewport"]').length && createElement('meta', { name: 'viewport', content: 'width=device-width,initial-scale=1.0' })) const moonSVG = '' const sunSVG = '' const toggleBtn = createElement('button', { innerHTML: sunSVG, ariaLabel: 'Switch theme', style: `position: fixed; top: 50px; right: 50px; margin: 0; padding: 10px; line-height: 1;` }) let theme = 'light' const toggleTheme = () => { theme = theme === 'light' ? 'dark' : 'light' toggleBtn.innerHTML = theme === 'light' ? sunSVG : moonSVG linkElm.href = `https://cdn.jsdelivr.net/npm/water.css@2/out/${theme}.css` } toggleBtn.addEventListener('click', toggleTheme); document.body.append(toggleBtn); }); api.mapkey('yor', 'Toggle github raw', function() { if (window.location.hostname === 'github.com') { var matches = window.location.href.match(/github.com\/([^/]+)\/([^/]+)\/blob\/(.*)/); window.location.href = `https://raw.githubusercontent.com/${matches[1]}/${matches[2]}/${matches[3]}`; } else { var matches = window.location.href.match(/raw.githubusercontent.com\/([^/]+)\/([^/]+)\/(.*)/); window.location.href = `https://github.com/${matches[1]}/${matches[2]}/blob/${matches[3]}`; } }, {domain: /github.com|raw.githubusercontent.com/i}); api.mapkey('yraw', 'Copy github raw', function() { var href = window.location.href; if (window.location.hostname === 'github.com') { var matches = window.location.href.match(/github.com\/([^/]+)\/([^/]+)\/blob\/(.*)/); href = `https://raw.githubusercontent.com/${matches[1]}/${matches[2]}/${matches[3]}`; } fetch(href).then(response => response.text()).then((text) => api.Clipboard.write(text)); }, {domain: /github.com|raw.githubusercontent.com/i}); api.mapkey('yov', 'Toggle sites', function() { if (/[^.]+\.github\.io/.test(window.location.hostname)) { window.location.href = `https://github.com/${window.location.hostname.match(/([^.]+)\.github\.io/)[1]}/${window.location.pathname.match(/^\/?([^\/]+|)/)[1]}`; } else if (/github.com\/[^/]+\/[^/]+\/?$/.test(window.location.href)) { window.location.href = window.location.href.replace(/github.com/, 'deepwiki.com'); } else if (/github.(com|dev)/.test(window.location.hostname)) { api.tabOpenLink(window.location.href.replace(/github.(com|dev)/, function(match, p1) { return p1 === 'com' ? 'github.dev' : 'github.com' })); } else if (window.location.hostname === 'www.baidu.com') { window.location.href = `https://www.google.com/search?q=${window.location.href.match(/[?&]wd=([^&]+)/)[1]}`; } else if (window.location.hostname === 'www.bing.com') { window.location.href = `https://www.google.com/search?q=${window.location.href.match(/[?&]q=([^&]+)/)[1]}`; } else if (window.location.hostname === 'www.google.com') { window.location.href = `https://www.baidu.com/s?ie=UTF-8&wd=${window.location.href.match(/[?&]q=([^&]+)/)[1]}`; } else if (window.location.hostname === 'www.reddit.com') { window.location.href = window.location.href.replace('www.reddit.com', 'libredd.it'); } }, {domain: /(baidu|bing|google|github|reddit)\.(com|dev|io)/i}); api.mapkey('yos', 'Toggle sourcegraph search', function() { api.tabOpenLink('https://sourcegraph.com/search?q=context:global+repo:' + window.location.href.match(/(github.com\/[^/]+\/?[^/]+)/)[1] + '+'); }, {domain: /github\.com/i}); api.mapkey('yrss', 'Copy rss', function() { if (window.location.hostname === 'www.reddit.com') { api.Clipboard.write(window.location.href.replace(/\/$/, '') + '.rss'); } else if (window.location.hostname === 'github.com') { if (/([^/]+)\/([^/]+)\/(issues|pull)\/(\d+)/.test(window.location.pathname)) { // issue comments api.Clipboard.write('https://rsshub.app/github/comments' + window.location.pathname.replace(/\/(issues|pull)\//, '/')); } else if (/^\/([^/]+)\/([^/]+)\/?$/.test(window.location.pathname)) { // main page, commits api.Clipboard.write(window.location.href.replace(/\/$/, '') + '/commits.atom'); } else { // /commits/.atom or /releases.atom api.Clipboard.write(window.location.href.replace(/\/$/, '') + '.atom'); } } else if (window.location.hostname === 'weibo.com') { // path needs to be user id api.Clipboard.write('https://rssfeed.today/weibo/rss' + window.location.pathname); } }, {domain: /(github|reddit|weibo)\.com/i}); api.unmap('gg'); api.unmap('G'); var scrollX, scrollY; api.mapkey('gg', 'Go to top', function() { var tempX = document.scrollingElement.scrollLeft; var tempY = document.scrollingElement.scrollTop; api.Normal.scroll('top'); if (tempX !== document.scrollingElement.scrollLeft || tempY !== document.scrollingElement.scrollTop) { scrollX = tempX; scrollY = tempY; } }); api.mapkey('G', 'Go to bottom', function() { var tempX = document.scrollingElement.scrollLeft; var tempY = document.scrollingElement.scrollTop; api.Normal.scroll('bottom'); if (tempX !== document.scrollingElement.scrollLeft || tempY !== document.scrollingElement.scrollTop) { scrollX = tempX; scrollY = tempY; } }); api.mapkey('``', 'Go to previous position', function() { var tempX = document.scrollingElement.scrollLeft; var tempY = document.scrollingElement.scrollTop; if (scrollX !== undefined && scrollY !== undefined) window.scrollTo(scrollX, scrollY); scrollX = tempX; scrollY = tempY; }); for (let i = 32; i < 127; ++i) { // don't use var to avoid closure referencing global if (i === 96) continue; // backtick let char = String.fromCharCode(i); api.mapkey(`\`${char}`, `Jump mark ${char}`, function() { api.Normal.jumpVIMark(char); }); } // https://github.com/brookhong/Surfingkeys/wiki/Register-inline-query api.Front.registerInlineQuery({ url: function(q) { return `http://dict.youdao.com/w/eng/${q}/#keyfrom=dict2.index`; }, parseResult: function(res) { var parser = new DOMParser(); var doc = parser.parseFromString(res.text, 'text/html'); var collinsResult = doc.querySelector('#collinsResult'); var authTransToggle = doc.querySelector('#authTransToggle'); var examplesToggle = doc.querySelector('#examplesToggle'); if (collinsResult) { collinsResult.querySelectorAll('div>span.collinsOrder').forEach(function(span) { span.nextElementSibling.prepend(span); }); collinsResult.querySelectorAll('div.examples').forEach(function(div) { div.innerHTML = div.innerHTML.replace(/

/gi, ''); }); var exp = collinsResult.innerHTML; return exp; } else if (authTransToggle) { authTransToggle.querySelector('div.via.ar').remove(); return authTransToggle.innerHTML; } else if (examplesToggle) { return examplesToggle.innerHTML; } } }); settings.theme = ` .sk_theme { font-family: Input Sans Condensed, Charcoal, sans-serif; font-size: 10pt; background: #24272e; color: #abb2bf; } .sk_theme tbody { color: #fff; } .sk_theme input { color: #d0d0d0; } .sk_theme .url { color: #61afef; } .sk_theme .annotation { color: #56b6c2; } .sk_theme .omnibar_highlight { color: #528bff; } .sk_theme .omnibar_timestamp { color: #e5c07b; } .sk_theme .omnibar_visitcount { color: #98c379; } .sk_theme #sk_omnibarSearchResult ul li:nth-child(odd) { background: #303030; } .sk_theme #sk_omnibarSearchResult ul li.focused { background: #3e4452; } #sk_omnibar { opacity: 0.9 !important; } #sk_status, #sk_find { font-size: 12pt; } :root { --theme-ace-bg:#edeeee; --theme-ace-bg-accent:#e4e4e4; --theme-ace-select:#b8c2c3; } #sk_editor { height: 75% !important; background: var(--theme-ace-bg) !important; opacity: 0.9; } .ace_content { background: var(--theme-ace-bg) !important; } .ace_dialog-bottom { border-top: 1px solid var(--theme-ace-bg) !important; } .ace-chrome .ace_print-margin, .ace_gutter, .ace_gutter-cell, .ace_dialog { background: var(--theme-ace-bg-accent) !important; } .ace_marker-layer .ace_selection { background: var(--theme-ace-select) !important; } `;