Skip to content

no-bug: Add Tab Switcher settings and remappable tab switching shortcuts - #16324

Open
tylertylerday wants to merge 1 commit into
zen-browser:devfrom
tylertylerday:feat/tab-switcher-settings
Open

tylertylerday wants to merge 1 commit into
zen-browser:devfrom
tylertylerday:feat/tab-switcher-settings

Conversation

@tylertylerday

Copy link
Copy Markdown

Discussion: #10336

Ctrl+Tab, Ctrl+Page Down and Ctrl+Page Up are handled by Firefox in ShortcutUtils.getSystemActionForEvent rather than through <key> elements, so they can't be changed in about:keyboard. This adds disabled <key> elements that only hold their bindings (zen-tab-switcher-cycle, -next and -previous), so they show up in about:keyboard like any other shortcut. Until one is customized, Firefox's built-in shortcuts apply unchanged, including the macOS variants. Once it is, ZenKeyboardShortcuts.getSystemActionForEvent matches the new binding in tabbox.js and browser-ctrlTab.js, and the built-in one stops working. When cycling in recently used order, the panel picks a tab when the custom shortcut's modifier is released, and Shift still goes backwards unless the shortcut uses Shift itself.

In about:keyboard, these three are in a new Tabs category right after Navigation, together with Firefox's Select Tab 1–8 and Select Last Tab, which move there from Navigation.

Settings → Tab Management gets a Tab Switcher section with the Ctrl+Tab options: Firefox's "recently used order" checkbox (moved from General), the existing pending and essential tab options, and a new option to cycle through the tabs of every space instead of only the current one (zen.tabs.ctrl-tab.cross-space, off by default). Picking a tab from another space switches to that space. The labels show the current shortcut, and the description links to Keyboard Shortcuts. Because those strings now take the shortcut as a variable, they have new Fluent IDs.

Tested on a local Linux build. I added browser tests for remapping, clearing and resetting the shortcuts, the about:keyboard category, and cross-space cycling. The kbs, browser_ctrl_tab_cross_space.js and browser_tabs_cycle_by_attribute.js tests pass, and npm run lint is clean.

@tylertylerday

tylertylerday commented Nov 2, 2026 •

Copy link
Copy Markdown
Author

Changed the shortcut between screenshots, so ignore the discrepancy.
image
image

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant