alias tabsort jsb browser.tabs.query({}).then(tabs => tabs.sort((t1, t2) => t1.url.localeCompare(t2.url)).forEach((tab, index) => browser.tabs.move(tab.id, {index}))) alias tabuniq jsb browser.tabs.query({}).then(tabs => browser.tabs.remove(tabs.filter((tab, index) => tabs.slice(index + 1).find(t => t.url == tab.url)).map(tab => tab.id))) alias slideshow js tri.excmds.tabqueue(Array.from(new Set(Array.from(document.querySelectorAll("a")).map(e=>e.href).filter(h=>/\.(jpe?g)|(png)|(webp)$/i.test(h))))) alias playAllVideos js tri.native.run("mpv --really-quiet --ontop --keepaspect-window --profile=protocol.http " + Array.from(document.querySelectorAll("a, iframe, video")).reduce((s, e) => {let r=(/^https?:\/\/((www.)?youtu((\.be\/)|(be\.com\/((embed\/)|(watch\?v=))))[^ ]+)|(.+\.webm)$/);let l="";if(e.tagName=="IFRAME")l=e.src.match(r);else if(e.tagName=="A")l=e.href.match(r)||e.innerText.match(r);else if(e.tagName=="VIDEO")l=[e.currentSrc?e.currentSrc:e.src];console.log(l);return s+(l && l.length > 0 && s.indexOf(l[0])<0?"'"+l[0]+"' ":"")},"")) alias gitclone jsb -p tri.native.run("git clone --depth=1 '" + JS_ARG + "' /home/me/prog/" + JS_ARG.split("/").slice(-1)) alias rsssave jsb -p tri.native.run('cat >> ~/.config/newsboat/urls', JS_ARG + "\n") alias bandcampprofiles js Array.from(document.querySelectorAll("a.fan.pic")).forEach(a => tri.excmds.tabopen(a.href)) alias bandcampclose js if (parseInt(document.querySelectorAll("li.genre-wrapper")[0].innerText.match(/([0-9]*) items? in common/)[1]) < 15) { tri.webext.ownTabId().then(id => browserBg.tabs.remove(id)) } alias bandcampcloseall jsb tri.messaging.messageAllTabs("excmd_content", "composite", ["bandcampclose"]) bind O composite url2args | fillcmdline open bind gh followpage prev bind gl followpage next bind gc composite js window.location.href | gitclone bind ;gc hint -qW gitclone bind H tabprev bind L tabnext bind K forward bind J back bind y clipboard yankshort bind Y hint -p bind v composite hint -pipe a href | js -p tri.excmds.shellescape(JS_ARG) | exclaim_quiet mpv --ontop --keepaspect-window --profile=protocol.http bind V js tri.excmds.shellescape(document.location.href).then(url => tri.native.run(`mpv --ontop --keepaspect-window --profile=protocol.http '${url}'`)) bind ;v composite hint -qpipe a href | js -p JS_ARG.map(h => `'${h}'`).join(" ") | ! mpv bind e hint -W js -p tri.native.run(`$HOME/bin/add-magnet '${JS_ARG}'`) bind u undo tab bind U undo window bind s fillcmdline saveas bind S saveas bind ;s hint -a bind ;S hint -s bind playAllVideos " Bind to `buffer 1..$` and to `tabmove 1..$` jsb ["&", "é", '"', "'", "(", "-", "è", "_", "ç", "à"].forEach((l, i) => { i = (i == 9 ? 0 : (i + 1)); ["--mode=insert", "--mode=input", "--mode=normal"].forEach(mode => { tri.excmds.bind(mode, ``, `buffer ${i}`) ; tri.excmds.bind(mode, ``, `tabmove ${i}`) })}) jsb ["--mode=insert", "--mode=input", "--mode=normal"].forEach(mode => { tri.excmds.bind(mode, ``, `tabmove -1`) ; tri.excmds.bind(mode, ``, `tabmove +1`) ; }) bind --mode=normal winopen -private bind --mode=ex text.beginning_of_line bind --mode=insert text.beginning_of_line bind --mode=input text.beginning_of_line bind --mode=ex text.end_of_line bind --mode=insert text.end_of_line bind --mode=input text.end_of_line bind --mode=ex text.forward_word bind --mode=insert text.forward_word bind --mode=input text.forward_word bind --mode=ex text.kill_line bind --mode=insert text.kill_line bind --mode=input text.kill_line bind --mode=ex text.backward_kill_line bind --mode=insert text.backward_kill_line bind --mode=input text.backward_kill_line bind --mode=ex composite getclip selection | text.insert_text bind --mode=insert composite getclip selection | text.insert_text bind --mode=input composite getclip selection | text.insert_text bind --mode=ex text.backward_kill_word bind --mode=insert text.backward_kill_word bind --mode=input text.backward_kill_word " Requires custom firefox build: https://github.com/glacambre/firefox-patches bind --mode=ex ex.next_completion bind --mode=ex ex.prev_completion bind --mode=ex ex.insert_completion bind --mode=ex ex.deselect_completion bind --mode=ex ex.complete bind --mode=ex composite text.beginning_of_line ; text.forward_word ; text.kill_word " Disable bind --mode=insert js alert(" is for quitters.") bind --mode=input js alert(" is for quitters.") bind --mode=normal js alert(" is for quitters.") bind --mode=ex js alert(" is for quitters.") bind --mode=hint js alert(" is for quitters.") unbind yy unbind ys unbind yc unbind ym unbind yt unbind --mode=ex unbind --mode=ex unbind ba bindurl reddit.com urlmodify -t www old bindurl https://github.com/.*/.*/blob f hint -c .blob-num,a bindurl https://github.com/notifications openGithubNotifications bindurl youtu((\.be)|(be\.com)) f hint -J bindurl google(\.[a-zA-Z0-9]+){1,2}/search f hint -Jc #top_nav a, #search a, .card-section a, a.fl, #pnnext, #pnprev bindurl google(\.[a-zA-Z0-9]+){1,2}/search F hint -Jbc #top_nav a, #search a, .card-section a, a.fl, #pnnext, #pnprev bindurl google(\.[a-zA-Z0-9]+){1,2}/search gF hint -Jqbc #top_nav a, #search a, .card-section a, a.fl, #pnnext, #pnprev bindurl lkml.org/lkml gl js let lis = Array.from(document.querySelectorAll(".threadlist:nth-of-type(1)")[0].querySelectorAll("li")); document.location.href = lis[lis.findIndex(li => li.className.match("origin")) + 1].querySelector("a").href bindurl lkml.org/lkml gh js let lis = Array.from(document.querySelectorAll(".threadlist:nth-of-type(1)")[0].querySelectorAll("li")); document.location.href = lis[lis.findIndex(li => li.className.match("origin")) - 1].querySelector("a").href set allowautofocus false set hintchars fdsqjklmrezauiopwxcvghtybn set searchengine g set tabopencontaineraware true set rsscmd rsssave %u set visualenterauto false set wordpattern [^\s\/]+ " Disable all searchurls jsb Object.keys(tri.config.get("searchurls")).reduce((prev, u) => prev.catch(()=>{}).then(_ => tri.excmds.setnull("searchurls." + u)), Promise.resolve()) " Add our own set searchurls.amazon https://www.amazon.fr/s/ref=nb_sb_noss?field-keywords=%s set searchurls.bandcamp https://bandcamp.com/search?q=%s set searchurls.cnrtl http://www.cnrtl.fr/lexicographie/%s set searchurls.conj http://www.les-verbes.com/conjuguer.php?verbe=%s set searchurls.crates https://crates.io/search?q=%s set searchurls.ddg https://duckduckgo.com/html?q=%s set searchurls.deb https://packages.debian.org/search?keywords=%s&searchon=names&suite=all§ion=all set searchurls.fdroid https://search.f-droid.org/?q=%s set searchurls.g https://www.google.com/search?q=%s set searchurls.gh https://github.com/search?utf8=%E2%9C%93&q=%s&ref=simplesearch set searchurls.gi https://www.google.com/search?q=%s&tbm=isch set searchurls.gmaps https://www.google.com/maps/search/%s set searchurls.gw https://wiki.gentoo.org/index.php?title=Special%3ASearch&profile=default&search=%s&fulltext=Search set searchurls.imdb https://www.imdb.com/find?q=%s set searchurls.lqwant https://lite.qwant.com/?q=%s set searchurls.mdn https://developer.mozilla.org/en-US/search?q=%s&topic=api&topic=js set searchurls.monova https://monova.to/search?term=%s set searchurls.npm https://www.npmjs.com/search?q=%s set searchurls.osm https://www.openstreetmap.org/search?query=%s set searchurls.pydoc https://docs.python.org/3/search.html?q=%s set searchurls.qwant https://www.qwant.com/?q=%s set searchurls.ratp https://www.ratp.fr/itineraires?start=%s1&end=%s2&lieu_depart=&lieu_arrivee=&modes[rail]=rail&modes[metro]=metro&modes[bus]=bus&modes[tram]=tram&itinerary_profile=fastest&op=C%27est+parti set searchurls.r https://old.reddit.com/r/%s set searchurls.rustdoc https://doc.rust-lang.org/std/index.html?search=%s set searchurls.searxme https://searx.me/?q=%s&categories=general&language=en-US set searchurls.skyt https://www.skytorrents.to/?search=%s set searchurls.steam https://store.steampowered.com/search/?term=%s set searchurls.torrentz https://torrentz2.eu/search?f=%s set searchurls.tpb https://thepiratebay.org/s/?q=%s&=on&page=0&orderby=99 set searchurls.tre http://www.wordreference.com/redirect/translation.aspx?w=%s&dict=enfr set searchurls.trf http://www.wordreference.com/redirect/translation.aspx?w=%s&dict=fren set searchurls.w https://en.wikipedia.org/w/index.php?search=%s&title=Special%3ASearch set searchurls.wfr https://fr.wikipedia.org/w/index.php?search=%s&title=Sp%E9cial%3ARecherche set searchurls.y https://www.youtube.com/results?search_query=%s set customthemes.custom html, body { -moz-font-feature-settings: "dlig" 0 !important; } span.TridactylHint { font-family: monospace !important; background: transparent !important; color: black !important; text-shadow: cyan -1px -1px 0px, cyan -1px 0px 0px, cyan -1px 1px 0px, cyan 1px -1px 0px, cyan 1px 0px 0px, cyan 1px 1px 0px, cyan 0px 1px 0px, cyan 0px -1px 0px !important; } set theme custom