Archeo brings a couple of Arc-inspired interactions to Google Chrome:
- Copy Link copies the active page URL and shows a compact confirmation pill.
- Recent Tabs opens a visual most-recently-used tab switcher. Keep holding Control and tap Tab to move forward or Shift+Tab to move backward; release Control to switch, or press Escape to cancel. Adjacent tabs from the same Chrome tab group share a subtle wrapper with the group's name and color.
Archeo is a Manifest V3 extension with no build step, external dependencies, analytics, or network services.
- Download or clone this repository.
- Open
chrome://extensionsin Chrome. - Enable Developer mode.
- Click Load unpacked and select the repository folder.
- Open
chrome://extensions/shortcutsand confirm the internal shortcuts:- Copy Link:
Shift+Command+X - Recent Tabs:
Control+Shift+. - Recent Tabs Backward:
Control+Shift+U - Finish Recent Tabs:
Control+Shift+,
- Copy Link:
Chrome reserves Shift+Command+C for DevTools and Control+Tab for native tab navigation. Extensions cannot override those shortcuts directly, so macOS users can install one of the included remapping adapters to get the intended gestures.
| Adapter | Cost | Copy Link | Hold/release MRU | Included config |
|---|---|---|---|---|
| Karabiner-Elements | Free, open source | Yes | Yes | karabiner/archeo.json |
| Hammerspoon | Free, open source | Yes | Yes | hammerspoon/archeo.lua |
Enable only one Archeo remapping adapter at a time. Running Karabiner-Elements and Hammerspoon mappings together will send every command twice.
The Chrome-only complex modification is included at karabiner/archeo.json. It maps:
Shift+Command+C→ Archeo Copy LinkControl+Tab→ Archeo Recent TabsControl+Shift+Tab→ Archeo Recent Tabs backward- While selecting,
Control+Left/Right Arrow→ move the highlight left/right Command+Option+C→ Chrome's original element inspector
Copy the configuration into Karabiner-Elements:
mkdir -p ~/.config/karabiner/assets/complex_modifications
cp karabiner/archeo.json ~/.config/karabiner/assets/complex_modifications/archeo.jsonThen open Karabiner-Elements → Complex Modifications → Add predefined rule and enable Archeo: Arc-style shortcuts in Chrome.
If you use the common Fn+I/J/K/L → arrow keys modification, keep Archeo's rule above it. While the MRU rail is active, Archeo handles Control+Fn+J/L directly; outside the rail, your existing Fn arrow layer continues to work normally. Karabiner does not pass a key generated by one complex modification through later complex modifications, so ordering alone cannot make a generated arrow trigger Archeo.
The mappings apply only to Google Chrome, Chrome Beta/Dev/Canary, and Chromium. Reload Archeo from chrome://extensions after changing its files.
The configuration also sends Archeo's private Finish Recent Tabs shortcut when Control is released. This makes closing and committing the selector reliable even when a page intercepts the browser's Control key-up event.
The Hammerspoon adapter provides the same Chrome-only mappings and observes Control release directly:
-
Install Hammerspoon and grant its requested Accessibility permission.
-
Copy the adapter into your Hammerspoon configuration:
mkdir -p ~/.hammerspoon cp hammerspoon/archeo.lua ~/.hammerspoon/archeo.lua
-
Add this line to
~/.hammerspoon/init.lua:require("archeo")
-
Choose Reload Config from the Hammerspoon menu.
-
Disable Archeo's Karabiner-Elements rule if it is enabled.
System Settings → Keyboard → Keyboard Shortcuts → App Shortcuts can only assign shortcuts to commands exposed in an application's native menu bar. Chrome's Copy Link action lives in the three-dot popover rather than the macOS menu bar, so App Shortcuts cannot target it. The Shortcuts app also does not expose the held-key state and modifier-release lifecycle required by Archeo's MRU selector. Use Karabiner-Elements or Hammerspoon for the complete experience.
Other tools can integrate with Archeo without an extension-specific API. Scope the mappings to Chrome and implement this four-command contract:
Shift+Command+CsendsShift+Command+Xfor Copy Link.- Every
Control+Tabkey-down sendsControl+Shift+.for Recent Tabs. - Every
Control+Shift+Tabkey-down sendsControl+Shift+Ufor Recent Tabs Backward. - While a selection is active,
Control+Left/Right Arrowsends the backward/forward command. - Releasing Control sends
Control+Shift+,once to Finish Recent Tabs. The command is harmless when no selector is active.
The fifth step is essential: a normal hotkey-only tool can trigger Copy Link and cycle the selection, but it cannot reliably finish the held-key interaction. BetterTouchTool exposes a key-release action category and is a good candidate for a future preset; contributions for tested adapters are welcome.
Archeo tracks tab activation order per Chrome window. Control+Tab opens the rail immediately with the previous tab selected. Control+Shift+Tab moves in the opposite direction; on the first iteration it wraps to the least-recent tab. While holding Control, use Left/Right Arrow or continue pressing Tab/Shift+Tab to move the highlight. The switch happens when Control is released. Clicking a card switches to that tab immediately and closes the rail. Tabs sharing a Chrome Split View appear together in one card.
New tabs are recorded immediately, including background tabs opened with a middle-click or links that target a new tab. The next Control+Tab selects that newly created tab without requiring it to be visited first.
The overlay can show between two and ten cards; choose the count from the Archeo popup. A Split View counts as one card, even though it contains both tabs. The cards use locally generated page previews. Chrome does not allow extension UI on protected pages such as chrome://settings or the Chrome Web Store, but tab switching still works there.
Archeo does not send or sell data and contains no analytics. Tab history and compressed previews remain in chrome.storage.session; Chrome clears them when the browser session ends, and previews are removed when their tab closes. The configured rail size is stored locally by Chrome.
The extension requests:
tabsandfaviconto build the MRU list and display tab metadata.activeTaband<all_urls>to capture local previews and render the overlay on normal web pages.scriptingto restore the overlay after an unpacked-extension reload.storagefor session-only MRU state and previews, plus the local rail-size setting.tabGroupsto display the name and color of each Chrome tab group.clipboardWriteandoffscreento copy the current URL reliably.
There is no build step. After editing, reload the unpacked extension from chrome://extensions.
Run the checks with Node.js:
node --check background.js
node --check action-queue.js
node --check content.js
node --check grouping.js
node --check key-observer.js
node --check mru.js
node --check offscreen.js
node --check popup.js
node --check settings.js
node tests/mru.test.js
node tests/action-queue.test.js
node tests/grouping.test.js
node tests/key-observer.test.js
node tests/settings.test.js
lua tests/hammerspoon.test.lua hammerspoon/archeo.luaContributions and bug reports are welcome. Please keep changes focused and include a test when modifying MRU ordering behavior.