Tree Style Tab (aka TST)
This extension to Firefox provides the ability to work with tabs as "trees".
New tabs opened from the current tab are automatically organized as "children" of the current tab. Such "branches" are easily folded (collapsed) by clicking on the arrow shown in the "parent" tab, so you no longer need to suffer from too many visible tabs. If you want, you can restructure the tree via drag and drop.
* Such a tree of tabs will behave like a visual browsing history for you. For example, if you see a list of search results for a topic, each search result link will open in new child tab. New tabs opened from these "child" tabs will appear as descendants of their originating tabs. You'll easily dig and dig deeply, without losing your browsing trail - if you want to go back to the original search result, you just have to switch to the "root" tab. * Moreover, each tree will reflect a group of tabs on a similar topic.
Please enjoy as you like!
Release builds
- The signed package of the latest version is available at Mozilla Add-ons (AMO). See also the
strict_min_versioninformation in the install manifest to know the minimum supported Firefox version. - Old packages are also downloadable on the AMO website. TST sometimes drops outdated versions of Firefox, but you may find old packages that support the dropped versions of Firefox.
- For even older versions of Firefox, Waterfox, or Palemoon, Classic Add-ons Archive possibly contains legacy packages of TST.
Development builds
- Builds for each commit are available at "Artifacts" of the CI/CD action.
treestyletab-we.xpi.zip manually to extract the XPI package file treestyletab-we.xpi, otherwise you'll see an error about invalid manifest.
Development builds are not signed, so you need to load them by an atypical method. (Please click this section to see instructions.)
There are two methods to try them in your environment:
- Go to
about:debuggingand click "Load Temporary Add-on" button, then choose a XPI file. The development build will be loaded and active until you restart Firefox. Note: don't uninstall the remporarily installed dev build even if you finished a test, because uninstallation clears all configs of TST. Instead you just restart Firefox, then temporarily installed build are unloaded and the previously installed version will go back. - If you want to try it as a regular addon instead of a temporary addon, you need to use Nightly instead of the stable Firefox or Firefox beta. On Nightly, go to
about:configand setxpinstall.signatures.requiredtofalse. Then you will be able to install such an unsigned XPI file.
$ sudo apt install git nodejs npm jq zip
$ 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 .xpi file.
Extensions that extend TST
TST provides an API for other extensions. Some extend the behavior of TST's sidebar panel. See also the list of known helper addons.
Similar projects
There are some similar project by someone not me providing similar features:
Vertical tab bar without tree or grouping
* Tab Center Reborn
* Vertical Tabs Reloaded
* Vertigo Tabs
* Sidebar+
* Tabs2List
Listing tabs with a search field
Some extensions provide a pop-up list of tabs with a search field that complements TST:
* Tab Manager v2
* TabSearch
* Tabby - Window & Tab Manager
* Tab Master 5000
* Power Tabs
* Tabs2List: provides not only sidebar panel but a toolbar button with a popup panel also. It has an option to show a search field in the panel by default.
for Google Chrome and Chromium
* Sidewise Tree Style Tabs
* Tabs Outliner
* Treely: Tree Style Tab Manager
* Tree Style Tab
for Vivaldi
* Tree Tabs
Requests, proposals, or unexpected trouble from bugs
All feedback is handled as GitHub issues. Please read FAQ below, before you post any new feature request.
Basic project policy
TST is basically designed to be used as a permanently-shown tab management UI, an alternative of Firefox's native tab bar.*
* To avoid users' confusion, TST respects Firefox's built-in behavior and features regarding the tab bar as possible as it can: tab context menu, gestures, etc., except features impossible to be implemented with regular WebExtensions API.
TST is designed to work with "tree of tabs"*.
* TST's tree is designed to work as an extended memory for your brain. To satisfy this concept, TST is designed to guess the relationship between tabs automatically, from the context.
* Better usability for ungrouped flat tabs in a vertical tab bar is an added benefit.
* Any feature request unrelated to these points may be rejected, even if many people love it.
* For example: session management, search field, detailed focus control of tabs, and so on.
Instead of adding more features, I hope to make TST compatible with other tab-related extensions*.
If it is required for better compatibility, I have added public APIs for other extensions, and there are many implementations using this API.
If you need any new APIs, please file API proposals in the issue tracker.
* Here is the basic policy about decision to accept or reject feature requests:
* If Firefox has the option, TST also should provide similar option to emulate it. (ex. browser.tabs.closeTabByDblclick emulation, browser.tabs.selectOwnerOnClose emulation, warnings for closing multiple tabs, style switch for leftside/rightside sidebar)
* If TST imitates Firefox's UI and Firefox doesn't provide any options to control them, TST basically don't provide options for them. (ex. visibility options for imitated context menu commands)
* If it is essential for accessibility, TST should provide the option. (ex. text direction option, animation effects, "High Contrast" theme, color switch for the toolbar button icon)
* If it is impossible to be done via customizations with user stylesheets, TST should provide the option. (ex. unfaviconizing of pinned tabs, positioning options for new tabs, drag-and-drop behavior)
* If it is already available during combination with other extensions, TST don't provide options for them. (ex. coloring of tabs, suspending of tabs, detailed control of tab focus, and other features covered by existing helper extensions](https://github.com/piroor/treestyletab/wiki/Helper-addons-extending-functionality-of-TST))
* If it couldn't be (or hard to be) done with any of existing methods listed above, it can become a new built-in, even if it looks not related to any of native tab features or tree management.
* TST supports official latest releases of Firefox: both regular and ESR.
* We keep codes compatibe with both these reelases.
Features depending on new APIs not available on the latest ESR are disabled on ESR, but we may implement that.
Changes incompatible to the latest ESR will be left pending until a new ESR is released.
Please remind that some existing features or options may violate this policy due to historical reasons.
FAQ / frequently rejected requests/proposals
Other browsers support
Support for Pale Moon, Waterfox, and other Firefox forks
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.
Support for other browsers based on Chromium (ex. Google Chrome) and WebKit (ex. Safari)
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 use Firefox.
(But there are some alternatives developed by others.)
Support for Firefox Mobile
Appearance
How to hide the top tab bar (horizontal tab strip)?
userChrome.css file.
But please remind that I - the original author of TST - never recommend such an usage, because TST doesn't cover full features of the native tabs due to restrictions of WebExtensions API so some tab features become inaccessible:
* "Autoplay blocked" message and the "Play tab" button image
!(screenshot)
* "Share" tab context menu command
* "Send Tab to Device" tab context menu command. (TST currently simulates it but you cannot send tabs to mobile devices.)
and I also believe that TST is not enough stable to replace Firefox's tab bar completely.
Thus I usually use TST together with horizontal tab bar for safety.
If I hid the tab bar on my environment in my daily use, I might maintain the userChrome.css hack by myself, but actually I don't do that.
So guidance to hide the tab bar need to be maintained by people who really use.
I think it is a nightmare for regular people who don't know how to research and find out solutions with debugger.
I intentionally don't describe details how to hide the horizontal tab bar, to save people from critical troubles.
I say again, I don't recommend you to hide the horizontal tab bar if you cannot write any suitable userChrome.css hack by yourself.
I have no motivation to investigate how to hide the horizontal tab bar, because I'll never do that and it may lead people to troubles.
How to apply GTK+ theme color on Linux?
GTK_THEME in your .profile or somewhere like: export GTK_THEME= (I don't know why but CSS system colors on Firefox won't respect GTK's theme colors, if this environment variable is missing.)
* Firefox's about:config
widget.content.allow-gtk-dark-theme=true (not default)*
* widget.content.gtk-theme-override=unset (default)
* TST's options (pattern 1, using "Proton" theme)
* "Appearance" => "Theme" => "Proton" (default)
* "Development" => "Color scheme" => "System Color" (default)
* TST's options (pattern 1b, using "Photon" theme)
* "Appearance" => "Theme" => "Photon" (default)
"Advanced" => "Extra style rules..." => paste these lines (not default)*
* "Development" => "Color scheme" => "System Color" (default)
* TST's options (pattern 2, using less extra style rules)
"Appearance" => "Theme" => "High Contrast" (not default)*
* "Advanced" => "Extra style rules..." => no active style rule (default)
* "Development" => "Color scheme" => "System Color" (default)
For more details, please see also the discussions in the issue #2667.
How to apply colors customized via Firefox Color?
I cannot find out suitable code snippet satisfying my demand. Is there any reference document?
Feature requests
Horizontal tab bar
Better support for non-indented tabs
I don't need an automatically organized tree, I want to organize trees myself
autoAttach checkbox.
5. Clear the ☐ syncParentTabAndOpenerTab checkbox.
With those preferences unset, TST will no longer automatically attach new tabs to a tree.
To select multiple tabs, for drag-and-drop: Shift/Ctrl-click. Multiple Tab Handler has additional features.
Add more minor/trivial options
ext+treestyletab:options – your bookmark will open the options page in a tab.
userChrome.css. There's advice for activation of userChrome.css and style rules to hide specific context menu items.
I have no plan to add a configuration UI for items that are native to the tab context menu of Firefox.
Here are some comments describing my reasons for this decision.
(There is another FAQ topic, please see it also.)
mouseover and long-press of a key.
High-power management of tree, like sorting child tabs, auto-modification of tree, renaming tabs, and so on
Configuration UI to change appearance of tabs in the vertical tab bar, for example, color, height, visibility of the scrollbar, transparency of tabs, and so on
userChrome.css.
See the code snippets and details of inspection for the sidebar contents.
Add an option to change the keyboard shortcut from F1
Better compatibility with session manager extensions, or add high-power session management feature
openerTabId of tabs.Tab.
Tab Session Manager (aka TSM) is one of examples.
(Moreover, TST also provides an API to open tabs with structure more safely.
TST and the session manager extension will work together more smoothly, if it opens tabs via the API.)
In other words, TST can't collaborate with any other extension if it does not give openerTabId as a hint to construct trees.
On such cases it is required to improve the other collaborator extension itself.
Sadly it beyonds my power and needs a cooperation by the extension's author.
As a workaround, you can use TST's bookmarking feature to save trees of tabs.
Select tabs (via Ctrl-click or Shift-click on tabs in the sidebar) and choose "Bookmark Tabs..." from the context menu, then TST creates a bookmark folder and bookmarks under the folder from selected tabs.
After that please right-click on the bookmark folder and choose "Open All as a Tree", then you'll get tabs with restored tree structure.
Better compatibility with session manager extensions, or add high-power session management feature
openerTabId of tabs.Tab.
Tab Session Manager (aka TSM) is one of examples.
(Moreover, TST also provides an API to open tabs with structure more safely.
TST and the session manager extension will work together more smoothly, if it opens tabs via the API.)
In other words, TST can't collaborate with any other extension if it does not give openerTabId as a hint to construct trees.
On such cases it is required to improve the other collaborator extension itself.
Sadly it beyonds my power and needs a cooperation by the extension's author.
As a workaround, you can use TST's bookmarking feature to save trees of tabs.
Select tabs (via Ctrl-click or Shift-click on tabs in the sidebar) and choose "Bookmark Tabs..." from the context menu, then TST creates a bookmark folder and bookmarks under the folder from selected tabs.
After that please right-click on the bookmark folder and choose "Open All as a Tree", then you'll get tabs with restored tree structure.
How to open new "group (folder) tab" intentionally?
ext+treestyletab:group as a stable alias across installations. For example:
|Title|URL|What will happen|
|-----|---|-------|
|New Group|ext+treestyletab:group?title=New%20Group|Creates a new permanent group tab (it won't be closed automatically by TST.)|
|New Temporary Group|ext+treestyletab:group?title=New%20Temporary%20Group&temporary=true|Creates a new temporary group tab. It will be closed automatically by TST when there is no child.|
|New Quite Temporary Group|ext+treestyletab:group?title=New%20Temporary%20Group&temporaryAggressive=true|Creates a new temporary group tab. It will be closed automatically by TST when there is only one child tab is left.|
There are some more URL options but they are quite internal and unstable. Instead it is recommended to create bookmarks from existing group tabs whici is opened with URL like moz-extension://xxxxx/resources/group-tab.html?..., after you configure it with their UI (checkboxes and title input field.) TST automatically detects creation of bookmarks with such internal URLs and updates the saved URL to an alias prefixed with ext+treestyletab:group?.
Troubles, unexpected behaviors
I cannot drop tabs to the bookmarks toolbar to create bookmarks. (#2033)
New tab is not opened as a child tab, if it is opened by something other extension
openerTabId of tabs.Tab.
Tabs opened with the information will automatically organized as children of the opener tab, by TST.
In other words, TST can't collaborate with any other extension if it does not give openerTabId as a hint to construct trees.
On such cases it is required to improve the other collaborator extension itself.
Sadly it beyonds my power and needs a cooperation by the extension's author.
New tab is not opened with expected position and container, when it is opened as a blank tab instead of the default new tab page. (#2176)
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.
Go to 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.
New tab is not opened with expected position and container, when it is opened with a custom URL instead of the default new tab page. (#2485)
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.
It is about:newtab by default for Firefox's native new tabs.
* If you use any addon providing a fixed custom new tab page (ex. Momentum), open a new tab and show the developer tool with the keyboard shortcut Ctrl-Shift-K, then type location.href in 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.
* If you use New Tab Override to set a custom URL for new tabs, you cannot get the actual internal URL of new tabs with the method above, because it is immediately redirected.
It is moz-extension://XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/html/newtab.html, the UUID part can be found at about:debugging#/runtime/this-firefox => Extensions => New Tab Override => Internal UUID.
Tabs become flatten suddenly / tree structure is lost accidentally
* Tab Session Manager supports saving sessions with tree information. Please remind that you need to activate compatibility option manually.
* TST allows you to take a snapshot of tabs tree to a bookmark folder. Select all tabs (via shift-click, ctrl-click, or "Select All Tabs"), and bookmark selected tabs via the "Bookmark Tabs..." command in tabs context menu on the sidebar panel. Created bookmarks will have > marks in their title, it means their tree level. Right click on the bookmark folder and choose the command "Open All as a Tree", then TST will open tabs from the bookmark folder with tree structure constructed from the > marks of their title.
"Send Tab/Tree to Device" does not work (#2991)
Other topics
How to donate to this project?
How can I translate Tree Style Tab?
Privacy Policy
This software does not collect any privacy data automatically, but this includes ability to synchronize options across multiple devices automatically via Firefox Sync. Any data you input to options, and URL of tabs you send to other devices may be sent to Mozilla's Sync server, if you configure Firefox to activate Firefox Sync.
このソフトウェアはいかなるプライバシー情報も自動的に収集しませんが、Firefox Syncを介して自動的に設定情報をデバイス間で同期する機能を含みます。 Firefox Syncを有効化している場合、設定画面に入力されたデータおよび他のデバイスに送信するよう指示したタブのURLは、Mozillaが運用するSyncサーバーに送信される場合があります。