todo: configurable shortcuts, a shortcut modal, and the omarchy menu revamp
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
---
|
||||
id: shell/all-keyboard-shortcuts-configurable
|
||||
title: "All keyboard shortcuts configurable"
|
||||
theme: shell
|
||||
status: open
|
||||
created: 2026-08-22
|
||||
date_source: stated
|
||||
order: 3
|
||||
---
|
||||
|
||||
**All keyboard shortcuts configurable.** Stated 2026-08-22 as coming soon. Every binding in the app
|
||||
should be something the owner sets, not something the code decides.
|
||||
|
||||
**There is nothing central to configure today.** Nine separate `keydown` listeners are registered across
|
||||
the app — the code editor, the file browser and its grid and dialogs, the terminal, the chat launcher,
|
||||
the embeddable chat, the file viewer's editor, and Spotlight — each owning its own keys, in its own
|
||||
component, with no registry and no way to see the set at once. So the first half of this is an
|
||||
inventory, and the second is a registry the bindings are read FROM rather than written INTO the
|
||||
components.
|
||||
|
||||
Spotlight is the cautionary tale and it is already written down in `Spotlight.tsx:14`: the launcher went
|
||||
`ctrl-space` → `shift-space` → `alt-space`, three changes in a day, because each chord turned out to
|
||||
collide with something — `shift-space` types a space, which is why that version needed a focus check
|
||||
that `alt-space` does not. **A hard-coded chord costs a code change and a release every time it is
|
||||
wrong**, which is the argument for this item in one sentence.
|
||||
|
||||
Worth deciding with the config format: a binding that conflicts with another must be refused or flagged
|
||||
at the moment it is set, since the failure otherwise is silent and shows up as "that key does nothing".
|
||||
And a browser cannot claim every chord — some are the browser's or the window manager's — so the UI has
|
||||
to be able to say a binding was rejected by something above it.
|
||||
|
||||
Storage lands on `todo/settings/` — this is exactly the kind of preference that should be a portable
|
||||
file rather than a row.
|
||||
Reference in New Issue
Block a user