Skip to content

MarcoBalossini/Houdini

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

33 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Houdini

Houdini brings Opera GX tab workspaces straight into Firefox's own sidebar. Pick a panel and every tab that doesn't belong disappears.

Houdini would approve 🎩

Houdini

Houdini demo


What it does

A panel is a named group of tabs. Only one panel is visible at a time: switch to it and let Houdini make its tabs appear and make every other tab disappear. Hidden tabs aren't closed β€” they keep their state and reappear the moment you switch back. Tag a tab once and it stays with its panel across restarts.

N.B.: Houdini uses no custom sidebar and no replacement tab strip. Just Firefox's native tab bar.


Features

Feature What it gives you
Panels Group tabs into named, icon-tagged panels. Switch to focus one; the rest hide.
Panel colors Give a panel a color and the whole browser chrome (tab bar, toolbar, URL bar, sidebar, menus) tints to match while it's active.
Panel containers Link a panel to a Firefox container; every tab opened in that panel β€” new or existing β€” lives in it.
Toolbar popup Click a panel to switch; add, rename, recolor, reorder (drag) and remove inline.
Dark & light theme Popup and settings follow your system theme, with a manual override.
Cross-panel search Find a tab in any panel by title or URL; jump to it and Houdini switches panels for you.
Keyboard shortcuts Cycle or jump to panels from the keyboard; remap keys in Settings.
Sub-panel tab grouping Optionally drop tabs you open from a link into their opener's native Firefox tab group.
Automatic snapshots Periodic backups of your panels + tab assignments, with one-click rollback.
Backup & restore Export your panels + tab assignments to a file; re-import on another machine.
Sidebery import Migrate your existing Sidebery panels and tab grouping.

Panels & switching

Open the toolbar popup to see every panel with its live tab count. Click a panel to switch β€” the active one is highlighted with its color. The β‹― button expands a panel inline to rename it, pick an icon or color, or remove it. Drag rows to reorder; + New panel adds one.

Panel containers

Link a panel to one of Firefox's own containers (Multi-Account Containers identities) from the toolbar popup: click the square swatch next to a panel's color to pick one. From then on:

  • New tabs opened while that panel is active β€” Ctrl+T, a link, the address bar β€” open in its container.
  • Existing tabs already tagged to that panel move into the container too, in one shot.

Unlinking a container (pick "None") moves the panel's tabs back to the default container the same way. Moving a tab between containers means closing and reopening it β€” Houdini keeps its position, pinned/hidden state and tab-group membership, and loads it lazily unless it's the tab on screen, so linking a container to a busy panel doesn't stall the browser.

Cross-panel tab search

The search bar at the top of the popup filters every open tab β€” across any panel β€” by title or URL. Each result shows which panel it belongs to. Click it and Houdini switches to that panel and focuses the tab.

Keyboard shortcuts

Switch panels without touching the mouse. Defaults:

Shortcut Action
Alt+. Next panel
Alt+, Previous panel
Alt+P Open the Houdini popup
unset Jump straight to panel 1–8

Remap any of them β€” or assign the panel-jump keys β€” right from Settings β†’ Keyboard shortcuts: click Set, press your combo (needs Ctrl or Alt), done. No about:addons detour.

Sub-panel tab grouping

Off by default. When enabled (Settings β†’ Tab grouping), any tab you open from another β€” a link in a new tab, "open in new tab" β€” joins its opener's native Firefox tab group. If the opener isn't grouped yet, Houdini starts a group from the pair. Grouping is one level deep: a sub-tab simply adopts its opener's group, so a whole chain of links lands in the same group rather than nesting.

Needs a Firefox version with the tab-groups API β€” the toggle disables itself and says so if yours doesn't have it.

Automatic snapshots & rollback

Houdini periodically saves a snapshot of your panels and which tab belongs where. Open Settings to:

  • set the snapshot period (in hours),
  • set the maximum number of snapshots to keep (older ones are pruned),
  • take a snapshot on demand,
  • roll back to any saved snapshot, or delete ones you don't need.

Rolling back restores the panel list and re-tags your tabs to match the snapshot β€” reopening tabs that were since closed and closing ones opened afterward, so the window matches that point in time.

Snapshots use Firefox alarms, so the schedule survives browser restarts: if Firefox was closed when a snapshot was due, it runs on next launch.

Backup & restore

Snapshots live inside the browser profile β€” fine for quick rollbacks, gone if the profile is. For a portable copy, Settings β†’ Backup & restore β†’ Export saves your panels and tab assignments to a houdini-backup-YYYY-MM-DD.json file. Import it (file or pasted JSON) on another machine or after a reinstall to recreate the exact same setup.

⚠️ Restoring is destructive β€” it replaces all current panels and re-tags every open tab, just like a rollback. You'll be asked to confirm.


Installation

Install from the Firefox Add-ons store: Houdini


Importing from Sidebery

Switching from Sidebery? Houdini can recreate your panels and re-tag your open tabs to match.

Open Settings (from the popup) β†’ Import from Sidebery. You can either pick a Sidebery backup file or paste the dump JSON. Both replace your current Houdini panels and re-tag every open tab.

⚠️ Import is destructive β€” it replaces all existing Houdini panels and tab assignments. You'll be asked to confirm.

Getting your Sidebery data

A panels-only Sidebery backup recreates the panels but tags no tabs. To also re-tag your open tabs, grab a full storage dump:

  1. Go to about:debugging β†’ This Firefox.

  2. Find Sidebery in the list β†’ click Inspect.

  3. Open the Console tab.

  4. Paste and run:

    (async () => {
      const d = await browser.storage.local.get(['sidebar','tabsDataCache','snapshots','ver']);
      copy(JSON.stringify(d));
      console.log('Copied to clipboard β€” paste into Houdini.');
    })();
  5. The JSON is now on your clipboard. Paste it into the Import from Sidebery box in Houdini's Settings and click Import pasted JSON.

Houdini reads Sidebery's open-tab cache (tabsDataCache) to match each tab's URL to its panel; tabs whose URL it can't match land in the first panel.


Resetting

Need a clean slate? Settings β†’ Reset collapses everything to a single default panel and moves all tabs into it. Like import, it's destructive and asks for confirmation.


Permissions

Permission Why
tabs, tabHide Read tabs and show/hide them per panel.
sessions Tag each tab with its panel, persisting across restarts.
storage Store panels, settings and snapshots.
alarms Schedule automatic snapshots that survive restarts.
menus Add the "Move to panel" tab right-click entry.
tabGroups Put sub-tabs into native tab groups (when grouping is enabled).
contextualIdentities, cookies List your containers and open/move tabs into a panel's linked one.

Houdini collects no data and talks to no server β€” everything stays in your browser.


License

See LICENSE.

About

Houdini brings Opera GX tab workspaces straight into Firefox's own sidebar. Pick a panel and every tab that doesn't belong disappears. Houdini would approve 🎩

Topics

Resources

Stars

Watchers

Forks

Contributors

Languages