Skip to content

Replace TerminalSettings runtimeclasses with interfaces only #885

@DHowett-MSFT

Description

@DHowett-MSFT

TerminalSettings.dll exists because it is difficult to coerce the C++/WinRT build infrastructure to produce a type library and a set of headers without either statically linking (which rolls up the generated types into the consuming project) or dynamically linking (which forces us to put a DLL on disk).

I posit that the ideal representation of settings is the ICoreSettings and IControlSettings interfaces only. No classes need to be implemented in TerminalSettings.dll, because all they'd do is ferry data back and forth.

By dropping the classes and switching to the interfaces, we can remove the setters from the interfaces, and remove the runtime classes completely. Cascadia (or TerminalApp::<something>) can implement ICoreSettings and IControlSettings as views over existing profile data.

This will reduce both the number of runtime hops required for loading and saving settings and the number of code authoring hops required for adding new settings.

Approach

Metadata

Metadata

Assignees

Labels

Area-SettingsIssues related to settings and customizability, for console or terminalIssue-ScenarioNeeds-Tag-FixDoesn't match tag requirementsProduct-TerminalThe new Windows Terminal.Resolution-Fix-CommittedFix is checked in, but it might be 3-4 weeks until a release.

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions