Open
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
- launch position (SUI: Add settings for initalPosition, centerOnLaunch #9075)
- center on launch (SUI: Add settings for initalPosition, centerOnLaunch #9075)
- startup actions (Add
startupActions
to Settings UI #8802)
Interaction page
-
minimizeToNotificationArea
-
alwaysShowNotificationIcon
-
focusFollowMouse
- Add the setting "confirmCloseAllTabs" to the UI #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 Add a Compatibility and Terminal page to the Settings UI #17895)
-
experimental.input.forceVT
-
experimental.rendering
settings -
experimental.useBackgroundImageForWindow
-
Profile settings
- font features
- font axes
- padding (support for #,# or #,#,#,#) (PR Add separate padding settings for left, top, right and bottom #17909)
-
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 Add nullable colors and improve Profile.Icon in settings UI #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 Add Warnings to Settings UI #17933)
- [ ]largePasteWarning
- [ ]multiLinePasteWarning
- [ ]confirmCloseAllTabs
(see also Add the setting "confirmCloseAllTabs" to the UI #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 (Update Actions, Color Schemes pages in SUI to match Controlsv2 style #12388)
- Epic: Introduce Actions page to the Settings UI #6900 (read:action arg support)
- Allow search by Name in the Actions dialog. #11630
- Keybinding editor could be clearer #11341
Profile reordering / Dropdown Menu
- Profile reordering for Settings UI #8914
- this should just be its own page. We can upgrade it to encompass new tab dropdown customization when that is supported.
- See also Allow dropdown menu customization in profiles.json #1571
- deprecate
hidden
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
- Search
- Home page (Add a Home Page to the Settings UI #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)
- [Settings UI] Add a button to reset the settings to defaults #947
Tasks
- Remove experimental from...
-
experimental.detectUrls
-
experimental.retroTerminalEffects
-
experimental.pixelShaderPath
-
experimental.showMarksInScrollbar
-
experimental.autoMarkPrompts
-
- code health
- Deduplicate Browse button logic
- Polish
TabBase
#8452 - Remove visibility hacks (i.e. acrylic opacity slider), and use ProfileViewModel instead
Follow-ups from actions page...
- "the unbound bug"
- Edit
switchToTab
towin+shift+q
. Save. EditswitchToTab
toctrl+shift+t
. "unbound": "win+shift+q"
appears but doesn't need to exist.
- Edit
-
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...
- 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