diff --git a/doc/cascadia/SettingsSchema.md b/doc/cascadia/SettingsSchema.md index db826024100..ffca902b73f 100644 --- a/doc/cascadia/SettingsSchema.md +++ b/doc/cascadia/SettingsSchema.md @@ -19,7 +19,7 @@ Properties listed below affect the entire window, regardless of the profile sett | `showTerminalTitleInTitlebar` | _Required_ | Boolean | `true` | When set to `true`, titlebar displays the title of the selected tab. When set to `false`, titlebar displays "Windows Terminal". | | `showTabsInTitlebar` | Optional | Boolean | `true` | When set to `true`, the tabs are moved into the titlebar and the titlebar disappears. When set to `false`, the titlebar sits above the tabs. | | `snapToGridOnResize` | Optional | Boolean | `false` | When set to `true`, the window will snap to the nearest character boundary on resize. When `false`, the window will resize "smoothly" | -| `tabWidthMode` | Optional | String | `equal` | Sets the width of the tabs. Possible values: `"equal"`, `"titleLength"` | +| `tabWidthMode` | Optional | String | `equal` | Sets the width of the tabs. Possible values:
| | `wordDelimiters` | Optional | String |  /\()"'-:,.;<>~!@#$%^&*|+=[]{}~?│
_(`│` is `U+2502 BOX DRAWINGS LIGHT VERTICAL`)_ | Determines the delimiters used in a double click selection. | | `confirmCloseAllTabs` | Optional | Boolean | `true` | When set to `true` closing a window with multiple tabs open WILL require confirmation. When set to `false` closing a window with multiple tabs open WILL NOT require confirmation. | | `startOnUserLogin` | Optional | Boolean | `false` | When set to `true` enables the launch of Windows Terminal at startup. Setting to `false` will disable the startup task entry. Note: if the Windows Terminal startup task entry is disabled either by org policy or by user action this setting will have no effect. | diff --git a/doc/cascadia/profiles.schema.json b/doc/cascadia/profiles.schema.json index fd55f94847e..a393edc4929 100644 --- a/doc/cascadia/profiles.schema.json +++ b/doc/cascadia/profiles.schema.json @@ -376,8 +376,9 @@ }, "tabWidthMode": { "default": "equal", - "description": "Sets the width of the tabs. Possible values include:\n -\"equal\" sizes each tab to the same width\n -\"titleLength\" sizes each tab to the length of its title", + "description": "Sets the width of the tabs. Possible values include:\n -\"equal\" sizes each tab to the same width\n -\"titleLength\" sizes each tab to the length of its title\n -\"compact\" sizes each tab to the length of its title when focused, and shrinks to the size of only the icon when the tab is unfocused.", "enum": [ + "compact", "equal", "titleLength" ], diff --git a/src/cascadia/TerminalApp/GlobalAppSettings.cpp b/src/cascadia/TerminalApp/GlobalAppSettings.cpp index c274135d396..2d3e41cfba4 100644 --- a/src/cascadia/TerminalApp/GlobalAppSettings.cpp +++ b/src/cascadia/TerminalApp/GlobalAppSettings.cpp @@ -27,8 +27,6 @@ static constexpr std::string_view InitialPositionKey{ "initialPosition" }; static constexpr std::string_view ShowTitleInTitlebarKey{ "showTerminalTitleInTitlebar" }; static constexpr std::string_view ThemeKey{ "theme" }; static constexpr std::string_view TabWidthModeKey{ "tabWidthMode" }; -static constexpr std::wstring_view EqualTabWidthModeValue{ L"equal" }; -static constexpr std::wstring_view TitleLengthTabWidthModeValue{ L"titleLength" }; static constexpr std::string_view ShowTabsInTitlebarKey{ "showTabsInTitlebar" }; static constexpr std::string_view WordDelimitersKey{ "wordDelimiters" }; static constexpr std::string_view CopyOnSelectKey{ "copyOnSelect" }; @@ -36,18 +34,27 @@ static constexpr std::string_view CopyFormattingKey{ "copyFormatting" }; static constexpr std::string_view LaunchModeKey{ "launchMode" }; static constexpr std::string_view ConfirmCloseAllKey{ "confirmCloseAllTabs" }; static constexpr std::string_view SnapToGridOnResizeKey{ "snapToGridOnResize" }; + +static constexpr std::string_view DebugFeaturesKey{ "debugFeatures" }; + +static constexpr std::string_view ForceFullRepaintRenderingKey{ "experimental.rendering.forceFullRepaint" }; +static constexpr std::string_view SoftwareRenderingKey{ "experimental.rendering.software" }; +static constexpr std::string_view EnableStartupTaskKey{ "startOnUserLogin" }; + +// Launch mode values static constexpr std::wstring_view DefaultLaunchModeValue{ L"default" }; static constexpr std::wstring_view MaximizedLaunchModeValue{ L"maximized" }; static constexpr std::wstring_view FullscreenLaunchModeValue{ L"fullscreen" }; + +// Tab Width Mode values +static constexpr std::wstring_view EqualTabWidthModeValue{ L"equal" }; +static constexpr std::wstring_view TitleLengthTabWidthModeValue{ L"titleLength" }; +static constexpr std::wstring_view TitleLengthCompactModeValue{ L"compact" }; + +// Theme values static constexpr std::wstring_view LightThemeValue{ L"light" }; static constexpr std::wstring_view DarkThemeValue{ L"dark" }; static constexpr std::wstring_view SystemThemeValue{ L"system" }; -static constexpr std::string_view EnableStartupTaskKey{ "startOnUserLogin" }; - -static constexpr std::string_view ForceFullRepaintRenderingKey{ "experimental.rendering.forceFullRepaint" }; -static constexpr std::string_view SoftwareRenderingKey{ "experimental.rendering.software" }; - -static constexpr std::string_view DebugFeaturesKey{ "debugFeatures" }; #ifdef _DEBUG static constexpr bool debugFeaturesDefault{ true }; @@ -322,6 +329,10 @@ TabViewWidthMode GlobalAppSettings::_ParseTabWidthMode(const std::wstring& tabWi { return TabViewWidthMode::SizeToContent; } + else if (tabWidthModeString == TitleLengthCompactModeValue) + { + return TabViewWidthMode::Compact; + } // default behavior for invalid data or EqualTabWidthValue return TabViewWidthMode::Equal; }