This is a Firefox add-on which provides the ability to operate tabs as "tree".
New tabs opened from the current tab are automatically organized as "children" of the current. Such "branches" are easily folded (collapsed) by clicking on down on the arrow shown in the "parent" tab, so you don't need to suffer from too many visible tabs anymore. If you want, you can restructure the tree via drag and drop.
Anyway this addon just provide uncolored "tree" feature. Please enjoy as you like!
strict_min_versioninformation in the install manifest to know the minimum supported Firefox version.
It is not signed, so you need to load it by non-regular way. (Please click this section to see instructions.)
There are two methods to try them in your environment:
about:debuggingand click "Load Temporary Add-on" button, then choose the downloaded file. The development build will be loaded and active until you restart your Firefox.
false. Then you will be able to install such an unsigned addon.
Also, you can build a custom development build locally. For example, here are the steps to build an XPI on Ubuntu (native, or WSL on Windows 10):
$ sudo apt install git nodejs npm $ git clone --recursive https://github.com/piroor/treestyletab.git $ cd treestyletab/webextensions $ make
Steps to build a specific revision (for example bb467286d58b3da90fd1b2e6ee8a8016e3377b97):
$ cd treestyletab/webextensions $ git checkout bb467286d58b3da90fd1b2e6ee8a8016e3377b97 $ git submodule update $ make
Then you will see new
.xpi files in the current directory. You can install such a development build via
about:debugging. Click the
Load Temporary Add-on button and choose
treestyletab/manifest.json or a built
TST provides an API for other addons. Some addons provide extended behavior to TST's sidebar panel:
There are some similar project by someone not me providing similar features:
There are some addons providing a popup panel to show a list of tabs with a search field corraborative with TST:
All feedbacks are handled as GitHub issues. But please read FAQ below, before you post any new feature request.
Instead of adding more built-in features, I hope to make TST compatible with other tab related addons. If it is required for more better compatibility I add public APIs for other addons, and actually there are some implementations using this API.
If you need any new API, please file API proposals to the issue tracker.
Please use a forked version of TST for Pale Moon instead.
TST is designed for latest release of Mozilla Firefox (*Please see also the
strict_min_version information in the install manifest to know the minimum supported Firefox version), and other applications forked from Firefox are not supported.
"Waterfox Current" looks based on Firefox ESR68 and you can install TST 2.0 and later to it. However "Waterfox Classic" based on Firefox 56 is never supported.
TST can't be ported to other browsers because it depends on some Firefox specific APIs like
sidebar, so it needs to be re-implemented completely.
Sorry but I won't re-implement TST as an extension for other browsers by myself because I still use Firefox.
(But there are some alternatives developed by someone not me.)
As a workaround, you need to do it by creating a
But please remind that such an usage is not recommended by the original author of TST, because TST doesn't cover full features of the native tabs due to restrictions of WebExtensions API so some tab features become inaccessible.
Due to restrictions from Firefox itself, TST can't apply GTK+ theme color to its appearance by default. If you hope to see TST's UI with colors matching to other parts of Firefox, you need to configure Firefox and TST as:
For more details, please see also the discussions in the issue #2667.
In short, there is a workaround:
For more detailed background, please see also my comment in the issue #2780.
Sadly there is no stable reference document due to unstableness of TST's DOM structure. The code snippets are just examples for the time they were written, and they may be broken by changes on TST itself, thus they need to be updated by users through investigation with the debugger.
It is impossible. TST 2.0 and later are implemented as just a sidebar panel, so there is no chance to provide horizontal version.
It is out of purposes of "Tree" Style Tabs. I recommend you to use other addons providing vertical tab bar without tree instead.
You can deactivate TST's automatic tree organizing behaviors, by some secret preferences:
After that TST never attach new tabs to existing tree automatically.
If you want to drag multiple tabs at once to organize tree, Shift/Ctrl-click to select multiple tabs (and Multiple Tab Handler for more feature) will help you.
I won't increase number of configurations of TST itself inifinitely, instead I hope to reduce them. High customizability for details of features is out of TST's purpose. I want to provide only very required options which are truly un-omitable. Too many optional features would kill this project, because they would cloud the important concept of TST and would bring together people who don't like my core vision about TST.
It is available on TST 3.7.0 and later, as an expert option: "Tabs from any other trigger" under the "New Tabs Behavior" section. Sadly you cannot control the behavior for each detailed case, due to limitations of WebExtensions API.
Do you use the toolbar button of TST itself? Then you can go to TST's options page directly from the context menu on the button. Firefox provides a "Manage Extension" command globally at the context menu on toolbar buttons provided by addons. Moreover, TST privately provides more commands like the options dialog at the menu for a shortcut.
On the other hand, I'm negative to provide a command like "TST Options" at the context menu on tabs, with some reasons:
If you really need to access TST's options page very frequently due to some reasons, as a workaround you can bookmark the page with the URL
ext+treestyletab:options. It allows you to open the options page in a tab.
You can do it with the
userChrome.css. There are some instructions about activatiton of the
userChrome.css on recent versions of Firefox and style rules to hide specific context menu items.
I have no plan to add configuration UI for menu items cited from Firefox's native tab context menu. Here are some my comments describing reasons of this decision.
Due to limitations of WebExtensions APIs, it is impossible. (But there is a workaround based on userChrome.css.)
WebExtensions only allows to toggle visibility of the sidebar for limited keyboard shortcuts or the toolbar button.
Other arbitrary timing are disallowed, including
mouseover and long-press of a key.
It is currently impossible due to the bug 1328776 (Provide ability to show multiple sidebar contents parallelly). But there are some workarounds:
Please note that "useful" features won't be implemented to TST itself as a built-in feature.
I believe that generally "tree of tabs should be a visualized history of web browsing", because they are built on relations where you came from. Possibly such a tree is facially chaotic, but it just mirrors your actual footmarks, so you'll easily find out where is the target tab based on a map in your mind. Moreover, those relations themselves may let you recall forgotten idea you thought while you were browsing those tabs.
On the other hand, sorted tabs based on URLs or something will be beautiful - but that's all. Such sorted tabs won't help me - I'm very forgetful. In other words, I just need something which memorizes my chaotic mind as-is.
By the way, my another addon Multiple Tab Handler will help you if you frequently modify tree by drag and drop. It provides ability to select multiple tabs by Ctrl-Click or Shift-Click and you can drag selected tabs at once.
In short: shift-dragging of tabs will allow you to drop tabs to the bookmarks toolbar. Otherwise TST Bookmarks Subpanel possibly helps you.
From a change introduced at the bug 1453153 (affects on Firefox 63 and later), now Firefox doesn't allow addons to provide ability to do "creating bookmarks (or links) by drag and drop of tabs" and "detach a tab to a new window by dropping it outside of the window" in same time - those functionailities are quite exclusive. (For more technical details, see my comment at the issue #2033.)
Thus, now TST provides two different effects to gestures:
You can switch these behaviors. Please go to the "Drag and Drop" section of TST's options page. (By the way, TST Bookmarks Subpanel's small Bookmarks panel always accept drag and drop of TST's tree without such modifier keys.)
For more preference, you can use a small drag handles with a helper addon: they will appear when the cursor is hovering on left edge (or right edge for inverted appearance) of a tab for a while. You can start dragging of the tab from one of handles, with specified effect for each without any modifier key.
This is a known issue and hard (or impossible) to be fixed on TST, due to restrictions of WebExtensions API.
TST cannot detect "a new blank tab is intentionally opened by the user with the keyboard shortcut Ctrl-T", because all new tabs are initially opened with the
about:blank URL even if you open a new tab from a link.
Sadly there is no more hint to detect the context how a new tab is opened by you.
For a workaround, you can define a custom shortcut to open a new blank tab with TST's settings: assigning something shortcut for the command "Open a new tab: Child Tab" at the add-ons manager.
about:addons => click the gear button => "Manage Extension Shortcuts" => "Tree Style Tab" => "Show 40 More" => "Open a new tab: Child Tab" => set something shortcut like Ctrl+Alt+T, then you'll get a child tab as expected with the shortcut instead of the default Ctrl-T.
You need to change the TST's option
New Tabs Behavior =>
Basic control for New Blank Tab =>
Guess a newly opened tab as opened by "New Blank Tab" action, when it is opened with the URL to detect new tabs opened with any custom URL.
about:newtab by default for Firefox's native new tabs.
Ctrl-Shift-K, then type
location.hrefin the console. You'll see the actual URL of the new tab page like
moz-extension://XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/dashboard.html. The UUID part is random due to security reasons.
moz-extension://XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/html/newtab.html, the UUID part can be found at
New Tab Override=>
Thanks, but sorry, I have no plan about any donation from some reasons.
Any other contribution to this project is welcome - translation, debugging, triaging of issues, and more. If you have fixed a bug you met, please send a pull request - I'll merge it. If you have different plans about TST, please fork this project freely for your purpose, if needed.