This is the default configuration that Tridactyl comes with.

You can change anything here using set key1.key2.key3 value or specific things any of the various helper commands such as bind or command. You can also jump to the help section of a setting using :help $settingname. Some of the settings have an input field containing their current value. You can modify these values and save them by pressing <Enter> but using :set $setting $value is a good habit to take as it doesn't force you to leave the page you're visiting to change your settings.

If the setting you are changing has a dot or period character (.) in it, it cannot be set with :set directly. You must either use a helper command for that specific setting - e.g. :seturl or :autocontain, or you must use Tridactyl's JavaScript API with :js tri.config.set("path", "to", "key", "value") to set {path: {to: {key: value}}}.

Hierarchy

  • default_config

Index

Properties

allowautofocus

allowautofocus: "true" | "false" = "true"

Controls whether the page can focus elements for you via js

NB: will break fancy editors such as CodeMirror on Jupyter. Simply use seturl to whitelist pages you need it on.

Best used in conjunction with browser.autofocus in about:config

auconcreatecontainer

auconcreatecontainer: "true" | "false" = "true"

Autocontain directives create a container if it doesn't exist already.

autocontain

autocontain: any = o({// "github.com": "microsoft",// "youtube.com": "google",})

Automatically place these sites in the named container.

Each key corresponds to a URL fragment which, if contained within the page URL, the site will be opened in a container tab instead.

autocontainmode

autocontainmode: "strict" | "relaxed" = "strict"

Strict mode will always ensure a domain is open in the correct container, replacing the current tab if necessary.

Relaxed mode is less aggressive and instead treats container domains as a default when opening a new tab.

blacklistkeys

blacklistkeys: string[] = ["/"]

Which keys to protect from pages that try to override them. Requires leavegithubalone to be set to false.

bmarkweight

bmarkweight: number = 100

When displaying bookmarks in history completions, how many page views to pretend they have.

browser

browser: string = "firefox"

The browser executable to look for in commands such as restart. Not as mad as it seems if you have multiple versions of Firefox...

completionfuzziness

completionfuzziness: number = 0.3

Threshold for fuzzy matching on completions. Lower => stricter matching. Range between 0 and 1: 0 corresponds to perfect matches only. 1 will match anything.

https://fusejs.io/api/options.html#threshold

configversion

configversion: string = "0.0"

Internal version number Tridactyl uses to know whether it needs to update from old versions of the configuration.

Changing this might do weird stuff.

containerindicator

containerindicator: "true" | "false" = "true"

If moodeindicator is enabled, containerindicator will color the border of the mode indicator with the container color.

csp

csp: "untouched" | "clobber" = "untouched"

Deprecated. Change this to "clobber" to ruin the "Content Security Policy" of all sites a bit and make Tridactyl run a bit better on some of them, e.g. raw.github*

cursorpos

cursorpos: "beginning" | "end" = "end"

Decides where to place the cursor when selecting non-empty input fields

customthemes

customthemes: {}

Storage for custom themes

Maps theme names to CSS. Predominantly used automatically by colourscheme to store themes read from disk, as documented by colourscheme. Setting this manually is untested but might work provided that colourscheme is then used to change the theme to the right theme name.

Type declaration

downloadforbiddenchars

downloadforbiddenchars: string = "/"

Set of characters that are to be considered illegal as download filenames.

downloadforbiddennames

downloadforbiddennames: string = ""

Comma-separated list of whole filenames which, if match with the download filename, will be suffixed with the "downloadforbiddenreplacement" value.

downloadforbiddenreplacement

downloadforbiddenreplacement: string = "_"

Value that will be used to replace the illegal character(s), if found, in the download filename.

downloadsskiphistory

downloadsskiphistory: "true" | "false" = "false"

Whether downloads (e.g. via ;s hint modes) appear in your download history.

NB: will cause downloads to fail silently if Tridactyl is not allowed to run in private windows (regardless of whether you are trying to call it in a private window).

editorcmd

editorcmd: string = "auto"

Insert / input mode edit-in-$EDITOR command to run This has to be a command that stays in the foreground for the whole editing session "auto" will attempt to find a sane editor in your path. Please send your requests to have your favourite terminal moved further up the list to /dev/null. (but we are probably happy to add your terminal to the list if it isn't already there.)

Example values:

  • linux: xterm -e vim
  • windows: start cmd.exe /c \"vim\".

Also see :editor.

escapehatchsidebarhack

escapehatchsidebarhack: "true" | "false" = "true"

Whether to open and close the sidebar quickly to get focus back to the page when <C-,> is pressed.

Disable if the fact that it closes TreeStyleTabs gets on your nerves too much : )

NB: when disabled, <C-,> can't get focus back from the address bar, but it can still get it back from lots of other places (e.g. Flash-style video players)

externalclipboardcmd

externalclipboardcmd: string = "auto"

Clipboard command to try to get the selection from (e.g. xsel or xclip)

findcase

findcase: "smart" | "sensitive" | "insensitive" = "smart"

Whether find should be case-sensitive

findcontextlen

findcontextlen: number = 100

Number of characters to use as context for the matches shown in completions

findhighlighttimeout

findhighlighttimeout: number = 0

How long find highlights should persist in milliseconds. <= 0 means they persist until cleared

findresults

findresults: number = -1

Number of results that should be shown in completions. -1 for unlimited

gimode

gimode: "nextinput" | "firefox" = "nextinput"

When set to "nextinput", pressing <Tab> after gi selects the next input.

When set to "firefox", <Tab> behaves like normal, focusing the next tab-indexed element regardless of type.

gotoselector

gotoselector: string = "h1, h2, h3, h4, h5, h6"

Default selector for :goto command.

hintautoselect

hintautoselect: "true" | "false" = "true"

Controls whether hints should be followed automatically.

If set to false, hints will only be followed upon confirmation. This applies to cases when there is only a single match or only one link on the page.

hintchars

hintchars: string = "hjklasdfgyuiopqwertnmzxcvb"

Characters to use in hint mode.

They are used preferentially from left to right.

hintdelay

hintdelay: number = 300

The delay in milliseconds in vimperator style hint modes after selecting a hint before you are returned to normal mode.

The point of this is to prevent accidental execution of normal mode binds due to people typing more than is necessary to choose a hint.

hintfiltermode

hintfiltermode: "simple" | "vimperator" | "vimperator-reflow" = "simple"

The type of hinting to use. vimperator will allow you to filter links based on their names by typing non-hint chars. It is recommended that you use this in conjuction with the hintchars setting, which you should probably set to e.g, 5432167890. ´vimperator-reflow´ additionally updates the hint labels after filtering.

hintnames

hintnames: "short" | "numeric" | "uniform" = "short"

Whether to optimise for the shortest possible names for each hint, or to use a simple numerical ordering. If set to numeric, overrides hintchars setting.

hintshift

hintshift: "true" | "false" = "false"

Controls whether hints should be shifted in quick-hints mode.

Here's what it means: let's say you have hints from a to z but are only interested in every second hint. You first press a, then c. Tridactyl will realize that you skipped over b, and so that the next hint you're going to trigger is probably e. Tridactyl will shift all hint names so that e becomes c, d becomes b, c becomes a and so on. This means that once you pressed c, you can keep on pressing c to trigger every second hint. Only makes sense with hintnames = short.

hintuppercase

hintuppercase: "true" | "false" = "true"

Whether to display the names for hints in uppercase.

historyresults

historyresults: number = 50

Number of most recent results to ask Firefox for. We display the top 20 or so most frequently visited ones.

homepages

homepages: string[] = []

Pages opened with gH. In order to set this value, use :set homepages ["example.org", "example.net", "example.com"] and so on.

incsearch

incsearch: "true" | "false" = "false"

Whether Tridactyl should jump to the first match when using :find

jsurls

jsurls: {}

Like searchurls but must be a Javascript function that takes one argument (a single string with the remainder of the command line including spaces) and maps it to a valid href (or a promise that resolves to a valid href) that will be followed, e.g. set jsurls.googleloud query => "https://google.com/search?q=" + query.toUpperCase()

NB: the href must be valid, i.e. it must include the protocol (e.g. "http://") and not just be e.g. "www.".

Type declaration

jumpdelay

jumpdelay: number = 3000

Milliseconds before registering a scroll in the jumplist

keyboardlayoutbase

keyboardlayoutbase: keyof typeof keyboardlayouts = "qwerty"

Base keyboard layout to use when keyboardlayoutforce is enabled. At the time of writing, the following layouts are supported: qwerty, azerty, german, dvorak, uk, ca, bepo. Requires page reload to take effect.

If your layout is missing, you can contribute it with the help of https://gistpreview.github.io/?324119c773fac31651f6422087b36804 - please just open an :issue with your layout and we'll add it.

You can manually override individual keys for a layout with keyboardlayoutoverrides.

keyboardlayoutforce

keyboardlayoutforce: "true" | "false" = "false"

Instead of fetching actual character which depends on selected layout, use machine code of a key and convert to character according to keyboardlayoutoverrides. The default layout mapping is US qwerty, but can be changed with keyboardlayoutbase.

There is a much more detailed help page towards the end of :tutor under the title "Non-QWERTY layouts".

Recommended for everyone with multiple or/and non-latin keyboard layouts. Make sure usekeytranslatemap is false if you have previously used keymap.

keyboardlayoutoverrides

keyboardlayoutoverrides: {}

Override individual keys for a layout when keyboardlayoutforce is enabled. Changes take effect only after a page reload.

Key codes for printable keys for keyboardlayoutforce, lower and upper register. See https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_code_values for the names of each key.

NB: due to a Tridactyl bug, you cannot set this using array notation as you can for, e.g. [[homepage]]. You must instead set the lower and upper registers using a string with no spaces in it, for example :set keyboardlayoutoverrides Digit2: 2" for the British English layout.

Type declaration

keytranslatemap

keytranslatemap: {}
deprecated

Map for translating keys directly into other keys in normal-ish modes. For example, if you have an entry in this config option mapping п to g, then you could type пп instead of gg or пi instead of gi or ;п instead of ;g.

This was primarily useful for international users, but now you can set keyboardlayoutforce true, which will make everything layout-independent(and work like qwerty by default), and use keyboardlayoutoverrides setting to change the desired layout.

For example, you may want to map 'a' to 'q` on azerty or 'r' to 'p' if you use dvorak.

Note that the current implementation does not allow you to "chain" keys, for example, "a"=>"b" and "b"=>"c" for "a"=>"c". You can, however, swap or rotate keys, so "a"=>"b" and "b"=>"a" will work the way you'd expect, as will "a"=>"b" and "b"=>"c" and "c"=>"a".

Type declaration

leavegithubalone

leavegithubalone: "true" | "false" = "false"

Whether to allow pages (not necessarily github) to override /, which is a default Firefox binding.

markjumpnoisy

markjumpnoisy: "true" | "false" = "true"

Whether markjump should pop-up with a notification

minincsearchlen

minincsearchlen: number = 3

How many characters should be typed before triggering incsearch/completions

modeindicator

modeindicator: "true" | "false" = "true"

Whether to display the mode indicator or not.

modeindicatorshowkeys

modeindicatorshowkeys: "true" | "false" = "false"

Show (partial) command in the mode indicator. Corresponds to 'showcmd' option of vi.

nativeinstallcmd

nativeinstallcmd: string = "curl -fsSl https://raw.githubusercontent.com/tridactyl/native_messenger/master/installers/install.sh -o /tmp/trinativeinstall.sh && sh /tmp/trinativeinstall.sh %TAG"

Set this to something weird if you want to have fun every time Tridactyl tries to update its native messenger.

%TAG will be replaced with your version of Tridactyl for stable builds, or "master" for beta builds

NB: Windows has its own platform-specific default.

newtab

newtab: string = ""

URL the newtab will redirect to.

All usual rules about things you can open with open apply, with the caveat that you'll get interesting results if you try to use something that needs nativeopen: so don't try about:newtab or a file:/// URI. You should instead use a data URI - https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs - or host a local webserver (e.g. Caddy).

noiframe

noiframe: "true" | "false" = "false"

Disables the commandline iframe. Dangerous setting, use seturl to set it. If you ever set this setting to "true" globally and then want to set it to false again, you can do this by opening Tridactyl's preferences page from about:addons.

noiframeon

noiframeon: string[] = []
deprecated

A list of URLs on which to not load the iframe. Use seturl [URL] noiframe true instead, as shown in noiframe.

noproxy

noproxy: "true" | "false" = "false"

Whether to use proxy settings.

If set to true, all proxy settings will be ignored.

perfcounters

perfcounters: "true" | "false" = "false"

Activate tridactyl's performance counters. These have a measurable performance impact, since every sample is a few hundred bytes and we sample tridactyl densely, but they're good when you're trying to optimize things.

perfsamples

perfsamples: string = "10000"

How many samples to store from the perf counters.

Each performance entry is two numbers (16 bytes), an entryType of either "mark" or "measure" (js strings are utf-16 ad we have two marks for each measure, so amortize to about 10 bytes per entry), and a string name that for Tridactyl object will be about 40 (utf-16) characters (80 bytes), plus object overhead roughly proportional to the string-length of the name of the constructor (in this case something like 30 bytes), for a total of what we'll call 128 bytes for ease of math.

We want to store, by default, about 1MB of performance statistics, so somewhere around 10k samples.

preventautofocusjackhammer

preventautofocusjackhammer: "true" | "false" = "false"

Uses a loop to prevent focus until you interact with a page. Only recommended for use via seturl for problematic sites as it can be a little heavy on CPU if running on all tabs. Should be used in conjuction with allowautofocus

priority

priority: number = 0

Internal field to handle site-specific config priorities. Use :seturl/:unseturl to change this value.

profiledir

profiledir: string = "auto"

Profile directory to use with native messenger with e.g, guiset.

proxies

proxies: any = o({// "socksName": "socks://hostname:port",// "socks4": "socks4://hostname:port",// "https": "https://username:password@hostname:port"})

Definitions of proxies.

You can add a new proxy with proxyadd proxyname proxyurl

proxy

proxy: string = ""

Default proxy to use for all URLs. Has to be the name of a proxy. To add a proxy, see :help proxyadd. NB: usage with :seturl is buggy, use :autocontain -s [regex to match URL] none [proxy] instead

putfrom

putfrom: "clipboard" | "selection" = "clipboard"

Which clipboard to retrieve items from. Requires the native messenger to be installed.

Permitted values: clipboard, or selection.

readerurlintitle

readerurlintitle: "true" | "false" = "false"

Whether to show article url in the document.title of Reader View.

relatedopenpos

relatedopenpos: "related" | "next" | "last" = "related"

Where to open tabs opened with hinting - as if it had been middle clicked, to the right of the current tab, or at the end of the tabs.

rsscmd

rsscmd: string = "yank %u"

Command that should be run by the rssexec ex command. Has the following format:

  • %u: url
  • %t: title
  • %y: type (rss, atom, xml...) Warning: This is a very large footgun. %u will be inserted without any kind of escaping, hence you must obey the following rules if you care about security:
  • Do not use a composite command. If you need a composite command, create an alias.
  • Do not use js or jsb. If you need to use them, create an alias.
  • Do not insert any %u, %t or %y in shell commands run by the native messenger. Use pipes instead.

Here's an example of how to save an rss url in a file on your disk safely: alias save_rss jsb -p tri.native.run("cat >> ~/.config.newsboat/urls", JS_ARG) set rsscmd save_rss %u This is safe because the url is passed to jsb as an argument rather than being expanded inside of the string it will execute and because it is piped to the shell command rather than being expanded inside of it.

scrollduration

scrollduration: number = 100

How viscous you want smooth scrolling to feel.

searchengine

searchengine: string = ""

The default search engine used by open search. If empty string, your browser's default search engine will be used. If set to something, Tridactyl will first look at your searchurls and then at the search engines for which you have defined a keyword on about:preferences#search.

searchurlweight

searchurlweight: number = 150

When displaying searchurls in history completions, how many page views to pretend they have.

smoothscroll

smoothscroll: "true" | "false" = "false"

Whether to use Tridactyl's (bad) smooth scrolling.

superignore

superignore: "true" | "false" = "false"

Disable Tridactyl almost completely within a page, e.g. seturl ^https?://mail.google.com disable true. Only takes affect on page reload.

You are usually better off using blacklistadd and seturl [url] noiframe true as you can then still use some Tridactyl binds, e.g. shift-insert for exiting ignore mode.

NB: you should only use this with seturl. If you get trapped with Tridactyl disabled everywhere just run tri unset superignore in the Firefox address bar. If that still doesn't fix things, you can totally reset Tridactyl by running tri help superignore in the Firefox address bar, scrolling to the bottom of that page and then clicking "Reset Tridactyl config".

tabclosepinned

tabclosepinned: "true" | "false" = "true"

When enabled (the default), running tabclose will close the tabs whether they are pinned or not. When disabled, tabclose will fail with an error if a tab is pinned.

tabgroupnewtaburls

tabgroupnewtaburls: {}

Initial urls to navigate to when creating a new tab for a new tab group.

Type declaration

tabopencontaineraware

tabopencontaineraware: "true" | "false" = "false"

If enabled, tabopen opens a new tab in the currently active tab's container.

tabopenpos

tabopenpos: "next" | "last" | "related" = "next"

Where to open tabs opened with tabopen - to the right of the current tab, or at the end of the tabs.

tabshowhidden

tabshowhidden: "true" | "false" = "false"

Whether :tab shows completions for hidden tabs (e.g. tabs in other tab groups).

tabsort

tabsort: "mru" | "default" = "default"

Controls which tab order to use when numbering tabs. Either mru = sort by most recent tab or default = by tab index

Applies to all places where Tridactyl numbers tabs including :tab, :tabnext_gt etc. (so, for example, with :set tabsort mru 2gt would take you to the second most recently used tab, not the second tab in the tab bar).

theme

theme: string = "default"

The theme to use.

Permitted values: run :composite js tri.styling.THEMES | fillcmdline to find out.

ttspitch

ttspitch: number = 1

Controls text-to-speech pitch. Has to be between 0 and 2.

ttsrate

ttsrate: number = 1

Controls text-to-speech speed. Has to be a number between 0.1 and 10.

ttsvoice

ttsvoice: string = "default"

The name of the voice to use for text-to-speech. You can get the list of installed voices by running the following snippet: js alert(window.speechSynthesis.getVoices().reduce((a, b) => a + " " + b.name))

ttsvolume

ttsvolume: number = 1

Controls text-to-speech volume. Has to be a number between 0 and 1.

urlparentignorefragment

urlparentignorefragment: "true" | "false" = "false"

Whether removal of the url fragment (the name after # in the url) is counted as a parent level.

urlparentignorepathregexp

urlparentignorepathregexp: string = ""

RegExp to remove from the url pathname before go to any parent path. To ignore "index.html" in "parent/index.html", set it to "//index.html/". The regexp flag is supported, and the escape of the slashes inside the regexp is not required.

An empty string will disable this feature.

Suggested value: //index.(html?|php|aspx?|jsp|cgi|pl|js)$/i

urlparentignoresearch

urlparentignoresearch: "true" | "false" = "false"

Whether removal the url search parameter (the name after ? in the url) is counted as a parent level.

urlparenttrailingslash

urlparenttrailingslash: "true" | "false" = "true"

Whether a trailing slash is appended when we get the parent of a url with gu (or other means).

usekeytranslatemap

usekeytranslatemap: "true" | "false" = "true"
deprecated

Whether to use the keytranslatemap. Legacy option to map one keyboard character to another, was used to emulate layout-independence. Now deprecated since you can set your layout once with keyboardlayoutforce and keyboardlayoutoverrides.

viewsource

viewsource: "tridactyl" | "default" = "tridactyl"

Whether :viewsource will use our own page that you can use Tridactyl binds on, or Firefox's default viewer, which you cannot use Tridactyl on.

visualenterauto

visualenterauto: "true" | "false" = "true"

Whether to enter visual mode when text is selected. Visual mode can always be entered with :mode visual.

visualexitauto

visualexitauto: "true" | "false" = "true"

Whether to return to normal mode when text is deselected.

wordpattern

wordpattern: string = "[^\s]+"

JavaScript RegExp used to recognize words in text.* functions (e.g. text.transpose_words). Should match any character belonging to a word.

yankto

yankto: "clipboard" | "selection" | "both" = "clipboard"

Which clipboard to store items in. Requires the native messenger to be installed.

Object literals

autocmds

autocmds: object

Autocommands that run when certain events happen, and other conditions are met.

Related ex command: autocmd.

DocEnd

DocEnd: {}

Commands that will be run when pages are unloaded.

Each key corresponds to a URL fragment which, if contained within the page URL, will run the corresponding command.

Type declaration

DocStart

DocStart: {}

Commands that will be run as soon as Tridactyl loads into a page.

Each key corresponds to a URL fragment which, if contained within the page URL, will run the corresponding command.

Type declaration

FullscreenChange

FullscreenChange: {}

Commands that will be run when fullscreen state changes.

Type declaration

FullscreenEnter

FullscreenEnter: {}

Commands that will be run when fullscreen state is entered.

Type declaration

FullscreenLeft

FullscreenLeft: {}

Commands that will be run when fullscreen state is left.

Type declaration

TabEnter

TabEnter: {}

Commands that will be run when you enter a tab.

Each key corresponds to a URL fragment which, if contained within the page URL, will run the corresponding command.

Type declaration

TabLeft

TabLeft: {}

Commands that will be run when you leave a tab.

Each key corresponds to a URL fragment which, if contained within the page URL, will run the corresponding command.

Type declaration

DocLoad

DocLoad: object

Commands that will be run when pages are loaded.

Each key corresponds to a URL fragment which, if contained within the page URL, will run the corresponding command.

^https://github.com/tridactyl/tridactyl/issues/new$

^https://github.com/tridactyl/tridactyl/issues/new$: string = "issue"

TriStart

TriStart: object

Commands that will be run when Tridactyl first runs each time you start your browser.

Each key corresponds to a javascript regex that matches the hostname of the computer Firefox is running on. Note that fetching the hostname could be a little slow, if you want to execute something unconditionally, use ".*" as Tridactyl special-cases this pattern to avoid hostname lookups.

.*

.*: string = "source_quiet"

browsermaps

browsermaps: object

Browser-wide binds accessible in all modes and on pages where Tridactyl "cannot run".

<C-,>

<C-,>: string = "escapehatch"

<C-6>

<C-6>: string = "tab #"

completions

completions: object

General completions options - NB: options are set according to our internal completion source name - see - src/completions/[name].ts in the Tridactyl source.

Bmark

Bmark: object

autoselect

autoselect: string = "true"

Goto

Goto: object

autoselect

autoselect: string = "true"

Rss

Rss: object

autoselect

autoselect: string = "true"

Sessions

Sessions: object

autoselect

autoselect: string = "true"

Tab

Tab: object

autoselect

autoselect: string = "true"

Whether to automatically select the closest matching completion

statusstylepretty

statusstylepretty: string = "false"

Whether to use unicode symbols to display tab statuses

TabAll

TabAll: object

autoselect

autoselect: string = "true"

exaliases

exaliases: object

Aliases for the commandline.

You can make a new one with command alias ex-command.

!

!: string = "exclaim"

!js

!js: string = "fillcmdline_tmp 3000 !js is deprecated. Please use js instead"

!jsb

!jsb: string = "fillcmdline_tmp 3000 !jsb is deprecated. Please use jsb instead"

!s

!s: string = "exclaim_quiet"

alias

alias: string = "command"

au

au: string = "autocmd"

aucon

aucon: string = "autocontain"

audel

audel: string = "autocmddelete"

audelete

audelete: string = "autocmddelete"

authors

authors: string = "credits"

b

b: string = "tab"

bN

bN: string = "tabprev"

bd

bd: string = "tabclose"

bdelete

bdelete: string = "tabclose"

bfirst

bfirst: string = "tabfirst"

blacklistremove

blacklistremove: string = "autocmddelete DocStart"

blast

blast: string = "tablast"

bn

bn: string = "tabnext_gt"

bnext

bnext: string = "tabnext_gt"

bp

bp: string = "tabprev"

bprev

bprev: string = "tabprev"

buffer

buffer: string = "tab"

bufferall

bufferall: string = "taball"

clsh

clsh: string = "clearsearchhighlight"

colors

colors: string = "colourscheme"

colorscheme

colorscheme: string = "colourscheme"

colours

colours: string = "colourscheme"

containerremove

containerremove: string = "containerdelete"

current_url

current_url: string = "composite get_current_url | fillcmdline_notrail "

drawingstop

drawingstop: string = "mouse_mode"

exto

exto: string = "extoptions"

extp

extp: string = "extpreferences"

extpreferences

extpreferences: string = "extoptions"

get_current_url

get_current_url: string = "js document.location.href"

h

h: string = "help"

installnative

installnative: string = "nativeinstall"

man

man: string = "help"

mkt

mkt: string = "mktridactylrc"

mkt!

mkt!: string = "mktridactylrc -f"

mktridactylrc!

mktridactylrc!: string = "mktridactylrc -f"

mpvsafe

mpvsafe: string = "js -p tri.excmds.shellescape(JS_ARG).then(url => tri.excmds.exclaim_quiet('mpv --no-terminal ' + url))"

nativeupdate

nativeupdate: string = "updatenative"

noh

noh: string = "clearsearchhighlight"

nohlsearch

nohlsearch: string = "clearsearchhighlight"

o

o: string = "open"

openwith

openwith: string = "hint -W"

prefremove

prefremove: string = "removepref"

prefset

prefset: string = "setpref"

q

q: string = "tabclose"

qa

qa: string = "qall"

quit

quit: string = "tabclose"

reibadailty

reibadailty: string = "jumble"

sanitize

sanitize: string = "sanitise"

saveas!

saveas!: string = "saveas --cleanup --overwrite"

stop

stop: string = "js window.stop()"

t

t: string = "tabopen"

tN

tN: string = "tabprev"

tabclosealltoleft

tabclosealltoleft: string = "tabcloseallto left"

tabclosealltoright

tabclosealltoright: string = "tabcloseallto right"

tabfirst

tabfirst: string = "tab 1"

tabgroupabort

tabgroupabort: string = "tgroupabort"

tabgroupclose

tabgroupclose: string = "tgroupclose"

tabgroupcreate

tabgroupcreate: string = "tgroupcreate"

tabgrouplast

tabgrouplast: string = "tgrouplast"

tabgroupmove

tabgroupmove: string = "tgroupmove"

tabgrouprename

tabgrouprename: string = "tgrouprename"

tabgroupswitch

tabgroupswitch: string = "tgroupswitch"

tablast

tablast: string = "tab 0"

tabm

tabm: string = "tabmove"

tabnew

tabnew: string = "tabopen"

tabo

tabo: string = "tabonly"

tfirst

tfirst: string = "tabfirst"

tlast

tlast: string = "tablast"

tn

tn: string = "tabnext_gt"

tnext

tnext: string = "tabnext_gt"

tp

tp: string = "tabprev"

tprev

tprev: string = "tabprev"

tutorial

tutorial: string = "tutor"

unmute

unmute: string = "mute unmute"

w

w: string = "winopen"

zo

zo: string = "zoom"

exmaps

exmaps: object

exmaps contains all of the bindings for the command line. You can of course bind regular ex commands but also editor functions and commandline-specific functions.

<A-b>

<A-b>: string = "text.backward_word"

<A-d>

<A-d>: string = "text.kill_word"

<A-f>

<A-f>: string = "text.forward_word"

<ArrowDown>

<ArrowDown>: string = "ex.next_history"

<ArrowUp>

<ArrowUp>: string = "ex.prev_history"

<C-Enter>

<C-Enter>: string = "ex.execute_ex_on_completion"

<C-Space>

<C-Space>: string = "ex.insert_space"

<C-[>

<C-[>: string = "ex.hide_and_clear"

<C-e>

<C-e>: string = "text.end_of_line"

<C-f>

<C-f>: string = "ex.complete"

<C-j>

<C-j>: string = "ex.accept_line"

<C-k>

<C-k>: string = "text.kill_line"

<C-m>

<C-m>: string = "ex.accept_line"

<C-o>t

<C-o>t: string = "ex.execute_ex_on_completion_args tabopen -b"

<C-o>w

<C-o>w: string = "ex.execute_ex_on_completion_args winopen"

<C-o>yy

<C-o>yy: string = "ex.execute_ex_on_completion_args clipboard yank"

<C-u>

<C-u>: string = "text.backward_kill_line"

<Enter>

<Enter>: string = "ex.accept_line"

<Escape>

<Escape>: string = "ex.hide_and_clear"

<S-Backspace>

<S-Backspace>: string = "text.backward_kill_word"

<S-Delete>

<S-Delete>: string = "ex.execute_ex_on_completion_args tabclose"

<S-Tab>

<S-Tab>: string = "ex.prev_completion"

<Space>

<Space>: string = "ex.insert_space_or_completion"

<Tab>

<Tab>: string = "ex.next_completion"

followpagepatterns

followpagepatterns: object

Used by ]] and [[ to look for links containing these words.

Edit these if you want to add, e.g. other language support.

next

next: string = "^(next|newer)\b|»|>>|more"

prev

prev: string = "^(prev(ious)?|older)\b|«|<<"

hintmaps

hintmaps: object

<ArrowDown>

<ArrowDown>: string = "hint.focusBottomHint"

<ArrowLeft>

<ArrowLeft>: string = "hint.focusLeftHint"

<ArrowRight>

<ArrowRight>: string = "hint.focusRightHint"

<ArrowUp>

<ArrowUp>: string = "hint.focusTopHint"

<Backspace>

<Backspace>: string = "hint.popKey"

<C-[>

<C-[>: string = "hint.reset"

<Enter>

<Enter>: string = "hint.selectFocusedHint"

<Escape>

<Escape>: string = "hint.reset"

<S-Tab>

<S-Tab>: string = "hint.focusPreviousHint"

<Space>

<Space>: string = "hint.selectFocusedHint"

<Tab>

<Tab>: string = "hint.focusNextHint"

hintstyles

hintstyles: object

Which css styles to add for hint elements.

Use hintstyles.fg for text color, hintstyles.bg for background color, hintstyles.outline for outlines. Values may be set to "all" to enable the style for all hints, "active" to enable the style only for the currently selected hint, or "none" to disable the style completely.

For example, run :set hintstyles.bg none and reload the page to remove background colors from all hints.

bg

bg: "all" = "all"

fg

fg: "all" = "all"

outline

outline: "all" = "all"

ignoremaps

ignoremaps: object

ignoremaps contain all of the bindings for "ignore mode".

They consist of key sequences mapped to ex commands.

<AC-Escape>

<AC-Escape>: string = "mode normal"

<AC-`>

<AC-`>: string = "mode normal"

<C-o>

<C-o>: string = "nmode normal 1 mode ignore"

<S-Escape>

<S-Escape>: string = "mode normal"

<S-Insert>

<S-Insert>: string = "mode normal"

imaps

imaps: object

imaps contain all of the bindings for "insert mode".

On top of regular ex commands, you can also bind editor functions in insert mode.

They consist of key sequences mapped to ex commands.

<AC-Escape>

<AC-Escape>: string = "mode normal"

<AC-`>

<AC-`>: string = "mode normal"

<C-[>

<C-[>: string = "composite unfocus | mode normal"

<C-i>

<C-i>: string = "editor"

<Escape>

<Escape>: string = "composite unfocus | mode normal"

<S-Escape>

<S-Escape>: string = "mode ignore"

inputmaps

inputmaps: object

inputmaps contain all of the bindings for "input mode".

On top of regular ex commands, you can also bind editor functions in input mode.

They consist of key sequences mapped to ex commands.

<S-Tab>

<S-Tab>: string = "focusinput -N"

<Tab>

<Tab>: string = "focusinput -n"

🕷🕷INHERITS🕷🕷

🕷🕷INHERITS🕷🕷: string = "imaps"

Config objects with this key inherit their keys from the object specified.

Only supports "root" objects. Subconfigs (seturl) work as expected.

Here, this means that input mode is the same as insert mode except it has added binds for tab and shift-tab.

logging

logging: object

Logging levels. Unless you're debugging Tridactyl, it's unlikely you'll ever need to change these.

autocmds

autocmds: "warning" = "warning"

cmdline

cmdline: "warning" = "warning"

containers

containers: "warning" = "warning"

controller

controller: "warning" = "warning"

excmd

excmd: "error" = "error"

hinting

hinting: "warning" = "warning"

messaging

messaging: "warning" = "warning"

native

native: "warning" = "warning"

performance

performance: "warning" = "warning"

state

state: "warning" = "warning"

styling

styling: "warning" = "warning"

modeindicatormodes

modeindicatormodes: object

Whether to display the mode indicator in various modes. Ignored if modeindicator set to false.

ex

ex: "true" = "true"

hint

hint: "true" = "true"

ignore

ignore: "true" = "true"

input

input: "true" = "true"

insert

insert: "true" = "true"

normal

normal: "true" = "true"

visual

visual: "true" = "true"

modesubconfigs

modesubconfigs: object

Internal field to handle mode-specific configs. Use :setmode/:unsetmode to change these values.

Changing this might do weird stuff.

ex

ex: {}

Type declaration

hint

hint: {}

Type declaration

ignore

ignore: {}

Type declaration

input

input: {}

Type declaration

insert

insert: {}

Type declaration

normal

normal: {}

Type declaration

visual

visual: {}

Type declaration

nmaps

nmaps: object

nmaps contain all of the bindings for "normal mode".

They consist of key sequences mapped to ex commands.

$

$: string = "scrollto 100 x"

.

.: string = "repeat"

:

:: string = "fillcmdline_notrail"

;#

;#: string = "hint -#"

;;

;;: string = "hint -; *"

;A

;A: string = "hint -A"

;I

;I: string = "hint -I"

;K

;K: string = "hint -K"

;M

;M: string = "hint -JFc img i => tri.excmds.tabopen('https://lens.google.com/uploadbyurl?url='+i.src)"

;O

;O: string = "hint -W fillcmdline_notrail open "

;P

;P: string = "hint -P"

;S

;S: string = "hint -S"

;T

;T: string = "hint -W fillcmdline_notrail tabopen "

;V

;V: string = "hint -V"

;W

;W: string = "hint -W fillcmdline_notrail winopen "

;Y

;Y: string = "hint -cF img i => tri.excmds.yankimage(tri.urlutils.getAbsoluteURL(i.src))"

;a

;a: string = "hint -a"

;b

;b: string = "hint -b"

;d

;d: string = "hint -W tabopen --discard"

;g#

;g#: string = "hint -q#"

;g;

;g;: string = "hint -q;"

;gA

;gA: string = "hint -qA"

;gF

;gF: string = "hint -qb"

;gI

;gI: string = "hint -qI"

;gP

;gP: string = "hint -qP"

;gS

;gS: string = "hint -qS"

;ga

;ga: string = "hint -qa"

;gb

;gb: string = "hint -qb"

;gd

;gd: string = "hint -qW tabopen --discard"

;gf

;gf: string = "hint -q"

;gi

;gi: string = "hint -qi"

;gk

;gk: string = "hint -qk"

;gp

;gp: string = "hint -qp"

;gr

;gr: string = "hint -qr"

;gs

;gs: string = "hint -qs"

;gv

;gv: string = "hint -qW mpvsafe"

;gw

;gw: string = "hint -qw"

;gy

;gy: string = "hint -qy"

;h

;h: string = "hint -h"

;i

;i: string = "hint -i"

;k

;k: string = "hint -k"

;m

;m: string = "hint -JFc img i => tri.excmds.open('https://lens.google.com/uploadbyurl?url='+i.src)"

;o

;o: string = "hint"

;p

;p: string = "hint -p"

;r

;r: string = "hint -r"

;s

;s: string = "hint -s"

;t

;t: string = "hint -W tabopen"

;v

;v: string = "hint -W mpvsafe"

;w

;w: string = "hint -w"

;y

;y: string = "hint -y"

;z

;z: string = "hint -z"

<<

<<: string = "tabmove -1"

<A-m>

<A-m>: string = "mute toggle"

<A-p>

<A-p>: string = "pin"

<AC-Escape>

<AC-Escape>: string = "mode ignore"

<AC-`>

<AC-`>: string = "mode ignore"

<AS-ArrowUp><AS-ArrowUp><AS-ArrowDown><AS-ArrowDown><AS-ArrowLeft><AS-ArrowRight><AS-ArrowLeft><AS-ArrowRight>ba

<AS-ArrowUp><AS-ArrowUp><AS-ArrowDown><AS-ArrowDown><AS-ArrowLeft><AS-ArrowRight><AS-ArrowLeft><AS-ArrowRight>ba: string = "open https://www.youtube.com/watch?v=M3iOROuTuMA"

<C-[>

<C-[>: string = "composite mode normal ; hidecmdline"

<C-a>

<C-a>: string = "urlincrement 1"

<C-b>

<C-b>: string = "scrollpage -1"

<C-d>

<C-d>: string = "scrollpage 0.5"

<C-e>

<C-e>: string = "scrollline 10"

<C-f>

<C-f>: string = "scrollpage 1"

<C-i>

<C-i>: string = "jumpnext"

<C-o>

<C-o>: string = "jumpprev"

<C-u>

<C-u>: string = "scrollpage -0.5"

<C-v>

<C-v>: string = "nmode ignore 1 mode normal"

<C-x>

<C-x>: string = "urlincrement -1"

<C-y>

<C-y>: string = "scrollline -10"

<Escape>

<Escape>: string = "composite mode normal ; hidecmdline"

<F1>

<F1>: string = "help"

<S-Escape>

<S-Escape>: string = "mode ignore"

<S-Insert>

<S-Insert>: string = "mode ignore"

>>

>>: string = "tabmove +1"

A

A: string = "bmark"

B

B: string = "fillcmdline taball"

D

D: string = "js tri.excmds.composite('tabprev;', 'tabclose #')"

F

F: string = "hint -b"

G

G: string = "scrollto 100"

H

H: string = "back"

J

J: string = "tabprev"

K

K: string = "tabnext"

L

L: string = "forward"

M

M: string = "gobble 1 quickmark"

O

O: string = "current_url open"

P

P: string = "clipboard tabopen"

R

R: string = "reloadhard"

S

S: string = "fillcmdline tabopen search"

T

T: string = "current_url tabopen"

U

U: string = "undo window"

W

W: string = "current_url winopen"

ZZ

ZZ: string = "qall"

[[

[[: string = "followpage prev"

[c

[c: string = "urlincrement -1"

]]

]]: string = "followpage next"

]c

]c: string = "urlincrement 1"

^

^: string = "scrollto 0 x"

`

`: string = "gobble 1 markjump"

a

a: string = "current_url bmark"

b

b: string = "fillcmdline tab"

d

d: string = "tabclose"

f

f: string = "hint"

g!

g!: string = "jumble"

g$

g$: string = "tablast"

g0

g0: string = "tabfirst"

g;

g;: string = "changelistjump -1"

g?

g?: string = "rot13"

gF

gF: string = "hint -qb"

gH

gH: string = "home true"

gT

gT: string = "tabprev"

gU

gU: string = "urlroot"

g^

g^: string = "tabfirst"

ga

ga: string = "tabaudio"

gf

gf: string = "viewsource"

gg

gg: string = "scrollto 0"

gh

gh: string = "home"

gi

gi: string = "focusinput -l"

gr

gr: string = "reader --old"

gt

gt: string = "tabnext_gt"

gu

gu: string = "urlparent"

gx$

gx$: string = "tabclosealltoright"

gx0

gx0: string = "tabclosealltoleft"

h

h: string = "scrollpx -50"

j

j: string = "scrollline 10"

k

k: string = "scrollline -10"

l

l: string = "scrollpx 50"

m

m: string = "gobble 1 markadd"

o

o: string = "fillcmdline open"

p

p: string = "clipboard open"

r

r: string = "reload"

s

s: string = "fillcmdline open search"

t

t: string = "fillcmdline tabopen"

u

u: string = "undo"

v

v: string = "hint -h"

w

w: string = "fillcmdline winopen"

x

x: string = "stop"

yc

yc: string = "clipboard yankcanon"

ym

ym: string = "clipboard yankmd"

yo

yo: string = "clipboard yankorg"

yq

yq: string = "text2qr --timeout 5"

ys

ys: string = "clipboard yankshort"

yt

yt: string = "clipboard yanktitle"

yy

yy: string = "clipboard yank"

zI

zI: string = "zoom 3"

zM

zM: string = "zoom 0.5 true"

zO

zO: string = "zoom 0.3"

zR

zR: string = "zoom -0.5 true"

zi

zi: string = "zoom 0.1 true"

zm

zm: string = "zoom 0.5 true"

zo

zo: string = "zoom -0.1 true"

zr

zr: string = "zoom -0.5 true"

zz

zz: string = "zoom 1"

searchurls

searchurls: object

Definitions of search engines for use via open [keyword].

%s will be replaced with your whole query and %s1, %s2, ..., %sn will be replaced with the first, second and nth word of your query. Also supports array slicing, e.g. %s[2:4], %s[5:]. If there are none of these patterns in your search urls, your query will simply be appended to the searchurl.

Aliases are supported - for example, if you have a google searchurl, you can run :set searchurls.g google in which case g will act as if it was the google searchurl.

Examples:

  • When running open gi cute puppies, with a gi searchurl defined with set searchurls.gi https://www.google.com/search?q=%s&tbm=isch, tridactyl will navigate to https://www.google.com/search?q=cute puppies&tbm=isch.
  • When running tabopen translate en ja Tridactyl, with a translate searchurl defined with set searchurls.translate https://translate.google.com/#view=home&op=translate&sl=%s1&tl=%s2&text=%s3, tridactyl will navigate to https://translate.google.com/#view=home&op=translate&sl=en&tl=ja&text=Tridactyl.

setnull can be used to "delete" the default search engines. E.g. setnull searchurls.google.

NB: lots of searchurls were removed in May 2024. You can restore them with:

    set searchurls.googleuk https//www.google.co.uk/search?q=
    set searchurls.yahoo https//search.yahoo.com/search?p=
    set searchurls.twitter https//twitter.com/search?q=
    set searchurls.wikipedia https//en.wikipedia.org/wiki/SpecialSearch/
    set searchurls.amazon https//www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=
    set searchurls.amazonuk https//www.amazon.co.uk/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=
    set searchurls.startpage https//startpage.com/do/search?language=english&cat=web&query=
    set searchurls.github https//github.com/search?utf8=✓&q=
    set searchurls.searx https//searx.me/?category_general=on&q=
    set searchurls.cnrtl http//www.cnrtl.fr/lexicographie/
    set searchurls.osm https//www.openstreetmap.org/search?query=
    set searchurls.mdn https//developer.mozilla.org/en-US/search?q=
    set searchurls.gentoo_wiki https//wiki.gentoo.org/index.php?title=Special%3ASearch&profile=default&fulltext=Search&search=
    set searchurls.qwant https//www.qwant.com/?q=

bing

bing: string = "https://www.bing.com/search?q="

duckduckgo

duckduckgo: string = "https://duckduckgo.com/?q="

google

google: string = "https://www.google.com/search?q="

scholar

scholar: string = "https://scholar.google.com/scholar?q="

youtube

youtube: string = "https://www.youtube.com/results?search_query="

subconfigs

subconfigs: object

Internal field to handle site-specific configs. Use :seturl/:unseturl to change these values.

^https://teams.live.com

^https://teams.live.com: object

modeindicator

modeindicator: "false" = "false"

^https://teams.microsoft.com

^https://teams.microsoft.com: object

modeindicator

modeindicator: "false" = "false"

^https://web.whatsapp.com

^https://web.whatsapp.com: object

nmaps

nmaps: object

F

F: string = "hint -bc [tabindex]:not(.two)>div,a"

f

f: string = "hint -c [tabindex]:not(.two)>div,a"

www.google.com

www.google.com: object

followpagepatterns

followpagepatterns: object

next

next: string = "Next"

prev

prev: string = "Previous"

nmaps

nmaps: object

gi

gi: string = "composite focusinput -l ; text.end_of_line"

update

update: object

Used by :updatecheck and related built-in functionality to automatically check for updates and prompt users to upgrade.

checkintervalsecs

checkintervalsecs: number = 60 * 60 * 24

Minimum interval between automatic update checks, in seconds.

lastchecktime

lastchecktime: number = 0

Time we last checked for an update, milliseconds since unix epoch.

lastnaggedversion

lastnaggedversion: string = "1.14.0"

The version we last nagged you about. We only nag you once per version.

nag

nag: boolean = true

Whether Tridactyl should check for available updates at startup.

nagwait

nagwait: number = 7

How many days to wait after an update is first available until telling people.

vmaps

vmaps: object

$

$: string = "js document.getSelection().modify("extend","forward","lineboundary")"

0

0: string = "js document.getSelection().modify("extend","backward","lineboundary")"

<C-[>

<C-[>: string = "composite js document.getSelection().empty(); mode normal ; hidecmdline"

<Escape>

<Escape>: string = "composite js document.getSelection().empty(); mode normal; hidecmdline"

=

=: string = "js let n = document.getSelection().anchorNode.parentNode; let s = window.getSelection(); let r = document.createRange(); s.removeAllRanges(); r.selectNodeContents(n); s.addRange(r)"

S

S: string = "composite js document.getSelection().toString() | fillcmdline tabopen search"

b

b: string = "js document.getSelection().modify("extend","backward","character"); document.getSelection().modify("extend","backward","word"); document.getSelection().modify("extend","forward","character")"

e

e: string = "js document.getSelection().modify("extend","forward","word")"

h

h: string = "js document.getSelection().modify("extend","backward","character")"

j

j: string = "js document.getSelection().modify("extend","forward","line")"

k

k: string = "js document.getSelection().modify("extend","backward","line")"

l

l: string = "js document.getSelection().modify("extend","forward","character")"

o

o: string = "js tri.visual.reverseSelection(document.getSelection())"

q

q: string = "composite js document.getSelection().toString() | text2qr --timeout 5"

s

s: string = "composite js document.getSelection().toString() | fillcmdline open search"

w

w: string = "js document.getSelection().modify("extend","forward","word"); document.getSelection().modify("extend","forward","word"); document.getSelection().modify("extend","backward","word"); document.getSelection().modify("extend","forward","character")"

y

y: string = "composite js document.getSelection().toString() | clipboard yank"

🕷🕷INHERITS🕷🕷

🕷🕷INHERITS🕷🕷: string = "nmaps"