# Feature catalog — microsoft/terminal

> Canonical page: https://codevetter.com/unpack/terminal/feature-catalog

# Feature catalog — microsoft/terminal

Scanned commit 7c92ecd037476f957809d0813b14d8bc44bb071a (2026-09-18). Generated by codevetter codevetter 1.12.0 on 2026-09-22.

Windows Terminal's user-facing surface is a tabbed, split-pane terminal with profiles, color schemes, themes, keybindings ('actions'), a command palette, search, a GUI settings editor, a wt command line, session persistence, quake-mode summon, global hotkeys, and deep shell/OS integration (default-terminal handoff, 'Open in Terminal' explorer extension, jump lists, elevated tabs). The settings model supports dynamic profile generators (WSL, PowerShell, Azure Cloud Shell, Visual Studio, SSH hosts) and third-party JSON fragments/app-extensions. VT features include Sixel graphics, scroll marks, and custom HLSL pixel shaders in the Atlas renderer.
- The wt CLI supports subcommands parsed with CLI11 in AppCommandlineArgs: new-tab/nt, split-pane/sp (-H/-V/--size/-D), move-pane/mp, focus-tab, and more; an implicit 'new-tab' parse is attempted when no subcommand is given. — [src/cascadia/TerminalApp/AppCommandlineArgs.cpp#L72-317](https://github.com/microsoft/terminal/blob/7c92ecd037476f957809d0813b14d8bc44bb071a/src/cascadia/TerminalApp/AppCommandlineArgs.cpp#L72-L317)
- There are ~70 bindable 'shortcut actions' (CopyText, PasteText, NewTab, SplitPane, SendInput, ScrollToMark, ToggleShaderEffects, ToggleFocusMode, ...) enumerated by the ALL_SHORTCUT_ACTIONS X-macro and dispatched by ShortcutActionDispatch::DoAction which raises a per-action event. — [src/cascadia/TerminalSettingsModel/AllShortcutActions.h#L21-60](https://github.com/microsoft/terminal/blob/7c92ecd037476f957809d0813b14d8bc44bb071a/src/cascadia/TerminalSettingsModel/AllShortcutActions.h#L21-L60) [src/cascadia/TerminalApp/ShortcutActionDispatch.cpp#L31-78](https://github.com/microsoft/terminal/blob/7c92ecd037476f957809d0813b14d8bc44bb071a/src/cascadia/TerminalApp/ShortcutActionDispatch.cpp#L31-L78)
- Settings live in settings.json layered over inbox defaults.json: keys include profiles/defaults+list, schemes, themes (builtin names system/light/dark plus legacy* variants), actions, and newTabMenu; DEFAULT_WINDOWS_POWERSHELL_GUID and DEFAULT_COMMAND_PROMPT_GUID are hardcoded defaults. — [src/cascadia/TerminalSettingsModel/CascadiaSettingsSerialization.cpp#L34-67](https://github.com/microsoft/terminal/blob/7c92ecd037476f957809d0813b14d8bc44bb071a/src/cascadia/TerminalSettingsModel/CascadiaSettingsSerialization.cpp#L34-L67) [src/cascadia/TerminalSettingsModel/defaults.json](https://github.com/microsoft/terminal/blob/7c92ecd037476f957809d0813b14d8bc44bb071a/src/cascadia/TerminalSettingsModel/defaults.json)
- Dynamic profile generators ship for WSL distros, PowerShell Core, Azure Cloud Shell, Visual Studio developer shells, and SSH hosts; they run during settings load via SettingsLoader::GenerateProfiles(). — [src/cascadia/TerminalSettingsModel/CascadiaSettingsSerialization.cpp#L14-18](https://github.com/microsoft/terminal/blob/7c92ecd037476f957809d0813b14d8bc44bb071a/src/cascadia/TerminalSettingsModel/CascadiaSettingsSerialization.cpp#L14-L18) [src/cascadia/TerminalSettingsModel/CascadiaSettingsSerialization.cpp#L1281](https://github.com/microsoft/terminal/blob/7c92ecd037476f957809d0813b14d8bc44bb071a/src/cascadia/TerminalSettingsModel/CascadiaSettingsSerialization.cpp#L1281) [src/cascadia/TerminalSettingsModel/WslDistroGenerator.h](https://github.com/microsoft/terminal/blob/7c92ecd037476f957809d0813b14d8bc44bb071a/src/cascadia/TerminalSettingsModel/WslDistroGenerator.h)
- Third-party apps can inject settings 'fragments' by dropping JSON under '...\Microsoft\Windows Terminal\Fragments' in a package's LocalState or by registering a 'com.microsoft.windows.terminal.settings' app extension; FindFragmentsAndMergeIntoUserSettings merges them during load. — [src/cascadia/TerminalSettingsModel/CascadiaSettingsSerialization.cpp#L59-63](https://github.com/microsoft/terminal/blob/7c92ecd037476f957809d0813b14d8bc44bb071a/src/cascadia/TerminalSettingsModel/CascadiaSettingsSerialization.cpp#L59-L63) [src/cascadia/TerminalSettingsModel/CascadiaSettingsSerialization.cpp#L329-397](https://github.com/microsoft/terminal/blob/7c92ecd037476f957809d0813b14d8bc44bb071a/src/cascadia/TerminalSettingsModel/CascadiaSettingsSerialization.cpp#L329-L397)
- Windows Terminal can be registered as the default terminal: CTerminalHandoff registers a COM local server to receive PTY handles from the OS, and ConptyConnection::StartInboundListener/NewConnection feed inbound connections into a new tab (TerminalPage::CreateTabFromConnection with Elevate forced false). — [src/cascadia/TerminalConnection/CTerminalHandoff.cpp#L30-48](https://github.com/microsoft/terminal/blob/7c92ecd037476f957809d0813b14d8bc44bb071a/src/cascadia/TerminalConnection/CTerminalHandoff.cpp#L30-L48) [src/cascadia/TerminalConnection/ConptyConnection.cpp#L864](https://github.com/microsoft/terminal/blob/7c92ecd037476f957809d0813b14d8bc44bb071a/src/cascadia/TerminalConnection/ConptyConnection.cpp#L864) [src/cascadia/TerminalApp/TerminalPage.cpp#L788-818](https://github.com/microsoft/terminal/blob/7c92ecd037476f957809d0813b14d8bc44bb071a/src/cascadia/TerminalApp/TerminalPage.cpp#L788-L818)
- Connection types are pluggable: ConptyConnection (local shells), AzureConnection (Azure Cloud Shell), EchoConnection (loopback test), and DebugTapConnection (tap another connection's output); TerminalPage::_CreateConnectionFromSettings picks by profile.ConnectionType(). — [src/cascadia/TerminalConnection/ITerminalConnection.idl](https://github.com/microsoft/terminal/blob/7c92ecd037476f957809d0813b14d8bc44bb071a/src/cascadia/TerminalConnection/ITerminalConnection.idl) [src/cascadia/TerminalConnection/AzureConnection.cpp](https://github.com/microsoft/terminal/blob/7c92ecd037476f957809d0813b14d8bc44bb071a/src/cascadia/TerminalConnection/AzureConnection.cpp) [src/cascadia/TerminalConnection/EchoConnection.cpp](https://github.com/microsoft/terminal/blob/7c92ecd037476f957809d0813b14d8bc44bb071a/src/cascadia/TerminalConnection/EchoConnection.cpp) [src/cascadia/TerminalApp/TerminalPage.cpp#L1572-1589](https://github.com/microsoft/terminal/blob/7c92ecd037476f957809d0813b14d8bc44bb071a/src/cascadia/TerminalApp/TerminalPage.cpp#L1572-L1589) [src/cascadia/TerminalApp/DebugTapConnection.cpp](https://github.com/microsoft/terminal/blob/7c92ecd037476f957809d0813b14d8bc44bb071a/src/cascadia/TerminalApp/DebugTapConnection.cpp)
- Tab/pane UX includes: a customizable new-tab dropdown built from NewTabMenuEntry types (Profile, Folder, Separator, RemainingProfiles, MatchProfiles, Action), a fuzzy-filtered Command Palette (CommandPalette.cpp + vendored fzf in src/cascadia/fzf), search box, and a tab switcher. — [src/cascadia/TerminalApp/TerminalPage.cpp#L1027-1280](https://github.com/microsoft/terminal/blob/7c92ecd037476f957809d0813b14d8bc44bb071a/src/cascadia/TerminalApp/TerminalPage.cpp#L1027-L1280) [src/cascadia/TerminalApp/CommandPalette.cpp](https://github.com/microsoft/terminal/blob/7c92ecd037476f957809d0813b14d8bc44bb071a/src/cascadia/TerminalApp/CommandPalette.cpp) [src/cascadia/fzf/fzf.cpp](https://github.com/microsoft/terminal/blob/7c92ecd037476f957809d0813b14d8bc44bb071a/src/cascadia/fzf/fzf.cpp) [src/cascadia/TerminalControl/SearchBoxControl.cpp](https://github.com/microsoft/terminal/blob/7c92ecd037476f957809d0813b14d8bc44bb071a/src/cascadia/TerminalControl/SearchBoxControl.cpp)
- A full GUI settings editor lives in src/cascadia/TerminalSettingsEditor (XAML pages for profiles, color schemes, actions/keybindings, appearance, extensions, compatibility) and can also launch settings.json in the user's editor; Jumplist.cpp builds taskbar jump-list profiles. — [src/cascadia/TerminalSettingsEditor](https://github.com/microsoft/terminal/blob/7c92ecd037476f957809d0813b14d8bc44bb071a/src/cascadia/TerminalSettingsEditor) [src/cascadia/TerminalApp/TerminalPage.cpp#L1701-1708](https://github.com/microsoft/terminal/blob/7c92ecd037476f957809d0813b14d8bc44bb071a/src/cascadia/TerminalApp/TerminalPage.cpp#L1701-L1708) [src/cascadia/TerminalApp/Jumplist.cpp](https://github.com/microsoft/terminal/blob/7c92ecd037476f957809d0813b14d8bc44bb071a/src/cascadia/TerminalApp/Jumplist.cpp)
- Window/session features: persisted window layouts restored at launch (ApplicationState::SharedInstance().PersistedWindowLayouts -> synthetic 'wt -w new -s <i>' dispatches), named windows ('wt -w <name>'), quake-style summon/dropdown, and global hotkeys registered from ActionMap::GlobalHotkeys. — [src/cascadia/WindowsTerminal/WindowEmperor.cpp#L582-620](https://github.com/microsoft/terminal/blob/7c92ecd037476f957809d0813b14d8bc44bb071a/src/cascadia/WindowsTerminal/WindowEmperor.cpp#L582-L620) [src/cascadia/TerminalApp/AppLogic.cpp#L466-469](https://github.com/microsoft/terminal/blob/7c92ecd037476f957809d0813b14d8bc44bb071a/src/cascadia/TerminalApp/AppLogic.cpp#L466-L469) [src/cascadia/TerminalApp/Remoting.idl](https://github.com/microsoft/terminal/blob/7c92ecd037476f957809d0813b14d8bc44bb071a/src/cascadia/TerminalApp/Remoting.idl)
- Elevation is handled by spawning an elevated sibling: ElevateShim/elevate-shim.cpp performs the ShellExecute runas-style launch, and elevated instances are isolated by the ' Admin' suffix on the window class name/mutex. — [src/cascadia/ElevateShim/elevate-shim.cpp](https://github.com/microsoft/terminal/blob/7c92ecd037476f957809d0813b14d8bc44bb071a/src/cascadia/ElevateShim/elevate-shim.cpp) [src/cascadia/WindowsTerminal/WindowEmperor.cpp#L498-501](https://github.com/microsoft/terminal/blob/7c92ecd037476f957809d0813b14d8bc44bb071a/src/cascadia/WindowsTerminal/WindowEmperor.cpp#L498-L501) [src/cascadia/TerminalApp/TerminalPage.cpp#L806-811](https://github.com/microsoft/terminal/blob/7c92ecd037476f957809d0813b14d8bc44bb071a/src/cascadia/TerminalApp/TerminalPage.cpp#L806-L811)
- Shell/OS integrations include the 'Open in Terminal' Explorer context-menu extension (ShellExtension/OpenTerminalHere.cpp), taskbar AUMID management with deferred .lnk stamping for pinned icons (GH#20053 workaround in _setupAumid), and a notification-area icon for hidden/quake windows. — [src/cascadia/ShellExtension/OpenTerminalHere.cpp](https://github.com/microsoft/terminal/blob/7c92ecd037476f957809d0813b14d8bc44bb071a/src/cascadia/ShellExtension/OpenTerminalHere.cpp) [src/cascadia/WindowsTerminal/WindowEmperor.cpp#L371-470](https://github.com/microsoft/terminal/blob/7c92ecd037476f957809d0813b14d8bc44bb071a/src/cascadia/WindowsTerminal/WindowEmperor.cpp#L371-L470) [src/cascadia/WindowsTerminal/WindowEmperor.cpp#L719-722](https://github.com/microsoft/terminal/blob/7c92ecd037476f957809d0813b14d8bc44bb071a/src/cascadia/WindowsTerminal/WindowEmperor.cpp#L719-L722)
- The Atlas renderer supports pixel-shader effects via custom_shader_ps.hlsl/custom_shader_vs.hlsl, optional D2D (BackendD2D) and D3D (BackendD3D) backends, builtin glyphs for box drawing, and a WIC-based image path for Sixel graphics decoded by terminal/adapter/SixelParser. — [src/renderer/atlas/custom_shader_ps.hlsl](https://github.com/microsoft/terminal/blob/7c92ecd037476f957809d0813b14d8bc44bb071a/src/renderer/atlas/custom_shader_ps.hlsl) [src/renderer/atlas/BackendD3D.cpp](https://github.com/microsoft/terminal/blob/7c92ecd037476f957809d0813b14d8bc44bb071a/src/renderer/atlas/BackendD3D.cpp) [src/renderer/atlas/BuiltinGlyphs.cpp](https://github.com/microsoft/terminal/blob/7c92ecd037476f957809d0813b14d8bc44bb071a/src/renderer/atlas/BuiltinGlyphs.cpp) [src/terminal/adapter/SixelParser.cpp](https://github.com/microsoft/terminal/blob/7c92ecd037476f957809d0813b14d8bc44bb071a/src/terminal/adapter/SixelParser.cpp)
- Embeddable terminal surfaces exist for third parties: HwndTerminal (Win32 HWND host) and WpfTerminalControl (WPF control, with WpfTerminalTestNetCore harness), letting other apps host a terminal. — [src/cascadia/TerminalControl/HwndTerminal.cpp](https://github.com/microsoft/terminal/blob/7c92ecd037476f957809d0813b14d8bc44bb071a/src/cascadia/TerminalControl/HwndTerminal.cpp) [src/cascadia/WpfTerminalControl](https://github.com/microsoft/terminal/blob/7c92ecd037476f957809d0813b14d8bc44bb071a/src/cascadia/WpfTerminalControl) [src/cascadia/WpfTerminalTestNetCore](https://github.com/microsoft/terminal/blob/7c92ecd037476f957809d0813b14d8bc44bb071a/src/cascadia/WpfTerminalTestNetCore)
- Terminal bell can be routed through a MIDI synth: src/audio/midi/MidiAudio.cpp implements note playback for BEL/sequence-driven audio. — [src/audio/midi/MidiAudio.cpp](https://github.com/microsoft/terminal/blob/7c92ecd037476f957809d0813b14d8bc44bb071a/src/audio/midi/MidiAudio.cpp)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
