Skip to content

aguacasa/JumpTab

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Arc Tab Switcher

A Chrome extension (Manifest V3) that replicates Arc's tab switcher: a keyboard-driven overlay for cycling through the 5 most recently used tabs, styled after macOS Cmd+Tab.

Hold Control, tap Q to cycle forward. Release Control to jump to the highlighted tab. Quick-tap to toggle to the previous tab.

Shortcuts (Mac)

Key Action
Ctrl+Q Open switcher / cycle forward through MRU tabs
Ctrl+Shift+Q Cycle backward
Release Ctrl Commit to highlighted tab
Quick tap Ctrl+Q Jump straight to previous tab

Ctrl here is the physical Control key (mapped as MacCtrl in the manifest). Chrome's manifest syntax treats the Ctrl token as Command on Mac, which is why the command uses MacCtrl+Q — Command+Q is already the "Quit Chrome" shortcut.

You can rebind these at chrome://extensions/shortcuts.

Install

  1. Clone or download this repo.
  2. Open chrome://extensions/ and enable Developer mode (top right).
  3. Click Load unpacked and select the project folder.
  4. Verify the shortcut binding at chrome://extensions/shortcuts.

How it works

  • background.js — Service worker maintaining a per-window MRU list of tab IDs, command dispatch, favicon prefetching + base64 data-URL conversion (to bypass page CSP on favicon loads), and cycle state management. Commands are serialized through a promise chain to prevent session races. Favicons are cached in memory and prefetched on startup + tabs.onUpdated.
  • overlay.js — Content script injected on every page at document_end. Renders a Shadow-DOM overlay, listens for Ctrl keyup and blur to commit, and handles re-injection into orphaned isolated worlds after extension reload.
  • manifest.json — MV3 manifest with tabs, storage, scripting permissions and <all_urls> host access.

Limitations

The overlay cannot render on chrome://, chrome-extension://, the Web Store, or the PDF viewer — content scripts are not allowed there. On those pages the extension falls back to active tab-switching (no visual), and cycles through all 5 MRU tabs including the origin so you can always return to it.

Control release detection requires an injectable origin tab. If you cycle onto a restricted tab and release Control there, the idle timer (8s) handles the commit.

Files

/manifest.json   — MV3 manifest + command bindings
/background.js   — service worker (MRU, commands, favicons, session state)
/overlay.js      — content script + Shadow-DOM overlay

Debug logging

Both files have a const DEBUG = true; at the top. Flip to false to silence the [TS] / [TS-cs] console output. Service worker logs appear in the extension's dedicated DevTools window (chrome://extensions/ → "service worker"); content script logs appear in the page's DevTools console.

About

Arc-style MRU tab switcher for Chrome — hold Ctrl, tap Q to cycle recent tabs with a translucent overlay

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors