-
Notifications
You must be signed in to change notification settings - Fork 9.1k
Open
Labels
Area-SettingsUIAnything specific to the SUIAnything specific to the SUIIssue-ScenarioProduct-TerminalThe new Windows Terminal.The new Windows Terminal.
Milestone
Description
written and maintained by @carlos-zamora
Description
A largely missing part of the Settings UI is actions. This will allow the user to customize their command palette and key bindings without the need to go into the JSON.
Much like the implementation plan for the Settings UI, there are many moving pieces to this that are outside of the TerminalSettingsEditor project:
- Implement inheritance/layering behavior for settings lists/maps #8100: Inheritance for actions
- enables ability to track where an action came from
- PR Introduce ActionMap to Terminal Settings Model #9621
- serialization for actions
- step 1: general serialization
- step 2: only serialize meaningful changes into settings.json (don't serialize the whole thing)
- PR Introduce serialization for actions #9926
- Design Settings UI representation
- Implement proposed design
- Foundation (PR Make Actions page editable #9949)
- delete a key binding
- set the key chord for a key binding
- miscellaneous work (i.e. keyboard navigation, accessibility, etc...)
- Set Action
- change the action for a key binding (PR Allow setting the action on Actions page #10220)
- add a new key binding (PR Add the 'Add new' button to the Actions page #10550)
- Foundation (PR Make Actions page editable #9949)
Some follow-up work items:
- Key chord editor/listener
- Instead of parsing key chord text, it'd be nice if we could listen for key chords.
- Inspiration: We should take a look at how PowerToys got around this problem.
- Inspiration: An old version of SUI also had this implemented (back during the hackathon).
- PR Add a KeyChordListener to the Settings UI #10652
- "the unbound bug"
- Edit
switchToTabtowin+shift+q. Save. EditswitchToTabtoctrl+shift+t. "unbound": "win+shift+q"appears but doesn't need to exist.
- Edit
-
Actions::_GetContainerIndexByKeyChordoptimization- We're just doing a O(n) search for a matching key chord, but we could technically do this much faster.
- The list is already sorted by command name, so if we...
- use
GetActionByKeyChord()to get theCommand - perform a binary search on the list using
Command::Name()(assuming it has a name)
- use
- we should be able to accomplish this search in O(log n) time (usually)'
- Performance
- Clicking Actions in the left bar of Settings takes about 3 seconds to load and doesn't cache/keep it
- Keybinding editor could be clearer #11341
Bugs:
- Settings Model:
- Saving in the Settings UI breaks "iterateOn" #10365: not serializing top-level "iterateOn" commands! (PR Bugfix: serialize iterable commands #10373)
-
GetKeyBindingForActiondoesn't always find the given action (PR Ensure equality when hashing default args and no args in actions #10341)
- Settings UI:
- Pencil icon (Edit button) on Actions page is invisible with light theme #10406: Edit button on actions page is invisible with light theme
References
#7175 should be kept in mind during this design.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
Area-SettingsUIAnything specific to the SUIAnything specific to the SUIIssue-ScenarioProduct-TerminalThe new Windows Terminal.The new Windows Terminal.