This extension disables tabbed browsing. Rather than opening new tabs, your browser will open windows wherever possible.
- Why would you want to disable tabs?
Because I always find it difficult to find the tab I'm looking for. Tabs obscure the browsing experience, and I find it far easier to browse the web when I can see all of my windows at once. Most modern operating systems can arrange windows elegantly and efficiently, making tabs defunct.
- If you don't like tabs, then just don't use them! You don't need an extension for that
Increasingly, browsers force tabs on you by default. It does not provide an option to default to using windows rather than tabs. This extension overrides that behaviour to open windows instead, to make it seamless for users like myself.
- Why should I use Tab-less rather than New Tab, New Window?
- Tab-less does not require any access to your browsing history at all (most extensions require access to your browsing history or the current page you're viewing).
- It's designed to be as light-weight and simplistic as possible.
- There's no magic, it just moves tabs to a new window, whenever they're opened (using the default settings for a new window).
This is a WXT browser extension written in TypeScript. After cloning, run npm install, then use:
npm run dev— launch the extension in Chrome with hot reloading (npm run dev:firefoxfor Firefox)npm test— run the unit tests with Vitestnpm run lint— lint with ESLintnpm run compile— type-check with TypeScriptnpm run build— build the production extension into.output/npm run zip— package the build as a zip for store submissionnpm run analyze— build and open a bundle-size visualisationnpm run clean— remove WXT's generated files and cachesnpm run promo— regenerate the Chrome Web Store promo tiles fromassets/promo_tile.svg
macOS note: if you have libvips installed globally (e.g. via Homebrew
vips), install withSHARP_IGNORE_GLOBAL_LIBVIPS=1 npm installsosharpuses its prebuilt binary instead of trying — and failing — to build from source.
WXT builds the same codebase for multiple browsers:
npm run build:firefox/npm run zip:firefox— Firefoxnpm run build:edge/npm run zip:edge— Microsoft Edgenpm run build:safari— Safari. This produces a web-extension build in.output/safari-mv3/; turning it into a distributable Safari app extension still requires Apple's tooling on macOS —xcrun safari-web-extension-converter .output/safari-mv3(which opens an Xcode project) followed by signing with an Apple Developer account.
WXT can upload and submit new versions to the Chrome Web Store, Firefox Add-ons, and Edge Add-ons:
npm run submit:init— one-time interactive setup that writes store API credentials to.env.submit(git-ignored).npm run submit— builds fresh zips for all three stores and submits them for review in a single command. Extra flags are forwarded to WXT, e.g.npm run submit -- --dry-runchecks authentication without uploading, andnpm run submit -- --chrome-skip-submit-reviewuploads without submitting.
All of the code for this extension is open-sourced and can be found online at https://github.com/iainbeeston/tab-less. I'd be happy to receive any feedback, hear about any bugs or accept any pull-requests for new code at that address.