Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TabClip Plus

A Firefox (MV3) extension that copies browser tabs to the clipboard in a variety of formats.

Manifest MV3
Min Firefox 115.0
License MPL-2.0
Localization English (default), Traditional Chinese (zh-TW)

What it does

  • Copy the current tab, highlighted tabs, all tabs in this window, or all tabs across all windows.

7 built-in formats (link, URL, title + URL, Markdown, CSV, JSON, HTML table) + user-defined custom formats.

  • Right-click on a link, image, video, audio, selected text, or any tab to copy directly without opening the popup.
  • 3 keyboard shortcuts cover the most common scopes.
  • Desktop notification + colored toolbar icon flash on success / error.
  • Auto-switches the toolbar icon for Firefox dark theme.
  • Sync your configuration via Import / Export, reset to defaults anytime.

Installation

From AMO (when published)

Search "TabClip Plus" on addons.mozilla.org and click Add to Firefox.

Temporary / development load

  1. Run git clone (or download) and cd tabclipplus.
  2. Open about:debugging#/runtime/this-firefox in Firefox.
  3. Click Load Temporary Add-on… and select dist/manifest.json.

The extension stays loaded until Firefox restarts.

Keyboard shortcuts

Action Shortcut
Copy this tab Alt+Shift+1
Copy all tabs in this window Alt+Shift+2
Copy all tabs Alt+Shift+3

Shortcuts can be reassigned at about:addons → TabClip Plus → PreferencesManage Extension Shortcuts.

Right-click menu

  • On a tab or page: "Copy Tab" + "Copy Tab As…" (format submenu) + "Copy All Tabs in Window".
  • On a link, image, video, audio, or selection: "Copy" with a format submenu.

The "Copy Tab As…" submenu can be hidden in Options → Context menu format submenu.

Popup

The popup exposes four scope buttons, a format dropdown, and a status line. Modifier keys select alternate formats for the next copy only:

  • Alt → uses the 2nd format in the dropdown.
  • Ctrl → uses the 3rd format.

Arrow Up / Arrow Down move between scopes; Enter copies; Esc closes.

Custom formats

Open Options → Add / edit custom format to create a template using these placeholders:

Placeholder Meaning
{title} Tab title
{url} Tab URL
{index} 1-based position within the current scope
{windowIndex} 1-based window index (only meaningful with "All tabs in all windows")

You can also supply an optional Header, Footer, and Row separator.

Options

Open the options page from the toolbar popup's footer, or from about:addons → TabClip Plus → Preferences.

Sections:

  • General — popup mode, tab counts, pinned-tab handling, context menu, notifications, dark icon, etc.
  • Scopes — reorder, hide, restore.
  • Formats — reorder, hide, edit custom formats.
  • Backup — export, import, reset.

All settings are stored locally in browser.storage.local. Nothing is uploaded.

Development

Prerequisites

  • Node.js ≥ 18
  • Firefox ≥ 115

Run unit tests

npm test

Output: formats 16 + settings 45 + popup 4 + actions 30 + copy 8 + tabs 8 = 111 passed.

Lint the manifest and code

npx web-ext lint --source-dir dist --self-hosted

Expected: 0 errors, 4 warnings (2 locales × 2 from strict_min_version: 115 not supporting the data_collection_permissions key on older Firefox — non-blocking).

Build a distributable .xpi

npx web-ext build --source-dir dist --artifacts-dir web-ext-artifacts --overwrite-dest

Output: web-ext-artifacts/tabclip_plus-0.1.0.zip (gitignored).

⚠️ The .xpi produced above is unsigned. Firefox will reject it from the normal about:addons install path (only AMO-signed add-ons are accepted there). To test the packaged build, either:

  • Extract it (unzip tabclip_plus-0.1.0.zip -d tabclip_plus-pkg) and load tabclip_plus-pkg/manifest.json in about:debugging (same as development load).
  • Submit to AMO for signing, then download the signed .xpi — that's the file real users will install.

For the public release flow, see AMO_LISTING.md (suggested listing copy and submission notes).

Clean-room implementation

This project is a clean-room reimplementation inspired by the functionality of the Tab Copy Chrome extension by Hans Meyer (https://github.com/hansifer/tab-copy).

  • No source code from the original project has been copied, translated, or directly referenced.
  • The implementation is based solely on the publicly documented feature set and observed user-facing behavior.
  • All user interface design, icons, and code are independently developed.

Attribution

  • Icons: Lucide — clipboard-copy / clipboard-list, ISC. See dist/icons/ATTRIBUTION.md.

License

MPL-2.0 — see LICENSE.

About

A Firefox (MV3) extension that copies browser tabs to the clipboard in a variety of formats.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages