Hacker News new | past | comments | ask | show | jobs | submit login
Tree Style Tabs Extension Ported to Firefox 57 (addons.mozilla.org)
348 points by kibwen on Sept 26, 2017 | hide | past | web | favorite | 86 comments

This is awesome; Tree Tabs is one of my two essential extensions, the other being Vimperator.

I'm sticking with the Firefox ESR that supports Vimperator until Vimperator is ported (or re-written) for WebExtensions. Unfortunately, Vimperator is struggling to find contributors to help with the migration.

The other vim-themed extensions out there like Vimuim on Chrome or Saka Key just don't come close :(

[edit: added Saka Key]

I just moved to pale moon. Not all of the vimperator plugins work with pentadactyl (which is the officially supported thing), but it's decent.

Supposedly there was a chat today discussing keyboard extension apis [1]

Theres also an open issue on hiding the tabstrip [2]

But I somewhat doubt that the real strength, which imho is the scriptability will come back.

For those that don't know you can do a lot more with vimperator/pentadactyl than just use vim navigation. It allows you to script the entire ui in js. It also lets you bind commands and keys to bookmarklets and add mode keys to e.g. move forward in backward in slides on slideshare. On top of that it has a configurable commandbar which allows you to use fuzzy logic with history/bookmarks/awesomebar stuff(more importantly you can choose which things it should search)

If vimium is the usual "vi mode is not vim" then vimperator is the closest to vim you get in the browser.

another issue with palemoon and the webextension stuff is that i'm wondering how long the xul part of the plugins is going to keep being updated. I have a feeling that plugins that may need frequent updates will just rot away.

[1]: https://bugzil.la/1215061

[2]: https://bugzil.la/1332447

I just moved to pale moon

Why? Just curious.

Not a Vimperator user (though vim is my primary editor) so I can't say for certain how well any of these stack up, but in the other thread people were suggesting Saka Key as an alternative: https://news.ycombinator.com/item?id=15340154

I looked over the docs -- seems very similar to Vimium, and doesn't come close to Vimperator.

My one feature that I prefer in Vimperator is how it handles link-clicking.

To click a link in Vimperator, you type `f`, then start typing the text of the link you want to follow. Once your search only matches a single link, the Vimperator clicks that link or button for you. You can also type a number, which selects that match.

In Vimium, Saka Key, etc, you type `f`, and then type a short, unique code, which is assigned to each clickable element in order.

So, for a page like Hacker News, to follow the third "comments" link in Vimperator, I type `fcommen3`. In Vimium, I type `f`, then squint my eyes and parse the labels it applies, and them maybe type `sw` or something random.

> To click a link in Vimperator, you type `f`, then start typing the text of the link you want to follow. Once your search only matches a single link, the Vimperator clicks that link or button for you. You can also type a number, which selects that match.

You can do that with Vimium too. The setting is called "Use the link's name and numbers for link-hint filtering".

IIRC "Require Enter when filtering hints" is selected by default when you enable the previous setting, so the link is only highlighted and you have to press enter to open it.

> Use the link's name and numbers for link-hint filtering

Well, that's what I get for trying something once and never looking again...

Thanks for the tip!

How do you select the upvote arrow in Vimperator?

Squinting. I just upvoted your answer with Vimperator.

For what it's worth I only use VimFX and such for basic navigation and the link-opening keys. I just tried Saka Key and it's real good, a mighty fine replacement for my use-case.

Vimperator would be nice (actually, I preferred pentadactyl, but whatever), but I'd settle for VimFX working on the new Firefox. VimFX is (just barely) good enough but Vimium seems a little worse (I think because of the APIs it has access to, not because of bad development).

Nice for Tree Style Tabs, which I find essential.

However, I'm worried about some other big extensions that have really been useful not being able to be ported to WebExtensions, like DownThem'All, the developer is pretty pissed at Mozilla[1] and offers some insights about the design decisions made by Mozilla that could have a big impact on the ability of some AddOns to tap into the APIs they need to do anything useful.


It turns out there's a WebExtensions port in the works after all:


You might find the actual discussion quite interesting it's linked here [1]

[1]: https://mail.mozilla.org/pipermail/dev-addons/2016-December/...

And as for a DownThemAll fallback whose feature subset may be enough for you, consider Download Star: https://addons.mozilla.org/en-US/firefox/addon/download-star...

It's not just about being able to select what to download, that's a minimal part of what makes DTA so useful.

Does it allow you to manage your downloads though - like supporting multi-source downloads, pausing and re-starting, exporting/ importing lists, prioritise, re-order, limit speed, integrating with the save dialog and menus ...

DownThemAll is the one extension that might force me to abandon firefox or to stick with an ESR release and not upgrade.

Thus, my phrasing "feature _subset_ _may_ be enough" :) . I used to use DTA for this subset and am happy about Download Star, but it's totally understandable you relied on more.

As for "not upgrade": do stay on ESR for as long as possible and hope more fully-formed alternatives for your favorite addons eventually arrive. But really, don't disable upgrades altogether and risk being pwned due to running an unpatched, insecure browser.

Found in a comment in today's Quantum thread: "It still can't hide the tab bar (API will come in later releases) but it works!"; "https://bugzil.la/1332447 is the bug for adding a WebExtensions API for hiding the tab bar."

This can be done via userChrome.css. Just add this:

#tabbrowser-tabs { visibility: collapse !important; }

Thanks for this tip! Private browsing mode causes the tab bar to reappear (though the tabs are still hidden), so I found that the selector #TabsToolbar works even better.

Also, the large, bright sidebar header can be hidden with the #sidebar-header selector.

Combining those, we have:

    #TabsToolbar, #sidebar-header { visibility: collapse !important; }

I've added a modification that removes any margin at the top:

    #TabsToolbar, #sidebar-header {
      visibility: collapse !important;
    #TabsToolbar {
      margin-bottom: -21px !important;
Then go to the hamburger menu > Customization and check "Title Bar" at the bottom left. Then it pretty much looks like FF 56.

I've also changed the style of TSTs in the add-on settings (all the way at the bottom; not in userChrome.css) such that the tabs don't take up as much vertical space and to hide the close box button (and only show it on the mouse-over event):

    .closebox {
      display: none
    .tab:hover .closebox {
      display: block;
    .tab {
      padding-top: 0px;
      padding-bottom: 0px;
You can make `.tab` even tighter:

    .tab .icon {
      padding-top: 2px; /* reducing it by 2px */
      padding-bottom: 2px;
    :root {
      --tab-height: 22px; /* reducing it by 4px */

Novice question... where do I find userChrome.css on Windows?

A bit late to the party, but posting for reference in case someone finds this post in the future. For Ubuntu, I did as the following:

1. Created the chrome folder at `~/.mozilla/<your-profile-id>.default/`

2. Created `~/.mozilla/<your-profile-id>.default/chrome/userChrome.css` and added

    @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); 
at the top of the file.

3. Added customizations after this line. The resulting file will be like:

    @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); 
     * TreeStyleTabs solutions to remove tabs
     * Solution by: https://news.ycombinator.com/item?id=15343940 */
    #TabsToolbar, #sidebar-header {
      visibility: collapse !important;

    #TabsToolbar {
      margin-bottom: -21px !important;

You create it in the "chrome" folder in your Firefox profile. The "chrome" folder itself may need to be created.

https://support.mozilla.org/en-US/kb/profiles-where-firefox-... has directions for finding where the profile lives.


Excellent, I was digging around for an about:config pref but this works too. :)

If you're on windows and this makes your window buttons disappear, set browser.tabs.drawInTitlebar to false in about:config

Arghhhh Mozilla, FF57 is closing in and this shouldn't require userChrome hacking!

It seems a lot of very significant extensions, important to large user bases, are going to have trouble making it to 57.

What if Firefox developers were to take a break -- meaning, temporarily slow down -- from the browser development itself, once 57 is stable -- and put some time into helping to port some of those extensions? (At least, where code and license allow.)

I think a lot of Firefox users would appreciate this, and it would help preserve a principal feature set (via those extensions) that has caused many people to choose Firefox and to stick with it, up to this point.

In other words, Mozilla, please don't kill our extensions. How about helping them make the transition? (Also a good opportunity to learn where the new API may need more work/expansion)


P.S. Yes, I've been pissed about this change, for precisely this reason. Reading in this conversation how Mozilla is working to expand the new API, I'm given a bit of hope. And thus, this idea I'm suggesting.

P.P.S. Yeah, this may be an unreasonable and ugly ask. Wading into a bunch of other people's code of varying quality. (Sorry.) Nonetheless... the extensions have been a crucial part of Firefox's advantage, for many.

Part of the problem is that APIs that are good for extensions are by definition bad for performance (because they allow the extension to hook into important places and do a lot of things). So there is an inherent tradeoff between extension functionality and browser performance. It's easy to ask for powerful extension APIs because the ask is free. Would you still ask for it if you had to sacrifice performance? (The answer writ large, as evidenced by hordes of Chrome users, is no).

Sure. Why would I want two browsers that make identical compromises? It makes choice meaningless.

There are more tradeoffs involved in building a browser than just "powerful extensions vs browser performance". So you have a false assumption built into your question, that the two browsers in question are making identical compromises across all facets of things when that is in fact not the case.

And there are more than two browsers - if you do want a browser that still supports powerful extensions at the cost of browser performance, I hear Pale Moon is a good option (I haven't used it myself, so can't comment).

Yes. Because the way I use Firefox, together with extensions, is actually much more performant that e.g. stock Chrome -- or Chrome with the extensions it supports, as far as I know and understand.

Part of the problem is Web Extensions can not and will not have the Low Level API and UI Access that XUL had, as such it does not matter how much FF Dev's slow down these extensions will never ever be ported

The other problem is many of these extenstions have been in development for years, and have huge complex code bases that can not just simply be ported to Web Extensions, Dev's work on these for free in the spare time so they can not simply quit their day jobs and devote 100% of their times to solve a Problem Mozilla created for their own selfish reasons against the wishes of the User base to appease users that abandoned FF years ago

Basically Mozilla is tell the current users of FireFox that we are no longer welcome, to get fucked, and begging Chrome users to come back

This is great news. I'm still worried about what will happen to my large Scrapbook[1] archive, though. Most of the useful things about that plugin (saving, browsing, and loading files on the local disk) are not available in the new APIs I think.

[1] https://addons.mozilla.org/en-US/firefox/addon/scrapbook/

I actually abandoned Scrapbook years ago for fear of the format not being portable. In truth, now I've got data all scattered around but at least I'm not in this position. You might want to look at Zim which is more of a "personal wiki" but at least fits _my_ workflow for Scrapbook with a bit more copy-paste. I hope that it fits yours as well.

Seems there is a port in work: https://github.com/danny0838/webscrapbook

I'm in the same boat, scrapbook is to me a must have and I'm going to be stuck on the older FF until it can be migrated. That's years of stuff in there.

Is it the vertical display that people like about Tree Style Tabs, or the inheritance/nesting?

I've always wondered why spawned child tabs don't retain the `Back` history to go back to the web page that created them. Would be so useful; do any extensions exist?

For me, it's both. Nesting is helpful as a visual history indicator and a quick way to prune unused tabs that were opened closely in time. Great when you're doing a quick research. The vertical display helps locating tabs by its title and in general, narrower text on a page is easier to read. (Most screens nowadays are widescreen. Some blogs even overcompensate for this by having huge margins and even huge ads on the sidebar, but that's another story.)

I'd say it's both.

Anecdotally, to me being able to see the whole title and in a vertical list is just enough to like it, it makes it so much easier to find something among a shitload of tabs. Also, I feel it's a much better use of space in widescreen displays.

The tree part of it is less important, but also very useful to visually group related tabs.

Task-managing feels wrong to me in most (all?) OSes I've tried. A browser window with 100 tabs, relating to different research topics and ideas, feels wrong.

For that, I'd rather use one window per topic, and have the tabs in there be related, and that's what I tend to do. It's not always comfortable, and having several big/fullscreen windows from the same app in MacOS is a PITA. Also, you don't always know how much a task is gowing to grow and branch out...

I'm always curious to know how other people deal with this and how they feel about it.

100's of tabs open regularly, without TST it is impossible to keep track of what is where without constantly searching.

FWIW Tab Center Redux (which may have been moved into Tab Center itself, the old, formerly-non-webext addon, not sure if that happened) is pure vertical tabs with no tree. I like it a lot.

Most folks who use Tree Style Tabs use the tree extensively.

I generally try to keep nesting to one level, sometimes two.

This FF57 looks good - like a revolution about to come. I've made a switch in few minutes and... oh boy, you feel the difference.

Holy hell, finally FF57 isn't looking quite as frightening. New TST even supports tab containers. I really hope Mozilla fixes the inability to hide the horizontal tab bar (without userChrome hacking) though…

It's in the works, just not there yet. At a rough glance I'd expect it in 58, but I can't be sure of that.

Sea Containers is not exactly the same thing, but some may find it more useful: https://addons.mozilla.org/en-US/firefox/addon/sea-container...

It takes advantage of the (relatively) new Containers feature in Firefox.

Does anyone know if Tab Groups (or something like it) will be ported to 57?

Looks like this is the Bugzilla issue for providing the APIs to enable a Tab Groups port: https://bugzilla.mozilla.org/show_bug.cgi?id=1384515 ; "I've heard from several people that they're looking for an API that enables the usage of tabbrowser.showTab, tabbrowser.hideTab and/or tabbrowser.showOnlyTheseTabs. The primary use case I can point to right now is TabGroups (in fact I think this is blocking TabGroups from being ported to a WebExtension)."

The developer had put out a note saying that Tab Groups won't be suppressed by WebExtensions, and the work in order to do a partial port isn't worth their time.

The developer of this alternative - https://github.com/denschub/firefox-tabgroups - has said that they will port the add-on to a WebExtension, but they are waiting on this bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1384515

That's good. This one was the one that most people were complaining about not being possible in webext. Glad to show people that the Firefox team has good intentions.

A lot of the confusion around webextensions is that while 57 may not support a lot of important use cases, the door is always open for new webext APIs, which is what's been happening so far, and will continue to happen, making more and more such extensions possible again.


They worked hard to make the popular extensions possible. The dev worked hard to make the extension compatible.

All I was saying is that the Firefox team at Mozilla got way too much hate for moving the state of Firefox forward. People were leaving in droves because Firefox was not fast and used a lot of memory and crashed because of addons. Firefox took steps to rectify that and the release of quantum shows that they may actually be faster than chrome. The have made monumental strides in performance and memory use and the webext model has allowed them the aggressive refactoring that made those strides possible.

Yes we are all aware they have choosen performance over Customization and privacy.

they have choosen to make a Chrome Clone instead of Supporting the users that stuck with them for decades largely because FF was customizable

I could care less about performance, If my PC needs more RAM, I add more RAM, it is Cheap

I care about productivity and Customization.

well, they are the more privacy oriented browser for 1.

performance is a big issue and ram doesn't fix it. processors aren't getting much faster... they are getting more parallelized but not much faster. The move to webext was a way to allow for firefox to iterate faster toward a more performant browser with the tools in place to allow for customization and experimentation for new extension APIs(look at webext experiments[0]). If it's a worthwhile feature you can add it in and they can see that it works and then they can merge the experiment into firefox mainland. it's more work but results in a more performant, stable, privacy oriented browser.

0. see the one for better keyboard support to enable vimperator style extensions.

Yea the Commercial Proprietary Pocket integration, EME, and various other Mozilla choices really fill me with confidence that they care about privacy,

Personally I would not be shocked if FF was a Closed Source Browser filled with google analytics by Version 60 at the rate they are going that if MS does not simply buy out Mozilla First

> Commercial Proprietary Pocket integration

that isn't used to track you unless you opt in to it.


So? I am failing to see what encrypted media enhancements has to do with privacy. They were getting some serious flak for not being able to watch drm protected content.

That sounds like some serious hyperbole. I have seen how mozilla does what they do and they are very vigilant about privacy protections and how user data is collected and aggregated. At the end of the day you are free to use a different browser if you think it's going that poorly.

Sure I am free to use something, I am also free to criticize Mozilla for ruining the last good Open Source Web Browser buy turning into just another Commercial Browser akin to Chrome or Edge.

Your reply is about the smallest part of my comment, but ok.

Does anyone know what Firefox had to do to support this in WebExtensions? Is it at all generic, or is it super specific to the Tree Style Tabs extension?

I haven't looked closely at the extension but I think the two big building blocks are sidebars [1] and the tabs API [2], both of which have many applications outside of tree style tabs. The "hide the tabstrip" bug mentioned in other comments here is more narrowly focused than those two but it hasn't landed yet...

[1] https://developer.mozilla.org/en-US/Add-ons/WebExtensions/us... [2] https://developer.mozilla.org/en-US/Add-ons/WebExtensions/AP...

The sidebar API had to be added, but this was added quite a while back (been using it with Tab Center Redux since nightly 56 IIRC).

The tabs API was missing some stuff too. There was a Tree Tabs webext that due to the lack of some tabs api stuff was unable to have full functionality without doing lots of disk I/O in the use case of a large number of tabs, but I think that functionality was since added.

Only missing thing is the ability to hide the tab strip, now (AIUI)

Essential part of My daily browsing. Still surprised it is still an addon and not default in browsers.

Best news all day! This is one of the most essential extensions that wasn't going to work before.

Feels like I'm missing some background here - what happened between 56 and 57 that made it necessary to port extensions? Some revolutionary architectural change?

Firefox stopped the support for legacy (non-WebExtension) APIs, and secondly FF57 introduced many new WebExtension APIs as 'replacements', making it only feasable to implement TST using WebExtension in FF57+. As mentioned, some APIs are missing to allow the last plugins to be rewritten as WebExtension versions, but it is close to feature-compatible with FF56- APIs.

Yes, they've migrated to a new multiprocess architecture and the extra isolation requires new approach to integrating extensions. Previous extension API assumed UI, pages and everything else lived in the same process.

multiprocess was a different event and it happened well before Firefox 56 breakage.

It wasn't enabled for users who had any old extensions installed.

"Legacy" addons could be made compatible with the newer multiprocess design. See: https://developer.mozilla.org/en-US/Add-ons/Working_with_mul...

Many developers went through the effort only to see support for their addons scrapped altogether a couple months later. Fortunately, that was quick enough for Mozilla to sweep under the "legacy extensions are unfixable and unmaintainable" rug.

I'm not sure if it was between 56 and 57, but Firefox recently switched to using web extensions, which is the same kind of extensions that Chrome uses, compared to Firefox extension types that it used previously. Therefore existing Firefox extensions had to be updated.

> which is the same kind of extensions that Chrome uses

Sort of. The WebExtensions API aims to be a superset of Chrome's extension API. WebExtensions aren't and won't be limited to Chrome's feature set and Mozilla is in the process of rapidly expanding their capabilities.

As opposed to the previous Firefox Add-ons API, which essentially exposed a ton of unstable internal surface area to dynamically-loaded third-party code, WebExtensions provide a stable, explicit interface that Mozilla can support without breaking things between releases or due to architectural changes like e10s/multi-process.

The kinds of improvements Mozilla wants to make in Firefox going forward would end up breaking tons of extensions anyway, over and over again with each significant change. This way, there only needs to be one migration to the stable WebExtensions API.

That this could be done at all is a good sign for Firefox's future. I do wish they'd retained the ability to customize the UI on the navigation bar, but am now hopeful that more of the extensions that would have made me reluctant to upgrade will be ported.

Wow, I wish I knew about this extension before. Too bad Chrome doesn't have this.

That’s why I could never use chrome. Tabs on the side is just more logical.

That's why I use Vivaldi.

Does it sync?

Good. I hope Tab Mix Plus will be upgraded too.

Sadly, not much seems to be happening on that front:


At the very least I'd want something to override ctrl+tab tab switching order (by most recently used instead of tab order in tab bar), and a popup showing the tabs in that order.

Edit: Apparently the about:config setting browser.ctrlTab.previews gives you MRU and a popup. Unfortunately it shows large thumbnails of the tabs instead of just a list of the titles.

When will they drop backspace = go back? Chrome was right

There are extensions that allows you to remap the shortcut to your liking.

It's not a one size fits all problem.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact