This is a Firefox add-on which provides 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-triangle shown in a "parent" tab, so you don't need to be suffered from too many visible tabs anymore. 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, you'll open each search result link in new child tab. For more details you'll also open more descendant tabs from them. You'll easily dig and dig deeply, without lose your browsing trail - if you want to go back to the original search result, you just have to switch to the "root" tab.
- Moreover, you'll treat tree of tabs just as "grouped tabs" for similar topics.
Anyway this addon just provide uncolored "tree" feature. Please enjoy as you like!
TST has two main version lines: "renewed" (WebExtensions-based) and "legacy" (XUL-based), and one more extra line: "migration".
- "Renewed", version 2.0 and later: supports Firefox 57 and later. By technical reasons, some features are dropped from the legacy version.
- "Legacy", version 0.19.x supports only Firefox 52-56. Just maintained for people who are not migrated to Firefox 57 or later yet.
There are automated builds from latest codes.
Packages are not signed, and there are two methods to try it on your environment:
- Go to
about:debugging
and click "Load Temporary Add-on" button, then choose the downloaded file. The development build will be loaded and active until you restart your Firefox. - If you want to try it as a regular addon instead of a temporary addon, you need to use Nightly instead of stable Firefox or Firefox beta. On Nightly, go to
about:config
and setxpinstall.signatures.required
tofalse
. Then you'll be able to install such an unsinged addon.
And, you can build custom development build locally. For example, here is steps to build 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 install_dependency
$ make
Steps to build specific revision (for example bb467286d58b3da90fd1b2e6ee8a8016e3377b97):
$ cd treestyletab/webextensions
$ git checkout bb467286d58b3da90fd1b2e6ee8a8016e3377b97
$ git submodule update
$ make
Then you'll see new .xpi
files at the current directory. You can install such a development build via about:debugging
. Click Load Temporary Add-on
button and choose treestyletab/manifest.json
or a built .xpi
file.
TST provides some APIs for other addons. Some addons provide extended behavior to TST's sidebar panel:
- Multiple Tab Handler allows you to select multiple tabs and operate them at a time.
- TST-MiddleClick allows you to run "undo close tab" command on middle click on the sidebar.
- Tree Style Tab Mouse Wheel allows you to switch active tab by wheel scrolling.
- Tree Style Tab Open in Private allows you to move the tab to a private mode window.
- Tree Style Tab Closed Tabs allows you to restore closed tabs from a menu.
- Tab flip for Tree Style Tab allows you to move focus to the tab previously focused, by clicking on the active tab.
- Tree Style Tab Focus Preceding Tab on Close focuses the previous tab instead of the next tab when a tab is closed.
- Tab Unloader for Tree Style Tab allows you to unload tabs by clicking on them in the sidebar.
- Move unloaded tabs for Tree Style Tab allows you to move tabs in the sidebar without them becoming active.
- Tree Style Tab in Separate Window allows you to open the Tree Style Tab sidebar page in a new window.
- Auto Tab Discard supports the fake context menu in the Tree Style Tab sidebar.
- UnloadTabs supports the fake context menu in the Tree Style Tab sidebar.
- Bookmark Tree for Tree Style Tab allows you to bookmark and restore trees.
- TST Hoverswitch allows you to switch tabs by hovering over them.
- Tree Tabs: Cross-browser, more powerful features, and high customizability. (One large difference between TST is: the design strategy. TST is aimed to keep it simple and work together with other addons as possible as it can.)
- Tab Center Redux, Vertigo Tabs: Vertical tab bar without tree.
- sidebarTabs: Vertical tab bar with grouped tabs.
- Tab Sidebar: Vertical tab bar with grouped tabs.
Some Google Chrome extensions also provides similar feature.
All feedbacks are handled as GitHub issues.
However, there are some frequently REJECTED requests/proposals. I'm very sorry but this addon is strongly concentrated about "tree of tabs", so features not related to its name are out of purpose. Such features won't be added, even if many people love it.
Moreover, basically this is my private project and the prime user is me. Of course I'm ready to merge pull requests by any contributor, but I possibly stay it unmerged when it can break my private usecase. Then I strongly recommend you to fork this project for your usecase freely.
Here is a lis of some major requests which are reported multiple times but I marked them "won't fix". Note that some topics are just about "legacy" versions of TST.
TST is basically designed to operate tabs as tree nodes, so "flat vertical tabs" is out of purpose. Instead there are some "vertical tabs" addons, see the "Similar projects" section.
You can deactivate TST's automatic tree organizing behaviors, by some secret preferences:
- Go to TST's configuration.
- "Development" section.
- Turn on the checkbox "Debug mode". Then all internal configurations are listed.
- Turn off the checkbox "autoAttach".
- Turn off the checkbox "syncParentTabAndOpenerTab".
After that TST never attach new tabs to existing tree automatically.
If you want to drag multiple tabs at once to organize tree, Multiple Tab Handler will help you.
TST is implemented as just a sidebar panel, so there is no chance to provide horizontal version.
Due to WebExtensions API's limitation, it is currently impossible to provide native context menu for tabs on the sidebar. See also:
- 1280347 - Add ability to provide custom HTML elements working as alias of existing Firefox UI items, especially tabs
- 1376251 - Allow sidebar extensions access to native tab context menu
And, there is another bug for accesskey support of context menu items:
As described at the migration story of TST, current context menu in the sidebar is just a workaround, until any genuine WebExtensions feature to do that is landed. So I have very less motivation to improve the fake context menu by myself, sorry...
Support for Pale Moon or Waterfox
Both Pale Moon and Waterfox are based on old Firefox but TST supports only recent versions of official Firefox. Supporting for these forked Firefox means supporting for very old Firefox. To keep codes cleaner, I have to remove obsolete codes only for old versions of Firefox.
If you require TST for Pale Moon or Waterfox, sorry but please fork this project and rollback to an old revision which can work on them. Actually, there seems to be a forked version of TST for Pale Moon.
Quick access to the configuration dialog, Adding new minor (trivial) options, and so on
I have no plan to add a custom menu item to go to TST's configuration dialog - sorry but you have to go to the dialog via Firefox's Addons Manager always. If the configuration dialog is frequently required in your daily use, there is something implicit problem which must be solved in another way. Instead, please describe why you need such a fast pass to the configuration dialog. After the actual problem is solved, you won't need such a menu anymore. In other words, adding such a menu can disguise fatal problems which really should be solved.
And, 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 will kill this project, because they will cloud the important concept of TST and will bring together people who don't like my core vision about TST. Instead, sorry but please fork this project and modify it for your usecase.
In most cases - subjectively 99%, new tabs from links may be related to the source tab, and tabs from bookmarks may not be related to the current tab. For other rare cases - if you want to open the link in new sibling tab, or you want to open a bookmark as a child tab of the current, then you can do it by dragging a link or bookmark and drop it onto a tab or between tabs. Natural operations for GUI objects shoud be optimized for most major usecases.
Too high customizability for such rare usecases will just make you happy, but others including me won't - they are just confused that "why such too much choices are here?"
Keyboard shortcuts for TST's custom functions, for example, toggle show/hide of the sidebar, operations to modify tree, and so on
Due to limitations of WebExtensions APIs, the keyboard shortcut to toggle show/hide the sidebar (F1) is not changable. See also:
- 1215061 - Better keyboard shortcut support
- 1303384 - UI for re-assigning command shortcuts
- 1320332 - Support overriding existing keybinding through WebExtensions
- 1348589 - [commands] Support dynamic commands
- 1421811 - Provide a way for an extension to update the shortcut for its command
And, because Firefox already have very large number of keyboard shortcuts, I have no plan to provide various shortcuts for TST's each feature by default. In future versions, if generic keyboard shortcut customizability is introduced Firefox, I'll define optional commands for user-defined keyboard shortcuts.
High-power management of tree, like sorting child tabs, auto-modification of tree, renaming of tabs, and so on
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.
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
There is a plan to implement an input field to write custom CSS rules, so it will work like as userChrome.css
.
See the code snippets and details of inspectation for the sidebar contents.
Thanks, but sorry, I have no plan about any donation from some reasons. The largest reason is: because I want to keep me as the prime user of this project. I want to keep having a privilege to say "no" about requests not matched to my vision. My hand is already full to maintain this addon for my usecase.
If you fixed a bug you met, please send a pull request - I'll merge it. If you have different plan about TST, please fork this project freely for your purpose, if needed.