Tridactyl: A Vim-like interface for Firefox
github.com
github.com
Is this actually getting us back to something similar to Pentadactyl? I had assumed the plugin changes were preventing such control from being granted to plugins. Was I wrong, and it was just that the authors didn't port to the new framework?
[1] bug.5digits.org/pentadactyl
[2] https://support.mozilla.org/en-US/kb/firefox-add-technology-...
But note their security patch is maintained by volunteers outside of Firefox team, and may not be the best of state.
Recently, we have added an escape hatch where if you press ctrl-, focus returns to the page even from browser chrome. This works even on special pages like "we could not load this page" where it returns you to a page where Tridactyl can run. I've trained myself to use it instead of escape and it feels quite natural. On every platform except Windows ctrl-6 now takes you to the previous tab everywhere, even on pages to which we don't normally have access. Users can add their own octopus-style binds which are accessible everywhere but the criteria for what works are unfortunately quite opaque.
I personally think the biggest problems for Tridactyl are in the future. Manifest v3 proposes heavily restricting the use of `eval` which our users use a lot for writing their own little scripts. I don't think it would be insurmountable, but Tridactyl already has its own little DSL, so we would probably run afoul of the spirit of the new rules and risk getting delisted or banned. We might have to take most of the coolest features of Tridactyl out (and maybe have a contrib/ part of the source where anyone can have their own scripts merged without too much review).
The other problem is that new web extension APIs tend be gated behind a very narrow definition of "user intent" - essentially, the user clicks on your extension button or presses an octopus-style keybind (like ctrl-,) - that excludes about 99% of the intent of Tridactyl users. A recent example of this is the new "optional permissions" where an extension can ask for permissions as it needs them; Firefox requires you can convince it that you have user intent or it will not allow you to ask for more permissions. (Incidentally, the keyboard API I mentioned above would allow us to prove user intent to Firefox in some limited circumstances).
So in summary: yeah, there are limitations. Lots of them could be fixed by working with Mozilla but no one has yet been motivated enough. In practice it's not as bad as it sounds.
In general we seem to have more hint modes - copy paragraph to clipboard, select text, etc. See https://github.com/tridactyl/tridactyl/blob/5e8f94ff06bd5f14... (and forgive the code ... we really need an argument parser).
Edit: Thanks for Tridactyl, it's a great add-on and truly a life changer, and I just started using it 2 or 3 days ago :)
You can't really write Python well inline (as an oneliner), so custom hints would look a bit different in qutebrowser, as a separate Python extension which would be loaded from a file: https://github.com/qutebrowser/qutebrowser/issues/30
I agree it'd be great to have a bit more flexibility with regards to hinting actions!
tridactyl: https://imgur.com/D1PDBgY
qutebrowser: https://imgur.com/m4vtbk0
Now it's not that a big deal, but the advantages appears clearly on more saturated pages, off the top of my head, stackoverflow's triage:
With qutebrowser[0], if I want to close the modal, `gs` and `hd` are almost on the same place (it's only with experience that I noticed that hints are top left so `hd` is the hint I'm looking for) compare this to tridactyl[1] the `hy` fits very nicely with the highlight which doesn't let any place for ambiguity. I noticed your other answer about the addons, it's very much appreciated, and if I can help with the beta or whatever, let me know, keep up with the great work.
Qutebrowser is especially great for browsing documentation while coding. Besides it's main point of being keyboard driven, the lack of plugins makes it also absolutely distraction free.
What are you using for device synchronization? Something like Syncthing/Nextcloud?
This is going to change soon, however, with a new adblocker based on Brave's: https://github.com/qutebrowser/qutebrowser/pull/5317
Now whenever I use something like discord to talk with my gaming friends I find myself wanting the same keybindings.
You don't need to love or use Vim to benefit from it. Just learning the keybinds is a great thing, because you can most likely find Vim bindings for any popular system.
So though you never use Vim, whatever you pick up next can use the same bindings you're used to.
The only website keybinding that really frustrates me is /, which many sites bind to their search feature. I don't understand why they do that. Don't web browsers already have page navigation features? Either the user is a mouse maid and can click the search field themselves, or they have a keyboard navigation tool such as Tridactyl and the binding just overrides the tool.
For the search functionality specifically, I guess it's possible to find a solution. The page-specific search shortcut will just focus a specific element on the page, and maybe that could be provided on a different shortcut in addition to /.
I pair it with a custom userChrome.css which removes the tab bar (I use 'b' to view and access tabs whenever I need them), affording me more vertical real-estate.
My only gripe was that the search navigation with C-g(?) was very clunky and painful so I unbound C-f and it works just fine now. I'm sure that's a matter of personal preference, though.
for example, can you share the content of the userChrome.css and the trydactyl configuration needed to bind 'b' with the toggle action?
We offer some help with userchrome via `:guiset` which I personally use, but you should beware that Mozilla break it fairly often (maybe once every 6 months) with updates.
For userChrome, I use https://github.com/MrOtherGuy/firefox-csshacks/blob/master/c...
Not my GitHub, but incredibly useful repo for all kinds of userChrome shenanigans. Personally I keep it to a minimum (literally just this hack) so that I have less stuff to look at if an update breaks something.
I'm sure most plugins are benign, but it might not be
Even though there’s no guarantee that the explanation corresponds exactly to what is implemented behind the scenes, this unusual pattern of user respect and consideration makes the add-on/developers feel more trustworthy than other sketchier ones.
Otherwise, I will have to trust the package author to not be malicious.
Another option might be to personally package and sideload the extension which I don't know how.
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/Web....
[1]: https://www.archlinux.org/packages/community/any/firefox-tri...
Specifically in the case of Tridactyl, as an interface to the entire webbrowser is needs access to the entire web browser. It does manage bookmarks, it does modify webpages (by adding link hints).
I’d highly recommend checking out qutebrowser if you are interested in this type of thing.
Containers: https://github.com/qutebrowser/qutebrowser/issues/4102
Better adblocker: https://github.com/qutebrowser/qutebrowser/pull/5317
I'm still not sure what exactly Privacy Badger really does under the hood, but I suspect much of it won't be possible with QtWebEngine's API.
Not sure about Cookie Auto Delete - I fear it's not possible to implement either, but I'm not entirely sure, I've always found the QtWebEngine cookie APIs quite confusing so I'd need to take a closer look.
One example is using a custom search engine, with vim-vixen it'll just continue to use Google while tridactyl works fine, I also like how it highlights the elements targeted by the letters when you press 'f'
Hi,
I'm using vim-vixen with DuckDuckGo without problem. I just have "duckduckgo" set in search.default
Thanks : )
Copying all the links from a table in a go without doing some console fiddling is kinda nice when you need it.
That is SUPER ANNOYING. There should be a button to disable this behaviour very clearly on the page.
Regarding the focus stealing: having focus on the page was one of our most requested features. Unfortunately it isn't trivial to have it be optional.
[1]: https://tridactyl.cmcaine.co.uk/betas/nonewtab/tridactyl_no_...
[2]: https://github.com/tridactyl/tridactyl/wiki/Migration-from-s...