Skip to content

[Feature]: Recent tab swtiching with Ctrl+Tab #1168

Description

@paakjong

Problem or use case

Most editors and browsers support MRU (Most Recently Used) tab cycling — pressing Ctrl+Tab / Ctrl+Shift+Tab switches to the previously focused tab rather than the next tab in visual order. This is the expected behavior in VS Code, JetBrains IDEs, Chrome, and Arc.

Orca currently only supports sequential tab navigation (Cmd+Shift+] / [), which cycles through tabs in their positional order. When working with many open tabs, this makes it slow to jump back to a tab you were just editing — you have to cycle through every tab in between.

This is especially painful during development workflows where you frequently bounce between two or three files (e.g., a component and its test, or a model and a controller).

Proposed solution

Add MRU-based tab switching, activated by Ctrl+Tab (next recent) and Ctrl+Shift+Tab (previous recent):

  1. Track tab focus order — maintain a stack/list of tabs ordered by last-focused time. Every time a tab gains focus, move it to the top of the MRU list.
  2. Ctrl+Tab behavior — on first press, show a tab switcher overlay listing tabs in MRU order (most recent at top). While Ctrl is held, each Tab press moves the selection down the list. Releasing Ctrl switches to the selected tab.
  3. Quick toggle shortcut — a single Ctrl+Tab then release should instantly switch to the previous tab (2-tab toggle), which is the most common use case.
  4. Make it configurable — allow users to choose between MRU order and sequential order for Ctrl+Tab in settings, defaulting to MRU.

This complements the existing Cmd+Shift+]/[ sequential navigation rather than replacing it.

Alternatives or additional context

  • VS Code implements this as workbench.action.quickOpenPreviousRecentlyUsedEditor with a picker UI.
  • JetBrains IDEs use Ctrl+Tab for a "Switcher" popup with recent files and tool windows.
  • Related: Make Cmd/Ctrl+Shift+]/[ cycle within the current tab type by default #1100 covers cycling within the current tab type by positional order — this feature request is orthogonal and addresses switching by recency across all tab types.
  • A simpler v1 could skip the overlay and just do instant MRU toggle (switch to last-focused tab on Ctrl+Tab), adding the picker UI later.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions