You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I would like to use a Gesturefy gesture to open the URLbar the same as Ctrl-T, but it seems this is not possible.
Please excuse the obvious AI-sourced request below, I hope the additional detail is helpful. Was playing around with the new gpt-5-codex model and had it analyze the source to confirm this was in fact not possible without code changes.
Zen replaces Firefox’s default Ctrl+T path with a floating omnibox overlay, implemented in chrome-only code
(gZenUIManager.handleNewTab). That path is currently inaccessible to WebExtensions. The request is to expose
a documented and supported mechanism (WebExtension API, command, or message) that lets extensions invoke the
floating new-tab experience without creating a real tab first.
Background / Motivation
Gesture-based extensions (e.g. Gesturefy) want to offer “New Tab” gestures that match the stock Ctrl+T
behaviour in Zen.
The standard WebExtension API browser.tabs.create skips Zen’s override and opens a regular tab.
Gesturefy’s custom scripts execute in content scope; they cannot call chrome globals such as
gZenUIManager, send internal commands (Browser:OpenLocation), or flag the URL bar with zen-newtab.
As a result, gestures can only approximate Zen’s new-tab flow by opening tabs, which breaks the floating
overlay experience that differentiates Zen.
Current behaviour
Press Ctrl+T → BrowserCommands.openNewTabOrWindow → gZenUIManager.handleNewTab → floating overlay appears
with no new tab created.
Call the WebExtension API browser.tabs.create({active:true}) (either directly or via Gesturefy) → a
standard tab is created; no floating overlay is shown.
Gesturefy custom scripts (running in page scope) cannot reach window.top.gZenUIManager, call
goDoCommand("Browser:OpenLocation"), or synthesize the required chrome attributes (zen-newtab, zen-floating-
urlbar).
There is no documented experiment API or browser.zen.* namespace for this capability.
Requested solution
Provide an officially supported way for WebExtensions to trigger the same code path that Ctrl+T uses,
without requiring source modifications. Possible implementations (any one would solve the problem):
Expose a command or WebExtension API, e.g. browser.zen.urlbar.openFloating()
or browser.commands.execute("zen-open-floating-urlbar"), that internally calls
gZenUIManager.handleNewTab(false, false, "tab", true) (or equivalent) and mirrors the attribute/cleanup
behaviour.
Alternatively, register a runtime message listener (e.g. on a new browser.zen.* API or an allowed
runtime.sendMessage({type:"zen-open-floating-urlbar"})) that forwards to the same logic.
Document any required permissions or user prompts if applicable.
Key requirements:
Invoking the entry point should display the floating omnibox overlay exactly as Ctrl+T does.
It should not depend on the current tab being empty, and it should reuse the existing close/cleanup path
(gZenUIManager.handleUrlbarClose).
The API should be available to signed WebExtensions so that Gesturefy (and similar tools) can bind
gestures to it.
Use cases
Gesturefy: map a mouse gesture to the floating new-tab overlay.
Keyboard or automation extensions: invoke Zen’s overlay via custom shortcuts without simulating Ctrl+T.
Accessibility tools: provide alternative triggers for the omnibox without manipulating browser chrome.
Benefits
Preserves Zen’s UX consistency when users adopt gesture/automation extensions.
Offers a future-proof, documented hook instead of relying on unsupported chrome internals.
src/browser/components/urlbar/UrlbarInput-sys-mjs.patch – Behaviour gated on the zen-newtab attribute.
Gesturefy’s user-script runner (Gesturefy/src/core/helpers/user-script-runner.mjs) illustrates the sandbox
and why chrome globals are unreachable from extensions.
Thanks for considering making this workflow accessible to WebExtensions!
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
I would like to use a Gesturefy gesture to open the URLbar the same as Ctrl-T, but it seems this is not possible.
Please excuse the obvious AI-sourced request below, I hope the additional detail is helpful. Was playing around with the new gpt-5-codex model and had it analyze the source to confirm this was in fact not possible without code changes.
Zen replaces Firefox’s default Ctrl+T path with a floating omnibox overlay, implemented in chrome-only code
(gZenUIManager.handleNewTab). That path is currently inaccessible to WebExtensions. The request is to expose
a documented and supported mechanism (WebExtension API, command, or message) that lets extensions invoke the
floating new-tab experience without creating a real tab first.
Background / Motivation
behaviour in Zen.
gZenUIManager, send internal commands (Browser:OpenLocation), or flag the URL bar with zen-newtab.
overlay experience that differentiates Zen.
Current behaviour
with no new tab created.
standard tab is created; no floating overlay is shown.
goDoCommand("Browser:OpenLocation"), or synthesize the required chrome attributes (zen-newtab, zen-floating-
urlbar).
Requested solution
Provide an officially supported way for WebExtensions to trigger the same code path that Ctrl+T uses,
without requiring source modifications. Possible implementations (any one would solve the problem):
or browser.commands.execute("zen-open-floating-urlbar"), that internally calls
gZenUIManager.handleNewTab(false, false, "tab", true) (or equivalent) and mirrors the attribute/cleanup
behaviour.
runtime.sendMessage({type:"zen-open-floating-urlbar"})) that forwards to the same logic.
Key requirements:
(gZenUIManager.handleUrlbarClose).
gestures to it.
Use cases
Benefits
Additional context
Relevant code paths
and why chrome globals are unreachable from extensions.
Thanks for considering making this workflow accessible to WebExtensions!
Beta Was this translation helpful? Give feedback.
All reactions