microsoft / microsoft/terminal
Epic: Settings UI v2
- Dominant language
- C++
- Stars
- 105k
- Forks
- 9.6k
- Avg merge
- 3d 17h
- Merged PRs (30d)
- 29
Description
The goal of this issue is to track work on the settings UI to achieve (1) parity with the JSON experience and (2) experiences that are generally expected of a standard settings UI. Work items included here are not final, and can be removed/added at any time.
## JSON Parity
All of these settings exist in the JSON, but not the SUI. For the most part, these require some kind of design to make it a good experience. A few notes I want to point out...
- we _can_ iterate on these designs. For example, "launch position" would be cool if we had a control that let you place the window in a specific position, but that's a bit costly to commit to at the moment. We should prioritize having a (good) experience over having "the best" experience.
- settings that interact with each other can be exposed differently from the JSON.
- some settings don't make sense to be in the SUI (i.e. unstable or better experience without cluttering SUI). That's fine, let's just have a discussion about it to track it
### Startup page
- [x] launch position (#9075)
- [ ] #14156
- [x] #17210
- [x] center on launch (#9075)
- [ ] startup actions (#8802)
### Interaction page
- [x] `minimizeToNotificationArea`
- [x] `alwaysShowNotificationIcon`
- [x] `focusFollowMouse`
- [x] #14413
### Appearance page
- [ ] `experimental.useBackgroundImageForWindow`
### Appearance > Themes page
- [ ] _What do we even want from this page??_
### Extensions page
- [ ] Make the page at all
- [ ] disable dynamic profiles
- [ ] List fragments, profiles from fragments?
### Compatibility page
- [ ] Make the page at all (PR #17895)
- [ ] `experimental.input.forceVT`
- [ ] `experimental.rendering` settings
- [ ] `experimental.useBackgroundImageForWindow`
### Profile settings
- [x] font features
- [x] font axes
- [ ] padding (support for #,# or #,#,#,#) (PR #17909)
- [x] `adjustIndistinguishableColors`
- [ ] `experimental.pixelShaderPath`
- [ ] `bellSound` (supports one or multiple sound file paths)
- [ ] `experimental.connection.passthroughMode`
- [ ] `experimental.showMarksInScrollbar`
- [ ] `experimental.autoMarkPrompts`
- [ ] The `icon` setting should have a cool emoji picker OR file picker OR some preset icons OR whatever, you get it. Dustin has ~ t h o u g h t s ~ on this
- [ ] nullable colors (PR #17870)
- [ ] selection background (design: nullable color)
- [ ] foreground color (design: nullable color)
- [ ] background color (design: nullable color)
- [ ] tab color (design: nullable color)
- [ ] cursor color (design: nullable color)
### Warnings
- Add warnings to the SUI (PR #17933)
- [ ] `largePasteWarning`
- [ ] `multiLinePasteWarning`
- [ ] `confirmCloseAllTabs` (see also #14413)
- [ ] idea: add a checkbox to the warnings saying "don't show this again"
- flow should probably update warning setting and add it to the state to block it from popping up again. Problem is that when we change the settings, it triggers a setting reload which could interrupt flow.
### Actions
- [ ] needs UI update to match Win 11 styling (#12388)
- [ ] #6900 (read:action arg support)
- [ ] #11630
- [ ] #11341
### Profile reordering / Dropdown Menu
- [ ] #8914
- this should just be its own page. We can upgrade it to encompass new tab dropdown customization when that is supported.
- See also #1571
- deprecate `hidden`
- [ ] #19731
### Command palette
- (is this different from the actions page? probably not, yea?)
- [ ] rename a command
- [ ] add an icon to the command
- [ ] nested commands
- [ ] iterable commands
## Features
These are SUI features that just make sense to have. They're experiences that are kind of expected in any SUI.
- [ ] auto-save
- we probably just want to close #12424?
- [ ] Search
- [ ] Home page (#9120)
- Warnings
- [ ] add a button to "reset all warnings"
- Import JSON to...
- [ ] replace cascadia settings entirely
- [ ] add new profile
- [ ] add new color scheme
- [ ] import from iTerm2 scheme
- [ ] Import "theme & appearance", and possibly apply appearance to profile(s)
- #947
## Tasks
- Remove experimental from...
- [ ] `experimental.detectUrls`
- [ ] `experimental.retroTerminalEffects`
- [ ] `experimental.pixelShaderPath`
- [ ] `experimental.showMarksInScrollbar`
- [ ] `experimental.autoMarkPrompts`
- code health
- [ ] Deduplicate Browse button logic
- [x] #8452
- [ ] Remove visibility hacks (i.e. acrylic opacity slider), and use ProfileViewModel instead
Follow-ups from actions page...
- [ ] "the unbound bug"
- Edit `switchToTab` to `win+shift+q`. Save. Edit `switchToTab` to `ctrl+shift+t`.
- `"unbound": "win+shift+q"` appears but doesn't need to exist.
- [ ] `Actions::_GetContainerIndexByKeyChord` optimization
- 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...
1. use `GetActionByKeyChord()` to get the `Command`
2. perform a binary search on the list using `Command::Name()` (assuming it has a name)
- 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
- [ ] #11341
Contributor guide
Assessment
This issue has not been assessed yet.