microsoft / microsoft/terminal

Epic: Settings UI v2

Open
#10,000 3 comments 1 reaction 1 assignee Claimed by @carlos-zamora View on GitHub
Area-SettingsUI Issue-Scenario Product-Terminal
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.