Documentation

Everything you need to install, use, and understand Quick Perplexes — a lightweight browser extension that brings a Spotlight-style overlay to every webpage, routing your searches directly to Perplexity.ai.

📖 Overview

Quick Perplexes adds a persistent keyboard shortcut (Ctrl+`) to every webpage you visit. Pressing it opens a floating search overlay — built inside a closed Shadow DOM so it never conflicts with the host page's styles or scripts. Type a query, press Enter, and Perplexity.ai opens in a new tab with your search already running.

The extension has no backend, collects no data, and requires only the tabs permission (to open the new tab). It is free and open-source under the MIT license.

Text selection pre-fill: highlight any text on a page before pressing Ctrl+` and the overlay opens with that text already in the search box — ideal for quickly looking up something you just read.

📦 Installation

Firefox

1
Visit the Firefox Add-ons listing for Quick Perplexes.
2
Click Add to Firefox and confirm the permission prompt.
3
The extension activates immediately on all tabs — no restart needed. Press Ctrl+` on any page to confirm it's working.

Chrome (manual load)

The Chrome Web Store listing is pending review. In the meantime you can load the extension manually from source.

1
Download or clone the repository and note the folder path.
2
Open chrome://extensions in Chrome and enable Developer mode (top-right toggle).
3
Click Load unpacked and select the repository root folder (the one containing manifest.json).
4
The extension appears in your toolbar. Press Ctrl+` on any page to test it.
🔄 After updating source files: go back to chrome://extensions and click the refresh icon on the Quick Perplexes card to reload the extension.

🖱️ Usage guide

Opening the overlay

Press Ctrl+` (backtick, the key above Tab) on any webpage. The overlay appears centred on screen, the input is focused, and the host page's own keyboard shortcuts are suspended until you close it.

On macOS the same shortcut works — the extension uses e.code rather than e.key to handle keyboard layout differences reliably.

Submitting a search

Type your query and press Enter. Quick Perplexes constructs a Perplexity.ai search URL and opens it in a new tab. The overlay closes automatically and the input is cleared for the next use.

You can also use modifier keys to control how results open: Ctrl+Enter opens in a background tab, Shift+Enter opens in a new window, and Alt+Enter opens in a floating popup window anchored to the bottom-right corner of the screen.

Pre-filling with selected text

Select any text on the page before pressing Ctrl+`. The overlay opens with that text already in the input, ready to submit or edit. The selection is highlighted so you can immediately start typing to replace it.

Closing the overlay

You can close the overlay without searching in three ways:

  • Press Esc
  • Click anywhere outside the overlay (backdrop click)
  • Press Ctrl+` again to toggle it closed

Toolbar icon

Clicking the Quick Perplexes icon in the browser toolbar opens perplexity.ai directly in a new tab — a quick shortcut when you want the full interface rather than the overlay.

⌨️ Keyboard shortcuts

ShortcutActionContext
Ctrl+` Open / close overlay Any webpage
Enter Search in new tab Overlay open
Ctrl+Enter Search in background tab Overlay open
Shift+Enter Search in new window Overlay open
Alt+Enter Search in floating popup Overlay open
Esc Close overlay without searching Overlay open
Tab / Shift+Tab Focus stays inside overlay Overlay open
Backdrop click Close overlay without searching Overlay open
🔒 While the overlay is open, all keydown events are intercepted at the capture phase — preventing host-page shortcuts (e.g. video player shortcuts, editor bindings) from firing accidentally.

🏗️ Architecture

Quick Perplexes is a Manifest V3 extension with exactly two scripts. There are no build steps, no npm packages, and no bundler — the source is what ships.

background.js

Service worker. Single responsibility: listens for toolbar icon clicks and opens perplexity.ai in a new tab via chrome.tabs.create.

content.js

Injected into every page at document_start. Manages the full overlay lifecycle: creation, toggle, query submission, focus trapping, and cleanup.

overlay.css

Stylesheet loaded at runtime via fetch(chrome.runtime.getURL()) and injected as a <style> tag inside the Shadow DOM.

manifest.json

MV3 manifest. Declares the tabs permission, the content script, the service worker, and overlay.css as a web-accessible resource.

Shadow DOM isolation

The overlay is attached to a host element as a closed Shadow DOM. This means the overlay's CSS is completely isolated from the host page — no style leaks in either direction, regardless of what CSS frameworks or resets the page uses. The host element itself is a plain <div> appended to document.body.

Overlay lifecycle

// First trigger — create once, reuse forever if (!host) { host = document.createElement('div'); shadowRoot = host.attachShadow({ mode: 'closed' }); // fetch CSS → inject <style> → build DOM → attach listeners document.body.appendChild(host); } // Subsequent triggers — just toggle display overlay.style.display = isOpen ? 'none' : 'flex'; isOpen = !isOpen;

Keyboard event capture

The Ctrl+` listener is registered in the capture phase (useCapture: true), so it fires before any host-page handlers. While the overlay is open, stopPropagation() is called on all keydown events to prevent host-page shortcuts from firing.

URL construction

The buildSearchUrl(query) function (the only logic with unit tests) encodes the query and appends it to the Perplexity search endpoint. Tests live in tests/test.html and run automatically when opened in a browser.

Cross-browser compatibility

Firefox support was added in v0.5.0. The manifest includes a browser_specific_settings.gecko block with the extension ID and minimum Firefox version (140+). The build.js script packages the same source into separate Chrome and Firefox zips using a pure-Node ZIP writer with no external dependencies.

📋 Version history

v1.1.1 2026-04-10
Mac-aware shortcut hints. The overlay footer now shows Command and Option labels on macOS instead of Ctrl and Alt.
v1.1.0 2026-04-10
Shortcut hints & popup search. The overlay footer now shows keyboard shortcut hints for all search modes. New Alt+Enter shortcut opens Perplexity in a floating popup window (480×700, bottom-right). Input field now scrolls to the caret when typing long queries.
v1.0.1 2026-04-02
Bug fix: Host-page keyboard shortcuts (e.g. video player controls, editor bindings) are now properly blocked while the overlay is open. Firefox Add-ons store listing goes live.
v1.0.0 2026-04-01
Public launch. Marketing website deployed to GitHub Pages. GitHub Actions workflow automates site deployment on every push to main.
v0.5.0 2026-04-01
Firefox support. Manifest updated with gecko block, extension ID, and data_collection_permissions. build.js added — pure-Node script that packages separate Chrome and Firefox zips with deterministic timestamps. Extension icons updated with rounded corners.
v0.4.0 2026-04-01
Text selection pre-fill. Pressing Ctrl+` while text is selected on the page pre-fills the overlay input with that text. Selection is highlighted and focused so the user can submit or edit immediately.
v0.3.0 2026-04-01
Custom icons + macOS fix. User-designed extension icons replace generated placeholders. Shortcut detection switched from e.key to e.code to handle macOS keyboard layout differences. Keydown propagation from the Shadow DOM stopped to prevent host-page shortcut interference.
v0.2.1 2026-03-31
Bug fixes. Raced overlay creation guarded with isCreating flag. Input cleared on close. Esc propagation stopped. Switched to window.open() (content scripts cannot call chrome.tabs.create). Unit tests added for URL builder.
v0.2.0 2026-03-31
Core overlay. Shadow DOM overlay with Ctrl+` toggle, query submission on Enter, dismiss on Esc or backdrop click, and focus trapping inside the overlay while open.
v0.1.0 2026-03-31
Initial release. MV3 manifest scaffolded. Background service worker opens perplexity.ai when the toolbar icon is clicked.

🤝 Contributing

Quick Perplexes is open-source under the MIT license. Contributions, bug reports, and feature ideas are welcome via GitHub.

  • Bug reports & feature requests: open an issue
  • Running tests: open tests/test.html in any browser — results appear immediately.
  • Building packages: run node build.js to generate dist/quick-perplexes-chrome-*.zip and the Firefox equivalent.
  • Reloading after changes: in Chrome, visit chrome://extensions and click the refresh icon on the extension card.
If Quick Perplexes saves you time, a star on GitHub is always appreciated.