Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

A Vim-like interface for Firefox, inspired by Vimperator/Pentadactyl.

License

NotificationsYou must be signed in to change notification settings

tridactyl/tridactyl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7,306 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


Tridactyl Logo
Tridactyl

Replace Firefox's default control mechanism with one modelled on the one true editor, Vim.

Build StatusMatrix ChatJoin Gitter ChatJoin Discord ChatMozilla Addon Store

InstallationChangelogFirst LookFeaturesFAQContributing


Tridactyl GIF

Installation

Click this link in Firefox to install our latest "beta" build. If it doesn't install automatically, you may need to 1) rename the extension from.zip to.xpi and 2) open it with Firefox; a fool-proof method is to go toabout:addons, click the extensions tab, click the cog in the top right, then click "Install Add-on From File...". If you want more options, read on.

Stable

Our "stable" builds are essentially just frozen versions of our beta builds. Our beta builds themselves are not much less stable; all our developers and about half of our users use the beta builds. Stable builds, however, do get new features documented in the changelog, whereas beta builds get new features before they are documented there.

Arch Linux

Runpacman -S firefox-tridactyl in a terminal and then restart Firefoxtwice.

All other operating systems (Microsoft Windows, Macintosh, Linux etc.)

Tridactyl stable can be installed from theMozilla add-ons website (the AMO).

Beta

Click this in Firefox to install our "beta" builds. Thesebetas used to be updated with each commit to master on this repo but are now built manually when bovine3dom remembers - seeissue #3605. Your browser will automatically update from there once a day. If you want more frequent updates, you can changeextensions.update.interval inabout:config to whatever time you want, say, 15 minutes (900 seconds). There is also another beta build that comes without a new tab page. You can get it fromhere.

Extra features throughNative Messaging

If you want to use advanced features such as edit-in-Vim, you'll also need to install the native messenger or executable, instructions for which can be found by typing:installnative and hitting enter once you are in Tridactyl. Arch users can install theAUR packagefirefox-tridactyl-native instead.

Containerized/sandboxed Firefox Installations

Snap and Flatpak: Native Messaging support here is fairly recent and may require:

  • Upgrading to a beta version of Firefox (>= 106.0b6)
  • Enabling webextension permissions:flatpak permission-set webextensions tridactyl snap.firefox yes
  • Rebooting your system (and likely nothing short of it)

Seethis call for testing thread andthis PR for more details and troubleshooting tips.

Firejail will require explicit path whitelisting, but should be feasible based onnetblue30/firejail#2109.

For other containerized installs, see troubleshooting steps in#2406 and the links above. With packaging that does support Native Messaging, the trick is usually ensuring the containerized app has permission to run the executable and can find themanifest json file.

Migrating between beta and stable builds

Our beta and stable versions store their configurations in separate places. To migrate between the two, seethe wiki.

Changelog

The changelog for the stable versions can be foundhere.

First look

Type:help or press<F1> for online help once you're in, or:tutor for a friendly introduction. You might also find theunofficial Tridactyl Memrise course (requires login) useful for memorising keybinds.

Remember that Tridactyl cannot run on any page on about:*, data:*, view-source:* and file:*. We're sorry about that and we're working with Firefox to improve this situation by removing restrictions on existing APIs and developing a new API.

If you're enjoying Tridactyl, or not, please leave a review on theAMO.

Highlighted features

Like Vim, Tridactyl is modal, with the default mode being "normal mode". In "normal mode", many functions are available using keybindings. In "command mode" (when the command line is shown), you can execute more complex commands, known as "ex-commands". All Tridactyl functionality can be accessed by ex-commands. You can bind any ex-command to a normal-mode shortcut. We also support a.tridactylrc file, of which there is an example in the root of this repository.

Default normal-mode bindings

This is a (non-exhaustive) list of the most common normal-mode bindings. Type:help to open the online help for more details.

  • : — activate the command line
  • Shift +Insert — enter "ignore mode". PressShift +Insert again to return to "normal mode".
  • ZZ — close all tabs and windows, but only "save" them if your about:preferences are set to "show your tabs and windows from last time"
  • . — repeat the last command
  • <C-v> – send a single keystroke to the current website, bypassing bindings

You can try:help key to know more aboutkey. If it is an existing binding, it will take you to the help section of the command that will be executed when pressingkey. For example:help . will take you to the help section of therepeat command.

Navigating with the current page

  • j/k — scroll down/up
  • h/l — scroll left/right
  • ^/$ — scroll to left/right margin
  • gg/G — scroll to start/end of page
  • f/F/gF — enter "hint mode" to select a link to follow.F to open in a background tab (note: hint characters should be typed in lowercase).gF to repeatedly open links until you hit<Escape>.
  • gi — scroll to and focus the last-used input on the page
  • r/R — reload page or hard reload page
  • yy — copy the current page URL to the clipboard
  • [[/]] — navigate forward/backward though paginated pages, for example comics, multi-part articles, search result pages, etc.
  • ]c/[c — increment/decrement the current URL by 1
  • gu — go to the parent of the current URL
  • gU — go to the root domain of the current URL
  • gr — open Firefox reader mode (note: Tridactyl will not work in this mode)
  • zi/zo/zz — zoom in/out/reset zoom
  • <C-f>/<C-b> — jump to the next/previous part of the page
  • g? — Apply Caesar cipher to page (rung? again to switch back)
  • g! — Jumble words on page

Find mode

Find mode is still incomplete and uses the Firefox feature "Quick Find". This will be improved eventually.

  • / — open the Quick Find search box
  • / then<C-f> — open the Find in page search box
  • <C-g>/<C-G> — find the next/previous instance of the last find operation (note: these are the standard Firefox shortcuts)

Please note that Tridactyl overrides Firefox's<C-f> search, replacing it with a binding to go to the next part of the page. If you want to be able to use<C-f> to search for things, use<C-f> after opening the Quick Find box (/), or any input field such as the address bar or search bar (use default browser shortcuts to activate these). To allow usage of<C-f> at any time, useunbind <C-f> to unset the scrollpage binding.

Bookmarks and quickmarks

  • A — bookmark the current page
  • a — bookmark the current page, but allow the URL to be modified first
  • M<key> — bind a quickmark to the given key
  • go<key>/gn<key>/gw<key> — open a given quickmark in current tab/new tab/new window

If you want to use Firefox's default<C-b> binding to open the bookmarks sidebar, make sure to rununbind <C-b> because Tridactyl replaces this setting with one to go to the previous part of the page.

Marks

  • m a-zA-Z — set a local mark (lowercase letter), or a global mark (uppercase letter)
  • ` a-zA-Z — jump to a local mark (lowercase letter), or a global mark (uppercase letter)
  • `` — jump to the location before the last mark jump

Navigating to new pages:

  • o/O — open a URL (or default search) in this tab (O to pre-load current URL)
  • t/T — open a URL (or default search) in a new tab (T to pre-load current URL)
  • w/W — open a URL (or default search) in a new window (W to pre-load current URL)
  • p/P — open the clipboard contents in the current/new tab
  • s/S — force a search using the default Tridactyl search engine, opening in the current/new tab. This is useful when searching for something that would otherwise be treated as a URL byo ort
  • H/L — go back/forward in the tab history
  • gh/gH — go to the pages you have set withset home [url1] [url2] ...

Handling tabs

  • d — close the current tab
  • u — undo the last tab/window closure
  • gt/gT — go to the next/previous tab
  • g^ OR g0/g$ — go to the first/last tab
  • ga — go to the tab currently playing audio
  • <C-^> — go to the last active tab
  • b — bring up a list of open tabs in the current window; you can type the tab ID or part of the title or URL to choose a tab

Extended hint mode

Extended hint modes allow you to perform actions on page items:

  • ;i/;I — open an image (in current/new tab)
  • ;s/;a — save/save-as the linked resource
  • ;S/;A — save/save-as the selected image
  • ;p — copy an element's text to the clipboard
  • ;P — copy an element's title/alt text to the clipboard
  • ;y — copy an element's link URL to the clipboard
  • ;# — copy an element's anchor URL to the clipboard
  • ;r — read the element's text with text-to-speech
  • ;k — delete an element from the page
  • ;; — focus an element

Additionally, you can hint elements matching a custom CSS selector with:hint -c [selector] which is useful for site-specific versions of the standardf hint mode.

Binding custom commands

You can bind your own shortcuts in normal mode with the:bind command. For example:bind J tabprev to bindJ to switch to the previous tab. See:help bind for details about this command.

WebExtension-related issues

  • Navigation to any about:* pages using:open requires the native messenger.
  • Firefox will not load Tridactyl on about:*, some file:* URIs, view-source:*, or data:*. On these pages<C-,> - that's "Ctrl-Comma" - and thetriomnibox keyword are your escape hatches.
    • addons.mozilla.org is not supported.
  • Tridactyl now supports changing the Firefox GUI if you have the native messenger installed viaguiset. There's quite a few options available, butguiset gui none is probably what you want, perhaps followed up withguiset tabs always. See:help guiset for a list of all possible options.

Frequently asked questions (FAQ)

  • Why doesn't Tridactyl work/why does it break the websites I'm trying to use? or 'Help! A website I use is totally blank when I try to use it with Tridactyl enabled!' or 'Why doesn't Tridactyl work on some pages?'

    Please visit ourtroubleshooting guide.

  • How can I change the default search engine?

    :set searchengine [searchurl name], e.g.:set searchengine google

    For instance, to use the European Space Agency as the default search engine (which may not necessarily be a good idea):

    :set searchurls.esa http://www.esa.int/esasearch?q=

    :set searchengine esa

    Note that this does not apply to:open when run without arguments, as it simply opens the newtab page which can be set like this:

    :set newtab [newtab url], e.g.:set newtab https://www.google.com

  • How can I add a search engine?

    :set searchurls.esa http://www.esa.int/esasearch?q=

    You can also add%s to specify exactly where the search query should go, which is useful for more inventive uses, such as

    :set searchurls.phrasebook https://translate.google.co.uk/#en/%s/my%20hovercraft%20is%20full%20of%20eels

    after which:open phrasebook [fr|de|la|es|hi|it...] will work as expected.

  • Can I import/export settings, and does Tridactyl use an external configuration file just like Vimperator?

    Yes.:source --url [URL] accepts a URL (which must contain only an RC file, e.g.raw.githubusercontent.com/...). If you havenative working,$XDG_CONFIG_HOME/tridactyl/tridactylrc or~/.tridactylrc will be read at startup via anautocmd andsource. There is anexample file available on our repository.

    There's alsomkt which exports your configuration to a file which may be read withsource. (NB: this currently requiresnative).

  • How can I change the colors or theme used by Tridactyl?

    To use one of the built in themes use::colors <color>. The current options are:

    • default
    • dark (authored by @furgerf)
    • shydactyl (authored by @atrnh)
    • greenmat (authored by @caputchinefrobles)
    • halloween
    • quake
    • quakelight
    • midnight (authored by @karizma)

    Tridactyl can also load themes from disk or URL. You could use this for example to load one of the themes originally authored by @bezmi (tridactyl/base16-tridactyl). See:help colors for more information.

  • How to remap keybindings? or How can I bind keys using the control/alt key modifiers (eg:ctrl+^)?

    You can remap keys in normal, ignore, input and insert mode with:bind --mode=$mode $key $excmd. Hint mode and the command line are currently special and can't be rebound. See:help bind for more information.

    Modifiers can be bound like this::bind <C-f> scrollpage 1. Special keys can be bound too::bind <F3> colors dark and with modifiers::bind <S-F3> colors default and with multiple modifiers::bind <SA-F3> composite set hintchars 1234567890 | set hintfiltermode vimperator-reflow

    The modifiers are case insensitive. Special key names are not. The names used are those reported by Javascript with a limited number of vim compatibility aliases (e.g.CR == Enter).

    If you want to bind<C-^> you'll find that you'll probably need to press Control+Shift+6 to trigger it. The default bind is<C-6> which does not require you to press shift.

    You can also create site specific binds withbindurl [url] ...

  • When I type 'f', can I type link names (like Vimperator) in order to narrow down the number of highlighted links?

    You can, thanks to @saulrh. Firstset hintfiltermode vimperator and thenset hintchars 1234567890.

  • Where can I find a changelog for the different versions (to see what is new in the latest version)?

    Here.

  • Why can't I use my bookmark keywords?

    Mozilla doesn't give us access to them. Seeissue #73.

  • Can I set/get my bookmark tags from Tridactyl?

    No, Mozilla doesn't give us access to them either.

  • Why doesn't Tridactyl work on websites with frames?

    It should work on some frames now. See#122.

  • Can I change proxy via commands?

    Not yet, but this feature will eventually be implemented.

  • How do I disable Tridactyl on certain sites?

    To enter ignore mode automatically on a website, useblacklistadd like this:blacklistadd mail.google.com/mail. See:help blacklistadd. Also note that if you want something like the passkeys or ignorekeys features vimperator/pentadactyl had, you can usebindurl. See:help bindurl.

    If you want to more thoroughly disable Tridactyl on a website, for example to prevent it from injecting its CSS, use:seturl [url regex] superignore true. See:help seturl and:help superignore for more details.

  • How can I list the current bindings?

    viewconfig nmaps works OK, but Tridactyl commands won't work on the shown page for "security reasons". We'll eventually provide a better way. See#98.

  • How can I know which mode I'm in/have a status line?

    Pressj and see if you scroll down :) There's no status line yet: see#210, but we do have a "mode indicator" in the bottom right. It even goes purple when you're in a private window :).

  • Does anyone actually use Tridactyl?

    In addition to the developers, some other people do. Mozilla keeps tabs on stable usershere, but, as of a while ago, you can't see that link if you aren't listed as a Tridactyl developer on the AMO. The maintainers guess the number of unstable users from unique IPs downloading the betas each week when they feel like it. Last time they checked there were 4600 of them.

  • How do I prevent websites from stealing focus?

    There are two ways: the first one is:seturl [URL regex] allowautofocus false (if you do this you'll probably also want to setbrowser.autofocus to false inabout:config). This will prevent the page'sfocus() function from working and could break javascript text editors such as Ace or CodeMirror; you could equally run:set allowautofocus false and then use:seturl [URL regex for sites with text editors you use] allowautofocus true. The second method is:seturl [URL regex] preventautofocusjackhammer true which will repeatedly check that the page has not stolen focus at the cost of some CPU cycles, so use it sparingly. It works on more websites thanallowautofocus false.

Contributing

Donations

We gratefully accept donations viaGitHub Sponsors (we receive 100% of your donation),Liberapay (about 95% of your donation makes it to our account),PayPal (about 70% of your donation makes it to our bank account after fees) andPatreon (about 70% of your donation makes it to our account). If you can, please make this a monthly donation as it makes it much easier to plan. People who donate more than 10USD a month via GitHub or Patreon get a special monthly "tips and tricks" newsletter - see an examplehere. All GitHub and Patreon donors get a quarterly newsletter on Tridactyl development.

PayPal

Funds currently ensure that bovine3dom can afford to work on Tridactyl about one day a week.

Merchandise

We have some designs available onREDBUBBLE. There are often discount codes available - just search your favourite search engine for them. The T-shirts are quite good (I'm wearing one as I type this). The stickers are not the best quality we've ever seen. The clock looks amazing on the website. If anyone buys it I would love to see it.

We don't take any cut from the merchandise, so if you would like to donate, please do so via PayPal or Patreon above.

Building and installing

Onboarding:

git clone https://github.com/tridactyl/tridactyl.gitcd tridactylyarn installyarn run build

Each time package.json or yarn.lock change after you checkout or pull, our git hook will try to runyarn install again. If it doesn't you should do it manually.

Addon is built inbuild/. Load it as atemporary addon in firefox withabout:debugging or seeDevelopment loop.

If you want to install a local copy of the add-on into your developer or nightly build of Firefox then you can enable installing unsigned add-ons and then build it like so:

# Build tridactyl if you haven't done that yetyarn run build# Package for a browserscripts/sign nosignbeta

If you want to build a signed copy (e.g. for the non-developer release), you can do that withweb-ext sign. You'll need some keys for AMO and to edit the application id insrc/manifest.json. There's a helper script inscripts/sign that's used by our build bot and for manual releases.

You can build unsigned copies withscripts/sign nosign{stable,beta}. NB: Thestable versusbeta part of the argument tells our build process which extension ID to use (and therefore which settings to use). If you want a stable build, make sure you are on the latest tag, i.e.git checkout $(git tag | grep '^[0-9]\+\.[0-9]\+\.[0-9]\+$' | sort -t. -k 1,1n -k 2,2n -k 3,3n | tail -1).

If you are on a distribution which builds Firefox with--with-unsigned-addon-scopes= set toapp and/orsystem (which is most of them by users: Arch, Debian, Ubuntu), you can install your unsigned copy of Tridactyl withscripts/install.sh [directory]. If you're on Arch, the correct directory is probably selected by default; on other distributions you might have to go hunting, but it probably looks like/usr/lib/firefox/browser/extensions.

Building on Windows

  • InstallGit for Windows

  • InstallNodeJS for Windows

    • Current 8.11.1 LTS seems to work fine
  • Launch the installation steps described above from MinTTY shell

    • Also known as "Git Bash"

Development loop

yarn run build & yarn run run

You'll need to runyarn run build every time you edit the files, and press "r" in theyarn run run window to make sure that the files are properly reloaded.

You can speed up the build process after your first build by usingyarn run rebuild instead. This skips rebuilding the metadata (used in completions), documentation, new tab page, and tutor, so don't use it if that's what you're trying to test.

Committing

A pre-commit hook is added byyarn install that simply runsyarn test. If you know that your commit doesn't break the tests you can commit withgit commit -n to ignore the hooks. If you're making a PR, travis will check your build anyway.

Documentation

Ask in#tridactyl onmatrix.org, Libera,gitter, orDiscord. We're friendly!

Default keybindings are currently best discovered by reading thedefault config.

Development notes are in the doc directory, but they're mostly out of date now. Code is quite short and nottoo badly commented, though.

Principles and objectives

Principles:

  • Keyboard > mouse
  • default keybinds should be Vim-like
  • actions should be composable and repeatable
  • ex mode should expose all the browser functionality anyone might want
  • Arguable: most (all?) actions should have an ex mode version (departure from Vim?)
  • users can map and define their own actions and commands

Other objectives:

  • be fast - the whole point of a keyboard interface is to be more efficient, don't compromise that with slow code
  • don't crash - we're the new UI and we shouldn't crash
  • be maintainable - code should be well documented, reasoned about and tested.

Logo acknowledgement

The logo was designed by Jake Beazley using free vector art bywww.Vecteezy.com


[8]ページ先頭

©2009-2026 Movatter.jp