This repository contains the source code for a Chrome extension that allows to bookmark tab groups.
Lightweight, Manifest v3 (MV3) extension that automates bookmarking tabs within tab groups. It offers several advantages:
- Seamless Integration: Uses native bookmarking functionality and does not create separate folders or its own storage.
- Accurate Recognition: Correctly identifies and captures tab group names and colors.
- Multi-Window Support: Queries tabs across multiple windows.
- Optional Tab Closure: Provides the option to close bookmarked tabs after saving.
- Flexible Naming: Suggests an autogenerated timestamp, but also allows searching existing folders for specific placement.
Initially, the native "Bookmarks > Bookmark all tabs" feature lacked support for tab groups, storing them all in a single folder and ignoring their structure. This extension was created to address this limitation.
At the time, there was no such simple, lightweight, and open-source extension available that could make bookmarking easier.
However, significant developments have since occurred:
Bookmarks->Boomark all tabsnow recognizes tab groups and creates individual folders for them.- The #tab-groups-save flag was introduced.
Despite these advancements, this project remains relevant for several reasons:
-
When using
Bookmarks->Boomark all tabs, there is no option to target specific groups, aside from creating a separate browser window and relocating tab groups to it. This process can be time-consuming and inconvenient, particularly when managing a large number of tabs that are suspended. -
The
#tab-groups-savefeature requires enabling a flag and operates outside the regular bookmarking system Saved tabs cannot be directly integrated into existing folders nor can be exported as the regular Netscape Bookmarks file. This format is convenient for transferring bookmarks across browsers and environments, as well as many libraries and scripts support it. In this regard, the feature resembles Firefox containers, which are suited for specific, isolated groups like "work" or "videos" but not for frequently changing tab groups.
This project utilizes the following libraries, tools and technologies:
- JavaScript (ECMAScript 2022)
- jQuery
- Fomantic-UI, the official community fork of Semantic-UI
Development is enhanced by:
Run a regular dependency resolution routine:
npm installLinting can be started with the following command:
npm run lintTo format code using the Prettier, run this command:
npm run formatBuilding can be performed using as follows:
npm run buildThis creates the dist directory with the following structure:
dist/
├── bookmark-tab-groups/
│ ├── ...
│ └── manifest.json
├── bookmark-tab-groups.crx
├── bookmark-tab-groups.zip
└── key.pem
where:
dist/bookmark-tab-groups: Unpacked extension bundle.dist/bookmark-tab-groups.zip: Unsigned extension.dist/key.pem: Private key for signing (automatically generated if not provided).dist/bookmark-tab-groups.crx: Signed extension.
Note: Minification is not performed due to the small code size. But it can be added using rollup plugins like @rollup/plugin-terser or rollup-plugin-minify.
This project is licensed under the MIT License.
