[Enhancement] Add configurable keybinds for dialog actions (#6144) #3853

Closed
opened 2026-02-16 17:41:41 -05:00 by yindo · 3 comments
Owner

Originally created by @CasualDeveloper on GitHub (Dec 24, 2025).

Originally assigned to: @rekram1-node on GitHub.

Problem

Several dialog keybinds are hardcoded and cannot be customized:

  • Session list: ctrl+d (delete), ctrl+r (rename)
  • Stash dialog: ctrl+d (delete)
  • Model dialog: ctrl+a (provider list), ctrl+f (favorite toggle)

Users who have conflicts with these keybinds (e.g., ctrl+d for shell EOF, ctrl+r for reverse search) cannot remap them.

Proposed Solution

Add new keybind config options:

  • session_delete - default ctrl+d
  • session_rename - default ctrl+r
  • stash_delete - default ctrl+d
  • model_provider_list - default ctrl+a
  • model_favorite_toggle - default ctrl+f

Usage

{
  "keybinds": {
    "session_delete": "super+d",
    "session_rename": "super+r"
  }
}

Files to Modify

  • packages/opencode/src/config/config.ts
  • packages/opencode/src/cli/cmd/tui/component/dialog-session-list.tsx
  • packages/opencode/src/cli/cmd/tui/component/dialog-stash.tsx
  • packages/opencode/src/cli/cmd/tui/component/dialog-model.tsx
  • packages/opencode/src/util/keybind.ts
Originally created by @CasualDeveloper on GitHub (Dec 24, 2025). Originally assigned to: @rekram1-node on GitHub. ## Problem Several dialog keybinds are hardcoded and cannot be customized: - Session list: `ctrl+d` (delete), `ctrl+r` (rename) - Stash dialog: `ctrl+d` (delete) - Model dialog: `ctrl+a` (provider list), `ctrl+f` (favorite toggle) Users who have conflicts with these keybinds (e.g., `ctrl+d` for shell EOF, `ctrl+r` for reverse search) cannot remap them. ## Proposed Solution Add new keybind config options: - `session_delete` - default `ctrl+d` - `session_rename` - default `ctrl+r` - `stash_delete` - default `ctrl+d` - `model_provider_list` - default `ctrl+a` - `model_favorite_toggle` - default `ctrl+f` ## Usage ```json { "keybinds": { "session_delete": "super+d", "session_rename": "super+r" } } ``` ## Files to Modify - `packages/opencode/src/config/config.ts` - `packages/opencode/src/cli/cmd/tui/component/dialog-session-list.tsx` - `packages/opencode/src/cli/cmd/tui/component/dialog-stash.tsx` - `packages/opencode/src/cli/cmd/tui/component/dialog-model.tsx` - `packages/opencode/src/util/keybind.ts`
yindo added the opentui label 2026-02-16 17:41:41 -05:00
yindo closed this issue 2026-02-16 17:41:41 -05:00
Author
Owner

@github-actions[bot] commented on GitHub (Dec 24, 2025):

This issue might be a duplicate of existing issues. Please check:

  • #3262: Configure switch session modal keybinds
  • #5752: session_interrupt command doesn't work when binded in non-default

For keybind-related issues, please also check our pinned keybinds documentation: #4997

Feel free to ignore if none of these address your specific case.

@github-actions[bot] commented on GitHub (Dec 24, 2025): This issue might be a duplicate of existing issues. Please check: - #3262: Configure switch session modal keybinds - #5752: `session_interrupt` command doesn't work when binded in non-default For keybind-related issues, please also check our pinned keybinds documentation: #4997 Feel free to ignore if none of these address your specific case.
Author
Owner

@CasualDeveloper commented on GitHub (Dec 24, 2025):

This also addresses #3262 (configure switch session modal keybinds).

Related to #4997 (keybinds tracking issue).

@CasualDeveloper commented on GitHub (Dec 24, 2025): This also addresses #3262 (configure switch session modal keybinds). Related to #4997 (keybinds tracking issue).
Author
Owner

@CasualDeveloper commented on GitHub (Dec 30, 2025):

Will continue rebasing on top of release tags as they're set.

@CasualDeveloper commented on GitHub (Dec 30, 2025): Will continue rebasing on top of release tags as they're set.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: anomalyco/opencode#3853