Set autocmds to run when certain events happen.
Curently, 'TriStart', 'DocStart', 'DocLoad', 'DocEnd', 'TabEnter', 'TabLeft', 'FullscreenChange', 'FullscreenEnter', and 'FullscreenLeft' are supported
For DocStart, DocEnd, TabEnter, and TabLeft: a fragment of the URL on which the events will trigger, or a JavaScript regex (e.g, /www\.amazon\.co.*\/
)
We just use URL.search.
For TriStart: A regular expression that matches the hostname of the computer the autocmd should be run on. This requires the native messenger to be installed, except for the ".*" regular expression which will always be triggered, even without the native messenger.
The excmd to run (use composite to run multiple commands)
Remove autocmds
Curently, 'TriStart', 'DocStart', 'DocLoad', 'DocEnd', 'TabEnter', 'TabLeft', 'FullscreenChange', 'FullscreenEnter', and 'FullscreenLeft' are supported
For DocStart, DocEnd, TabEnter, and TabLeft: a fragment of the URL on which the events will trigger, or a JavaScript regex (e.g, /www\.amazon\.co.*\/
)
Automatically open a domain and all its subdomains in a specified container.
For declaring containers that do not yet exist, consider using auconscreatecontainer true
in your tridactylrc.
This allows tridactyl to automatically create containers from your autocontain directives. Note that they will be random icons and colors.
** NB: This is an experimental feature, if you encounter issues please create an issue on github. **
The domain is passed through as a regular expression so there are a few gotchas to be aware of:
autocontain google.co.uk work
will match google!co$uk
. Escape your periods or accept that you might get some false positives.autocontain google\,(co\.uk|com) work
will match either google.co.uk
or google.com
.This should now peacefully coexist with the Temporary Containers and Multi-Account Containers addons. Do not trust this claim. If a fight starts the participants will try to open infinite tabs. It is strongly recommended that you use a tridactylrc so that you can abort a sorceror's-apprentice scenario by killing firefox, commenting out all of autocontainer directives in your rc file, and restarting firefox to clean up the mess. There are a number of strange behaviors resulting from limited coordination between extensions. Redirects can be particularly surprising; for example, with :autocontain will-redirect.example.org example
set and will-redirect.example.org
redirecting to redirected.example.org
, navigating to will-redirect.example.org
will result in the new tab being in the example
container under some conditions and in the firefox-default
container under others.
@param domain The domain which will trigger the autoContain directive. Includes all subdomains. @param container The container to open the url in.
Navigate back one page in history.
Bind a sequence of keys to an excmd or view bound sequence.
This is an easier-to-implement bodge while we work on vim-style maps.
Examples:
bind G fillcmdline tabopen google
bind D composite tabclose | tab #
-> close current tab and switch to most recent previous tabbind j scrollline 20
bind F hint -b
You can view binds by omitting the command line:
bind j
bind k
You can bind to modifiers and special keys by enclosing them with angle brackets, for example bind <C-\>z fullscreen
, unbind <F1>
(a favourite of people who use TreeStyleTabs :) ), or bind <Backspace> forward
.
Modifiers are truncated to a single character, so Ctrl -> C, Alt -> A, and Shift -> S. Shift is a bit special as it is only required if Shift does not change the key inputted, e.g. <S-ArrowDown>
is OK, but <S-a>
should just be A
.
You can view all special key names here: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values
Use composite if you want to execute multiple excmds. Use fillcmdline to put a string in the cmdline and focus the cmdline (otherwise the string is executed immediately).
You can bind to other modes with bind --mode={insert|ignore|normal|input|ex|hint} ...
, e.g, bind --mode=insert emacs qall
(NB: unlike vim, all preceeding characters will not be input), or bind --mode=hint <C-[> hint.reset
.
A list of editor functions can be found here.
See also:
Mandatory. The pattern on which the binding should take effect.
Optional. The mode the binding should be in (e.g. normal, insert, ignore, input). Defaults to normal.
Mandatory. The keys that should be bound.
Optional. Without it, will display what keys
are bound to in mode
.
Helper function to put Tridactyl into ignore mode on the provided URL.
Simply creates a DocStart autocmd that runs mode ignore
.
Due to a Tridactyl bug, the only way to remove these rules once they are set is to delete all of your autocmds with unset autocmds
.
If you're looking for a way to temporarily disable Tridactyl, this might be what you're looking for.
<!-- this should probably be moved to an ex alias once configuration has better help --!>
Add or remove a bookmark.
Optionally, you may give the bookmark a title. If no URL is given, a bookmark is added for the current page.
If a bookmark already exists for the URL, it is removed, even if a title is given.
Does not support creation of folders: you'll need to use the Firefox menus for that.
Title for the bookmark (can include spaces but not forward slashes, as these are interpreted as folders). If you want to put the bookmark in a folder, you can:
/Bookmarks Menu/Mozilla Firefox/My New Bookmark Title
Firefox/My New Bookmark Title
Firefox/
Works exactly like open, but only suggests bookmarks.
Optional. Has to be -t
in order to make bmarks open your bookmarks in a new tab.
Focus the tab which contains the last focussed input element. If you're lucky, it will focus the right input, too.
Currently just goes to the last focussed input; being able to jump forwards and backwards is planned.
Use the system clipboard.
If excmd === "open"
, call open with the contents of the clipboard. Similarly for tabopen.
If excmd === "yank"
, copy the current URL, or if given, the value of toYank, into the system clipboard.
If excmd === "yankcanon"
, copy the canonical URL of the current page if it exists, otherwise copy the current URL.
If excmd === "yankshort"
, copy the shortlink version of the current URL, and fall back to the canonical then actual URL. Known to work on https://yankshort.neocities.org/.
If excmd === "yanktitle"
, copy the title of the open page.
If excmd === "yankmd"
, copy the title and url of the open page formatted in Markdown for easy use on sites such as reddit.
If you're on Linux and the native messenger is installed, Tridactyl will call an external binary (either xclip or xsel) to read or write to your X selection buffer. If you want another program to be used, set "externalclipboardcmd" to its name and make sure it has the same interface as xsel/xclip ("-i"/"-o" and reading from stdin).
When doing a read operation (i.e. open or tabopen), if "putfrom" is set to "selection", the X selection buffer will be read instead of the clipboard. Set "putfrom" to "clipboard" to use the clipboard.
When doing a write operation, if "yankto" is set to "selection", only the X selection buffer will be written to. If "yankto" is set to "both", both the X selection and the clipboard will be written to. If "yankto" is set to "clipboard", only the clipboard will be written to.
Changes the current theme.
If THEMENAME is any of the themes that can be found in the Tridactyl repo (e.g. 'dark'), the theme will be loaded from Tridactyl's internal storage.
If THEMENAME is set to any other value, Tridactyl will attempt to use its native binary (see native) in order to load a CSS file named THEMENAME from disk. The CSS file has to be in a directory named "themes" and this directory has to be in the same directory as your tridactylrc.
Note that the theme name should NOT contain any dot.
Example: :colourscheme mysupertheme
On linux, this will load ~/.config/tridactyl/themes/mysupertheme.css
Similar to vim's comclear
command. Clears an excmd alias defined by
command
.
For example: comclear helloworld
will reverse any changes caused
by command helloworld xxx
See also:
Similar to vim's :command
. Maps one ex-mode command to another.
If command already exists, this will override it, and any new commands
added in a future release will be SILENTLY overridden. Aliases are
expanded recursively.
Examples:
command t tabopen
command tn tabnext_gt
= command hello t
This will expand recursively into 'hello'->'tabopen'Note that this is only for excmd->excmd mappings. To map a normal-mode command to an excommand, see bind.
See also:
Split cmds
on pipes (|) and treat each as its own command. Return values are passed as the last argument of the next ex command, e.g,
composite echo yes | fillcmdline
becomes fillcmdline yes
. A more complicated example is the ex alias, command current_url composite get_current_url | fillcmdline_notrail
, which is used in, e.g. bind T current_url tabopen
.
Workaround: this should clearly be in the parser, but we haven't come up with a good way to deal with |s in URLs, search terms, etc. yet.
cmds
are also split with semicolons (;) and don't pass things along to each other.
If you wish to have a command that has semi-colons in it (e.g. some JavaScript or hint -;
), first bind a command to it. For example, command hint_focus -;
, and then composite hint_focus; !s xdotool key Menu
.
The behaviour of combining ; and | in the same composite command is left as an exercise for the reader.
Closes all tabs open in the same container across all windows.
The container name.
Creates a new container. Note that container names must be unique and that the checks are case-insensitive.
Further reading https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/contextualIdentities/ContextualIdentity
Example usage:
:containercreate tridactyl green dollar
The container name. Must be unique.
The container color. Valid colors are: "blue", "turquoise", "green", "yellow", "orange", "red", "pink", "purple". If no color is chosen a random one will be selected from the list of valid colors.
The container icon. Valid icons are: "fingerprint", "briefcase", "dollar", "cart", "circle", "gift", "vacation", "food", "fruit", "pet", "tree", "chill". If no icon is chosen, it defaults to "fingerprint".
Delete a container. Closes all tabs associated with that container beforehand. Note: container names are case-insensitive.
The container name.
Update a container's information. Note that none of the parameters are optional and that container names are case-insensitive.
Example usage:
Changing the container name: :containerupdate banking blockchain green dollar
Changing the container icon: :containerupdate banking banking green briefcase
Changing the container color: :containerupdate banking banking purple dollar
The container name.
The new container name. Must be unique.
The new container color. Valid colors are: "blue", "turquoise", "green", "yellow", "orange", "red", "pink", "purple". If no color is chosen a random one will be selected from the list of valid colors.
The new container icon. Valid icons are: "fingerprint", "briefcase", "dollar", "cart", "circle", "gift", "vacation", "food", "fruit", "pet", "tree", "chill".
Display Tridactyl's contributors in order of commits in a user-friendly fashion
Opens your favourite editor (which is currently gVim) and fills the last used input with whatever you write into that file. Requires that the native messenger is installed, see native and installnative.
Uses the editorcmd
config option, default = auto
looks through a list defined in lib/native.ts try find a sensible combination. If it's a bit slow, or chooses the wrong editor, or gives up completely, set editorcmd to something you want. The command must stay in the foreground until the editor exits.
The editorcmd needs to accept a filename, stay in the foreground while it's edited, save the file and exit. By default the filename is added to the end of editorcmd, if you require control over the position of that argument, the first occurrence of %f in editorcmd is replaced with the filename. %l, if it exists, is replaced with the line number of the cursor and %c with the column number. For example:
set editorcmd terminator -u -e "vim %f -c 'normal %lG%cl'"
You're probably better off using the default insert mode bind of <C-i>
(Ctrl-i) to access this.
This function returns a tuple containing the path to the file that was opened by the editor and its content. This enables creating commands such as the following one, which deletes the temporary file created by the editor:
alias editor_rm composite editor | jsb -p tri.native.run(`rm -f '${JS_ARG[0]}'`)
bind --mode=insert <C-i> editor_rm
bind --mode=input <C-i> editor_rm
Run command in /bin/sh (unless you're on Windows), and print the output in the command line. Non-zero exit codes and stderr are ignored, currently.
Requires the native messenger, obviously.
If you want to use a different shell, just prepend your command with whatever the invocation is and keep in mind that most shells require quotes around the command to be executed, e.g. :exclaim xonsh -c "1+2"
.
Aliased to !
but the exclamation mark must be followed with a space.
Like exclaim, but without any output to the command line.
Set the current value of the commandline to string with a trailing space
Show and fill the command line without focusing it
Set the current value of the commandline to string without a trailing space
Shows str in the command line for ms milliseconds. Recommended duration: 3000ms.
Fills the element matched by selector
with content and falls back to the last used input if the element can't be found. You probably don't want this; it's used internally for editor.
That said, bind gs fillinput null [Tridactyl](https://addons.mozilla.org/en-US/firefox/addon/tridactyl-vim/) is my favourite add-on
could probably come in handy.
Rudimentary find mode, left unbound by default as we don't currently support incsearch
. Suggested binds:
bind / fillcmdline find
bind ? fillcmdline find -?
bind n findnext 1
bind N findnext -1
bind ,<Space> nohlsearch
Argument: A string you want to search for.
This function accepts two flags: -?
to search from the bottom rather than the top and -: n
to jump directly to the nth match.
The behavior of this function is affected by the following setting:
findcase
: either "smart", "sensitive" or "insensitive". If "smart", find will be case-sensitive if the pattern contains uppercase letters.
Known bugs: find will currently happily jump to a non-visible element, and pressing n or N without having searched for anything will cause an error.
Jump to the next searched pattern.
Simply sets
"privacy.resistFingerprinting.block_mozAddonManager":true
"extensions.webextensions.restrictedDomains":""
in about:config via user.js so that Tridactyl (and other extensions!) can be used on addons.mozilla.org and other sites.
Requires native
and a restart
.
Like fixamo but quieter.
Focus the last used input on the page
focus the nth input on the page, or "special" inputs: "-l": last focussed input "-n": input after last focussed one "-N": input before last focussed one "-p": first password field "-b": biggest input field
Find a likely next/previous link and follow it
If a link or anchor element with rel=rel exists, use that, otherwise fall back to:
1) find the last anchor on the page with innerText matching the appropriate followpagepattern
.
2) call urlincrement with 1 or -1
If you want to support e.g. French:
set followpagepatterns.next ^(next|newer|prochain)\b|»|>>
set followpagepatterns.prev ^(prev(ious)?|older|précédent)\b|«|<<
the relation of the target page to the current page: "next" or "prev"
Navigate forward one page in history.
Toggle fullscreen state
Puts the contents of config value with keys keys
into the commandline and the background page console
It's a bit rubbish, but we don't have a good way to provide feedback to the commandline yet.
You can view the log entry in the browser console (Ctrl-Shift-j).
For example, you might try get nmaps
to see all of your current binds.
Fetches the content of the clipboard/selection buffer depending on user's preferences
Exposed for use with composite, e.g. composite getclip | fillcmdline
Initialize gobble mode.
It will read nChars
input keys, append them to endCmd
and execute that
string.
Change which parts of the Firefox user interface are shown. NB: This feature is experimental and might break stuff.
Might mangle your userChrome. Requires native messenger, and you must restart Firefox each time to see any changes (this can be done using restart).
Also flips the preference toolkit.legacyUserProfileCustomizations.stylesheets
to true so that FF will read your userChrome.
View available rules and options here and here.
Example usage: guiset gui none
, guiset gui full
, guiset tabs autohide
.
Some of the available options:
gui
tabs
navbar
hoverlink (the little link that appears when you hover over a link)
statuspanel (hoverlink + the indicator that appears when a website is loading)
If you want to use guiset in your tridactylrc, you might want to use guiset_quiet instead.
Like guiset but quieter.
Show this page.
:help something
jumps to the entry for something. Something can be an excmd, an alias for an excmd, a binding or a setting.
On the ex command page, the "nmaps" list is a list of all the bindings for the command you're seeing and the "exaliases" list lists all its aliases.
If there's a conflict (e.g. you have a "go" binding that does something, a "go" excmd that does something else and a "go" setting that does a third thing), the binding is chosen first, then the setting, then the excmd. In such situations, if you want to let Tridactyl know you're looking for something specfic, you can specify the following flags as first arguments:
-a
: look for an alias
-b
: look for a binding
-e
: look for an ex command
-s
: look for a setting
If the keyword you gave to :help
is actually an alias for a composite command (see composite) , you will be taken to the help section for the first command of the pipeline. You will be able to see the whole pipeline by hovering your mouse over the alias in the "exaliases" list. Unfortunately there currently is no way to display these HTML tooltips from the keyboard.
e.g. :help bind
Hint a page.
bind ;c hint -c [class*="expand"],[class="togg"]
works particularly well on reddit and HNbind <c-e> hint -f Edit
-pipe selector key
e.g, -pipe a href
returns the key. Only makes sense with composite
, e.g, composite hint -pipe * textContent | yank
. If you don't select a hint (i.e. press -W excmd...
append hint href to excmd and execute, e.g, hint -W mpvsafe
to open YouTube videos. NB: appending to bare exclaim is dangerous - see get exaliases.mpvsafe
for an example of how to to it safely.:hint -qb
to open multiple hints in the background or :hint -qW excmd
to execute excmd once for each hint. This will return an array containing all elements or the result of executed functions (e.g. hint -qpipe a href
will return an array of links).-c
option when you want to generate only hints for the specified css selectors. Also useful on sites with plenty of useless javascript elements such as google.combind ;jg hint -Jc .rc > .r > a
on google.com to generate hints only for clickable search results of a given query-qb
insteadExcepting the custom selector mode and background hint mode, each of these hint modes is available by default as ;<option character>
, so e.g. ;y
to yank a link's target; ;g<option character>
starts rapid hint mode for all modes where it makes sense, and some others.
To open a hint in the background, the default bind is F
.
Ex-commands available exclusively in hint mode are listed here
Related settings:
With "short" names, Tridactyl will generate short hints that are never prefixes of each other. With "uniform", Tridactyl will generate hints of uniform length. In either case, the hints are generated from the set in "hintchars".
With "numeric" names, hints are always assigned using sequential integers, and "hintchars" is ignored. This has the disadvantage that some hints are prefixes of others (and you need to hit space or enter to select such a hint). But it has the advantage that the hints tend to be more predictable (e.g., a news site will have the same hints for its boilerplate each time you visit it, even if the number of links in the main body changes).
Go to the homepages you have set with set homepages ["url1", "url2"]
.
@param all
Opens a new tab the url of which is "https://github.com/tridactyl/tridactyl/issues/new" and automatically fill add tridactyl, firefox and os version to the issue.
Lets you execute JavaScript in the page context. If you want to get the result back, use composite js ... | fillcmdline
Some of Tridactyl's functions are accessible here via the tri
object. Just do console.log(tri)
in the web console on the new tab page to see what's available.
If you want to pipe an argument to js
, you need to use the "-p" flag and then use the JS_ARG global variable, e.g:
composite get_current_url | js -p alert(JS_ARG)
Lets you execute JavaScript in the background context. All the help from js applies. Gives you a different tri
object.
Calls jumpprev(-n)
Similar to Pentadactyl or vim's jump list.
When you scroll on a page, either by using the mouse or Tridactyl's key bindings, your position in the page will be saved after jumpdelay milliseconds (:get jumpdelay
to know how many milliseconds that is). If you scroll again, you'll be able to go back to your previous position by using :jumpprev 1
. If you need to go forward in the jumplist, use :jumpprev -1
.
Known bug: Tridactyl will use the same jumplist for multiple visits to a same website in the same tab, see github issue 834.
Feed some keys to Tridactyl's parser. E.g. keyfeed jkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjkjjkj
.
NB:
bind j keyfeed j
will cause an infinite loop.keyfeed t<CR>
won't work.Makes one key equivalent to another for the purposes of most of our parsers. Useful for international keyboard layouts.
e.g, keymap Ä™ e
See :help keytranslatemodes
to enable keymaps in modes other than normal mode.
Writes current config to a file.
With no arguments supplied the excmd will try to find an appropriate
config path and write the rc file to there. Any argument given to the
excmd excluding the -f
flag will be treated as a path to write the rc
file to relative to the native messenger's location (~/.local/share/tridactyl/
). By default, it silently refuses to overwrite existing files.
The RC file will be split into sections that will be created if a config property is discovered within one of them:
Note:
js tri.config.set(key: obj)
notation.Available flags:
-f
will overwrite the config file if it exists.an optional string of arguments to be parsed.
the parsed config.
Switch mode.
For now you probably shouldn't manually switch to other modes than normal
and ignore
. Make sure you're aware of the key bindings (ignoremaps) that will allow you to go come back to normal mode from ignore mode before you run :mode ignore
otherwise you're going to have a hard time re-enabling Tridactyl.
Example:
- mode ignore
to ignore almost all keys.
If you're looking for a way to temporarily disable Tridactyl, mode ignore
might be what you're looking for.
Note that when in ignore mode, Tridactyl will not switch to insert mode when focusing text areas/inputs. This is by design.
New feature: you can add modes as simply as adding binds with bind --mode=[newmodename]
and then enter the mode with mode [newmodename]
.
Mute current tab or all tabs.
Passing "all" to the excmd will operate on the mute state of all tabs.
Passing "unmute" to the excmd will unmute.
Passing "toggle" to the excmd will toggle the state of browser.tabs.tab.MutedInfo
Tells you if the native messenger is installed and its version.
Simply copies "curl -fsSl https://raw.githubusercontent.com/tridactyl/tridactyl/master/native/install.sh | bash" to the clipboard and tells the user to run it.
Uses the native messenger to open URLs.
Be seriously careful with this:
firefox --new-tab <your shell escaped string here>
You've been warned.
This uses the browser setting to know which binary to call. If you need to pass additional arguments to firefox (e.g. '--new-window'), make sure they appear before the url.
Matrix variant of no_mouse_mode
"There is no mouse".
Coincidentally added to Tridactyl at the same time as we reached 1337 stars on GitHub.
Cover the current page in an overlay to prevent clicking on links with the mouse to force yourself to use hint mode. Get rid of it by reloading the page.
Suggested usage: autocmd DocLoad .* no_mouse_mode
"There is no mouse".
Open a new page in the current tab.
Related settings: searchengine, historyresults
Can only open about:* or file:* URLs if you have the native messenger installed, and on OSX you must set browser
to something that will open Firefox from a terminal pass it commmand line options.
Like open but doesn't make a new entry in history.
Dump the raw json for our performance counters. Filters with trailing slashes are class names, :start | :end | :measure specify what type of sample to pass through, and all others are function names. All filters must match for a sample to be dumped.
Tridactyl does not collect performance information by default. To
get this data you'll have to set the configuration option
perfcounters
to "true"
. You may also want to examine the value
of perfsamples
.
Pretty-print a histogram of execution durations for you. Arguments are as above, with the addition that this automatically filters to counter samples of type :measure.
Note that this will display its output by opening a data: url with text in the place of your current tab.
Pin the current tab
Close all windows
Bind a quickmark for the current URL or space-separated list of URLs to a key on the keyboard.
Afterwards use go[key], gn[key], or gw[key] to open, tabopen, or winopen the URL respectively.
Example:
quickmark m https://mail.google.com/mail/u/0/#inbox
Opens the current page in Firefox's reader mode. You currently cannot use Tridactyl while in reader mode.
Reload the next n tabs, starting with activeTab, possibly bypassingCache
Reloads all tabs, bypassing the cache if hard is set to true
Reloads all tabs except the current one, bypassing the cache if hard is set to true
Reload the next n tabs, starting with activeTab. bypass cache for all
Repeats a cmd
n
times.
If cmd
doesn't exist, re-executes the last exstr that was executed in the tab.
Executes the command once if n
isn't defined either.
This re-executes the last exstr, not the last excmd. Some excmds operate internally by constructing and evaluating exstrs, others by directly invoking excmds without going through the exstr parser. For example, aucmds and keybindings evaluate exstrs and are repeatable, while commands like :bmarks
directly invoke :tabopen
and you'll repeat the :bmarks
rather than the internal :tabopen
.
It's difficult to execute this in the background script (:jsb
, :run_excmd
, :autocmd TriStart
, :source
), but if you you do, it will re-execute the last exstr that was executed in the background script. What this may have been is unpredictable and not precisely encouraged.
Restores a sequence of keys to their default value.
Optional. The mode the key should be reset in. Defaults to normal.
Restarts firefox with the same commandline arguments.
Warning: This can kill your tabs, especially if you :restart several times in a row
Perform rot13.
Transforms all text nodes in the current tab via rot13. Only characters in the ASCII range are considered.
number of characters to shift.
Execute rsscmd for an rss link.
If url
is undefined, Tridactyl will look for rss links in the current
page. If it doesn't find any, it will display an error message. If it finds
multiple urls, it will offer completions in order for you to select the link
you're interested in. If a single rss feed is found, it will automatically
be selected.
Hacky ex string parser.
Use it for fire-and-forget running of background commands in content.
Deletes various privacy-related items.
The list of possible arguments can be found here: https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/browsingData/DataTypeSet
Additional, tridactyl-specific arguments are:
Timespan parameter: -t [0-9]+(m|h|d|w)
Examples:
sanitise all
-> Deletes everythingsanitise history
-> Deletes all historysanitise commandline tridactyllocal tridactylsync
-> Deletes every bit of data Tridactyl holdssanitise cookies -t 3d
-> Deletes cookies that were set during the last three days.Download the current document.
If you have the native messenger v>=0.1.9 installed, the function accepts one optional argument, filename, which can be:
NB: if a non-default save location is chosen, Firefox's download manager will say the file is missing. It is not - it is where you asked it to be saved.
The name the file should be saved as.
Scrolls the document of its first scrollable child element by n lines.
The height of a line is defined by the site's CSS. If Tridactyl can't get it, it'll default to 22 pixels.
Scrolls the document by n pages.
The height of a page is the current height of the window.
Scrolls the window or any scrollable child element by a pixels on the horizontal axis and b pixels on the vertical axis.
If two numbers are given, treat as x and y values to give to window.scrollTo If one number is given, scroll to that percentage along a chosen axis, defaulting to the y-axis. If the number has 'c' appended to it, it will be interpreted in radians.
Note that if a
is 0 or 100 and if the document is not scrollable in the given direction, Tridactyl will attempt to scroll the first scrollable element until it reaches the very bottom of that element.
Examples:
scrollto 50
-> scroll halfway down the page.scrollto 3.14c
-> scroll approximately 49.97465213% of the way down the page.Set a key value pair in config.
Use to set any string values found here.
e.g. set searchurls.google https://www.google.com/search?q= set logging.messaging info
If no value is given, the value of the of the key will be displayed
Write a setting to your user.js file.
The key that should be set. Must not be quoted. Must not contain spaces.
The value the key should take. Quoted if a string, unquoted otherwise.
Note that not all of the keys Firefox uses are suggested by Tridactyl.
e.g.: setpref general.warnOnAboutConfig false
setpref extensions.webextensions.restricterDomains ""
Usage: seturl [pattern] key values
The URL pattern the setting should be set for, e.g. en.wikipedia.org
or /index.html
. Defaults to the current url if values
is a single word.
The name of the setting you want to set, e.g. followpagepatterns.next
The value you wish for, e.g. next
Example:
seturl .*\.fr followpagepatterns.next suivant
seturl website.fr followpagepatterns.next next
When multiple patterns can apply to a same URL, the pattern that has the highest priority is used. You can set the priority of a pattern by using :seturl pattern priority 10
. By default every pattern has a priority of 10.
Note that the patterns a regex-like, not glob-like. This means that if you want to match everything, you need to use .*
instead of *
.
Escape command for safe use in shell with composite. E.g: composite js MALICIOUS_WEBSITE_FUNCTION() | shellescape | exclaim ls
Sleep time_ms milliseconds. This is probably only useful for composite commands that need to wait until the previous asynchronous command has finished running.
Christmas variant of no_mouse_mode (if you live in $DEFAULT hemisphere).
Runs an RC file from disk.
If no argument given, it will try to open ~/.tridactylrc, ~/.config/tridactyl/tridactylrc or $XDG_CONFIG_HOME/tridactyl/tridactylrc in reverse order. You may use a _
in place of a leading .
if you wish, e.g, if you use Windows.
On Windows, the ~
expands to %USERPROFILE%
.
The RC file is just a bunch of Tridactyl excmds (i.e, the stuff on this help page). Settings persist in local storage; add sanitise tridactyllocal tridactylsync
to make it more Vim like. There's an example file if you want it.
the file to open. Must be an absolute path, but can contain environment variables and things like ~.
Same as source but suppresses all errors
Change active tab.
Starts at 1. 0 refers to last tab of the current window, -1 to penultimate tab, etc.
"#" means the tab that was last accessed in this window
This is different from taball because index
is the position of the tab in the current window.
Change active tab.
A string following the following format: "[0-9]+.[0-9]+", the first number being the index of the window that should be selected and the second one being the index of the tab within that window.
Close a tab.
Known bug: autocompletion will make it impossible to close more than one tab at once if the list of numbers looks enough like an open tab's title or URL.
The 1-based indexes of the tabs to target. indexes < 1 wrap. If omitted, this tab.
Close all tabs to the left of the current one
Close all tabs to the right of the current one
Detach a tab, opening it in a new window.
The 1-based index of the tab to target. index < 1 wraps. If omitted, this tab.
Duplicate a tab.
The 1-based index of the tab to target. index < 1 wraps. If omitted, this tab.
Move the current tab to be just in front of the index specified.
Known bug: This supports relative movement with tabmove +pos
and tabmove -pos
, but autocomplete doesn't know that yet and will override positive and negative indexes.
Put a space in front of tabmove if you want to disable completion and have the relative indexes at the command line.
Binds are unaffected.
New index for the current tab.
1,start,^ are aliases for the first index. 0,end,$ are aliases for the last index.
Switch to the next tab, wrapping round.
If increment is specified, move that many tabs forwards.
Switch to the next tab, wrapping round.
If an index is specified, go to the tab with that number (this mimics the
behaviour of {count}gt
in vim, except that this command will accept a
count that is out of bounds (and will mod it so that it is within bounds as
per tabmove, etc)).
Close all other tabs in this window
Like open, but in a new tab. If no address is given, it will open the newtab page, which can be set with set newtab [url]
Use the -c
flag followed by a container name to open a tab in said container. Tridactyl will try to fuzzy match a name if an exact match is not found. If any autocontainer directives are configured and -c is not set, Tridactyl will try to use the right container automatically using your configurations.
Use the -b
flag to open the tab in the background.
These two can be combined in any order, but need to be placed as the first arguments.
Unlike Firefox's Ctrl-t shortcut, this opens tabs immediately after the currently active tab rather than at the end of the tab list because that is the authors' preference.
If you would rather the Firefox behaviour set tabopenpos last
. This
preference also affects the clipboard, quickmarks, home, help, etc.
If you would rather the URL be opened as if you'd middle clicked it, set
tabopenpos related
.
Hinting is controlled by relatedopenpos
Also see the searchengine and searchurls settings.
Switch to the previous tab, wrapping round.
If increment is specified, move that many tabs backwards.
Read text content of elements matching the given selector
the selector to match elements
Cancel current reading and clear pending queue
Arguments:
Read the given text using the browser's text to speech functionality and the settings currently set
the command mode -t read the following args as text -c read the content of elements matching the selector
Show a list of the voices available to the TTS system. These can be
set in the config using ttsvoice
Start the tutorial
whether to start the tutorial in a newtab. Defaults to current tab.
the url on which the key should be unbound
Optional. The mode in which the key should be unbound. Defaults to normal.
Restore the most recently closed item. The default behaviour is to restore the most recently closed tab in the current window unless the most recently closed item is a window.
Supplying either "tab" or "window" as an argument will specifically only restore an item of the specified type.
The type of item to restore. Valid inputs are "recent", "tab" and "window".
The tab or window id of the restored item. Returns -1 if no items are found.
Blur (unfocus) the active element
Reset a config setting to default
Reset a site-specific setting.
usage: unseturl [pattern] key
The pattern the setting should be unset on, e.g. .*wiki.*
. Defaults to the current url.
The key that should be unset.
Example: unseturl youtube.com gimode
Note that this removes a setting from the site-specific config, it doesn't "invert" it. This means that if you have a setting set to false
in your global config and the same setting set to false
in a site-specific setting, using unseturl
will result in the setting still being set to false
.
Also note that pattern
should match exactly the one that was used when using seturl
.
Checks if there are any stable updates available for Tridactyl.
Related settings:
update.nag = true | false
- checks for updates on Tridactyl start.update.nagwait = 7
- waits 7 days before nagging you to update.update.checkintervalsecs = 86400
- waits 24 hours between checking for an update.Updates the native messenger if it is installed, using our GitHub repo. This is run every time Tridactyl is updated.
If you want to disable this, or point it to your own native messenger, edit the nativeinstallcmd
setting.
If the url of the current document matches one of your search engines, will convert it to a list of arguments that open/tabopen will understand. If the url doesn't match any search engine, returns the url without modifications.
For example, if you have searchurls.gi set to "https://www.google.com/search?q=%s&tbm=isch", using this function on a page you opened using "gi butterflies" will return "gi butterflies".
This is useful when combined with fillcmdline, for example like this: bind O composite url2args | fillcmdline open
.
Note that this might break with search engines that redirect you to other pages/add GET parameters that do not exist in your searchurl.
Increment the current tab URL
the increment step, can be positive or negative
Open a URL made by modifying the current URL
There are several modes:
Text replace mode: urlmodify -t <old> <new>
Replaces the first instance of the text old
with new
.
http://example.com
-> (-t exa peta
) -> http://petample.com
Regex replacment mode: urlmodify -r <regexp> <new> [flags]
Replaces the first match of the regexp
with new
. You can use
flags i
and g
to match case-insensitively and to match
all instances respectively
http://example.com
-> (-r [ea] X g
) -> http://XxXmplX.com
Query set mode: urlmodify -s <query> <value>
Sets the value of a query to be a specific one. If the query already exists, it will be replaced.
http://e.com?id=abc
-> (-s foo bar
) -> `http://e.com?id=abc&foo=barQuery replace mode: urlmodify -q <query> <new_val>
Replace the value of a query with a new one:
http://e.com?id=foo
-> (-q id bar
) -> `http://e.com?id=barQuery delete mode: urlmodify -Q <query>
Deletes the given query (and the value if any):
http://e.com?id=foo&page=1
-> (-Q id
) -> http://e.com?page=1
Graft mode: urlmodify -g <graft_point> <new_path_tail>
"Grafts" a new tail on the URL path, possibly removing some of the old tail. Graft point indicates where the old URL is truncated before adding the new path.
graft_point
>= 0 counts path levels, starting from the left
(beginning). 0 will append from the "root", and no existing path will
remain, 1 will keep one path level, and so on.graft_point
< 0 counts from the right (i.e. the end of the current
path). -1 will append to the existing path, -2 will remove the last path
level, and so on.http://website.com/this/is/the/path/component
Graft point: ^ ^ ^ ^ ^ ^
From left: 0 1 2 3 4 5
From right: -6 -5 -4 -3 -2 -1
Examples:
http://e.com/issues/42
-> (-g 0 foo
) -> http://e.com/foo
http://e.com/issues/42
-> (-g 1 foo
) -> http://e.com/issues/foo
http://e.com/issues/42
-> (-g -1 foo
) -> http://e.com/issues/42/foo
http://e.com/issues/42
-> (-g -2 foo
) -> http://e.com/issues/foo
The replace mode:
Go to the parent URL of the current tab's URL
Go to the root domain of the current URL
Opens the current configuration in Firefox's native JSON viewer in the current tab.
NB: Tridactyl cannot run on this page!
The specific key you wish to view (e.g, nmaps), or --default
or --user
to view the default configuration, or your changes.
Shows a list of the current containers in Firefox's native JSON viewer in the current tab.
NB: Tridactyl cannot run on this page!
Display the (HTML) source of the current page.
Behaviour can be changed by the 'viewsource' setting.
If the 'viewsource' setting is set to 'default' rather than 'tridactyl', the url the source of which should be displayed can be given as argument. Otherwise, the source of the current document will be displayed.
Close a tab.
Like tabopen, but in a new window.
winopen -private [...]
will open the result in a private window (and won't store the command in your ex-history ;) ).
winopen -popup [...]
will open it in a popup window. You can combine the two for a private popup.
Example: winopen -popup -private ddg.gg
Copy content to clipboard without feedback. Use clipboard yank
for interactive use.
Sets the current page's zoom level anywhere between 30% and 300%.
If you overshoot the level while using relative adjustments i.e. level > 300% or level < 30% the zoom level will be set to it's maximum or minimum position.
The zoom level to set. Expects percentages when changing the absolute zoom value and percentage points when making relative adjustments.
Set the zoom adjustment to be relative to current zoom level.
Tridactyl help page
Use
:help <excmd>
or scroll down to show help for a particular excmd. If you're still stuck, you might consider reading through the :tutor again.The default keybinds and settings can be found here and active binds can be seen with
:viewconfig nmaps
or with bind.Tridactyl also provides a few functions to manipulate text in the command line or text areas that can be found here. There are also a few commands only available in the command line which can be found here.
Ex-commands available exclusively in hint mode are listed here
How to use this help page
Every function (excmd) on this page can be called via Tridactyl's command line which we call "ex". There is a slight change in syntax, however. Wherever you see:
function(arg1,arg2)
You should instead type
function arg1 arg2
into the Tridactyl command line (accessed via:
)A "splat" operator (...) means that the excmd will accept any number of space-delimited arguments into that parameter.
Above each function signature you will see any aliases or key sequences bound to it. The internal names for the various modes are used, which are listed here:
nmaps
: normal mode bindsimaps
: insert mode bindsinputmaps
: input mode bindsignoremaps
: ignore mode bindsexaliases
: aliases in the command modeexmaps
: commandline mode bindsAt the bottom of each function's help page, you can click on a link that will take you straight to that function's definition in our code.
You do not need to worry about types. Return values which are promises will turn into whatever they promise to when used in composite.
Caveats
There are some caveats common to all webextension vimperator-alikes:
about:config
, run fixamo or add a new booleanprivacy.resistFingerprinting.block_mozAddonManager
with the valuetrue
, and remove the above domains fromextensions.webextensions.restrictedDomains
.Getting help
For more information, and FAQs, check out our readme and troubleshooting guide on github.
Tridactyl is in a pretty early stage of development. Please report any issues and make requests for missing features on the GitHub project page. You can also get in touch using Matrix, Gitter, or IRC chat clients:
All three channels are mirrored together, so it doesn't matter which one you use.