Menubar, Context Menu and Command Palette
This issue is tracking the plumbing to support a more discoverable way to interact with the GUI.
Each of these is essentially a way to allow the user to invoke an action from a pre-defined set of actions that are categorized or filtered depending on the context.
- The menubar concept breaks actions into categories and shows a menu either at the top of the screen or the top of the Window
- The context menu concept is typically trigger through a right click in the main window area and shows a shorter set of actions that are (ideally) well-matched to what was clicked on
- The command palette concept allows filtering of possible actions by name matching and uses frecency to pre-fill some selections
These UI surfaces first need a set of actions to show. The obvious set of candidates are the default key assignments, as well as the list of items from the Launcher Menu. To make those usable with the above, we'll need to associate a label and category with the items so that they can be placed in the appropriate place in a menubar. For context menus we might want additional metadata to describe the best context; for example, only include a given action if the current pane has a textual selection, or only for panes in the "local" domain.
- [ ] Define categorization attributes
- [ ] Label (eg:
New Tab) - [ ] Context tags? eg:
HasSelection,LocalDomain - [ ] Classic menubar placement using syntax like
Window | New?
- [ ] Label (eg:
- [ ] Expand key assignment and launcher menu configuration to allow labeling and categorizing an assignment
- [x] Registry of actions
- [x] Populate from key assignments and launcher menu
- [x] Allow specifying additional items that have no key assignment
- [ ] macOS
- [x] native menubar
- [ ] OS native context menu
- [ ] Windows
- [ ] native menubar (may require additional option to enable/disable as it will occupy space in the terminal window)
- [ ] OS native context menu
- [ ] Custom context menu UI (primarily for X11/Wayland, but should also be runnable/testable on macOS and Windows)
- Potentially reusable/expandable to make custom menubar
- [x] Command Palette UI
- [x] Can prototype using an overlay, similar to current launcher menu
- [x] Future: make a slick pop-over UI with proportional fonts