microsoft/terminal

GitHub: microsoft/terminal

微软官方开源的新一代 Windows 终端应用,集成多标签、分屏、GPU加速渲染等现代特性,统一管理 PowerShell、CMD、WSL 等命令行环境。

Stars: 101967 | Forks: 9096

![terminal-logos](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/aa62ffee7e142235.png) [![Terminal Build Status](https://dev.azure.com/shine-oss/terminal/_apis/build/status%2FTerminal%20CI?branchName=main)](https://dev.azure.com/shine-oss/terminal/_build/latest?definitionId=1&branchName=main) # 欢迎来到 Windows Terminal、Console 和命令行仓库
目录 - [安装并运行 Windows Terminal](#installing-and-running-windows-terminal) - [Microsoft Store \[推荐\]](#microsoft-store-推荐) - [其他安装方式](#other-install-methods) - [通过 GitHub](#via-github) - [通过 Windows Package Manager CLI (aka winget)](#via-windows-package-manager-cli-aka-winget) - [通过 Chocolatey (非官方)](#via-chocolatey-unofficial) - [通过 Scoop (非官方)](#via-scoop-unofficial) - [安装 Windows Terminal Canary](#installing-windows-terminal-canary) - [Windows Terminal 路线图](#windows-terminal-roadmap) - [Terminal 和 Console 概述](#terminal--console-overview) - [Windows Terminal](#windows-terminal) - [Windows Console Host](#the-windows-console-host) - [共享组件](#shared-components) - [创建全新的 Windows Terminal](#creating-the-new-windows-terminal) - [资源](#resources) - [常见问题](#faq) - [我构建并运行了新的 Terminal,但它看起来和旧的 console 一样](#i-built-and-ran-the-new-terminal-but-it-looks-just-like-the-old-console) - [文档](#documentation) - [贡献](#contributing) - [与团队沟通](#communicating-with-the-team) - [开发者指南](#developer-guidance) - [前置条件](#prerequisites) - [构建代码](#building-the-code) - [在 PowerShell 中构建](#building-in-powershell) - [在 Cmd 中构建](#building-in-cmd) - [运行和调试](#running--debugging) - [代码指南](#coding-guidance) - [行为准则](#code-of-conduct)

本仓库包含以下内容的源代码: * [Windows Terminal](https://aka.ms/terminal) * [Windows Terminal Preview](https://aka.ms/terminal-preview) * Windows console host (`conhost.exe`) * 两个项目之间共享的组件 * [ColorTool](./src/tools/ColorTool) * [示例项目](./samples) 展示如何使用 Windows Console API 相关仓库包括: * [Windows Terminal 文档](https://docs.microsoft.com/windows/terminal) ([仓库:为文档做贡献](https://github.com/MicrosoftDocs/terminal)) * [Console API 文档](https://github.com/MicrosoftDocs/Console-Docs) * [Cascadia Code 字体](https://github.com/Microsoft/Cascadia-Code) ## 安装并运行 Windows Terminal ### Microsoft Store [推荐] 从 Microsoft Store 安装 [Windows Terminal][store-install-link]。 这允许您在我们发布新版本时通过自动升级始终使用最新版本。 这是我们推荐的安装方式。 ### 其他安装方式 #### 通过 GitHub 对于无法从 Microsoft Store 安装 Windows Terminal 的用户, 可以从此仓库的 [Releases 页面](https://github.com/microsoft/terminal/releases) 手动下载已发布的构建。 从 **Assets** 部分下载 `Microsoft.WindowsTerminal_.msixbundle` 文件。 要安装该应用,您可以直接双击 `.msixbundle` 文件,应用安装程序应会自动运行。 如果因某种原因失败,您可以在 PowerShell 提示符下尝试以下命令: ``` # 注:如果您使用的是 PowerShell 7+,请运行 # Import-Module Appx -UseWindowsPowerShell # 在使用 Add-AppxPackage 之前。 Add-AppxPackage Microsoft.WindowsTerminal_.msixbundle ``` #### 通过 Windows Package Manager CLI (aka winget) [winget](https://github.com/microsoft/winget-cli) 用户可以通过安装 `Microsoft.WindowsTerminal` 包来下载并安装最新的 Terminal 版本: ``` winget install --id Microsoft.WindowsTerminal -e ``` #### 通过 Chocolatey (非官方) [Chocolatey](https://chocolatey.org) 用户可以通过安装 `microsoft-windows-terminal` 包来下载并安装最新的 Terminal 版本: ``` choco install microsoft-windows-terminal ``` 要使用 Chocolatey 升级 Windows Terminal,请运行以下命令: ``` choco upgrade microsoft-windows-terminal ``` 如果您在安装/升级包时遇到任何问题,请前往 [Windows Terminal 包页面](https://chocolatey.org/packages/microsoft-windows-terminal) 并遵循 [Chocolatey 分流流程](https://chocolatey.org/docs/package-triage-process) #### 通过 Scoop (非官方) [Scoop](https://scoop.sh) 用户可以通过安装 `windows-terminal` 包来下载并安装最新的 Terminal 版本: ``` scoop bucket add extras scoop install windows-terminal ``` 要使用 Scoop 更新 Windows Terminal,请运行以下命令: ``` scoop update windows-terminal ``` 如果您在安装/更新包时遇到任何问题,请在 Scoop Extras bucket 仓库的 [issues 页面](https://github.com/lukesampson/scoop-extras/issues) 搜索或报告。 ## 安装 Windows Terminal Canary Windows Terminal Canary 是 Windows Terminal 的每日构建版本。此构建包含来自我们 `main` 分支的最新代码,让您有机会在功能进入 Windows Terminal Preview 之前试用它们。 Windows Terminal Canary 是我们最不稳定的版本,因此您可能会在我们有机会发现 Bug 之前先遇到它们。 Windows Terminal Canary 提供 App Installer 分发版和便携版 ZIP 分发版。 App Installer 分发版支持自动更新。由于平台限制,此安装程序仅在 Windows 11 上运行。 便携版 ZIP 分发版是一个便携式应用程序。它不会自动更新,也不会自动检查更新。此便携版 ZIP 分发版可在 Windows 10 (19041+) 和 Windows 11 上运行。 | 分发版 | 架构 | 链接 | |---------------|:---------------:|------------------------------------------------------| | App Installer | x64, arm64, x86 | [下载](https://aka.ms/terminal-canary-installer) | | Portable ZIP | x64 | [下载](https://aka.ms/terminal-canary-zip-x64) | | Portable ZIP | ARM64 | [下载](https://aka.ms/terminal-canary-zip-arm64) | | Portable ZIP | x86 | [下载](https://aka.ms/terminal-canary-zip-x86) | _了解更多关于 [Windows Terminal 分发版的类型](https://learn.microsoft.com/windows/terminal/distributions)。_ ## Windows Terminal 路线图 Windows Terminal 的计划[在此处描述](/doc/roadmap-2023.md),并将随着项目的进展进行更新。 ## Terminal 和 Console 概述 在深入研究代码之前,请花几分钟时间回顾以下概述: ### Windows Terminal Windows Terminal 是一款面向命令行用户的全新、现代、功能丰富且高效的终端应用程序。 它包含 Windows 命令行社区最常要求的许多功能,包括支持选项卡、富文本、全球化、可配置性、主题和样式等。 Terminal 还需满足我们的目标和指标,以确保其保持快速和高效,并且不会消耗大量内存或电量。 ### Windows Console Host Windows Console host (`conhost.exe`) 是 Windows 最初的命令行用户体验。 它还托管了 Windows 命令行基础设施以及 Windows Console API 服务器、输入引擎、渲染引擎、用户首选项等。 此仓库中的 console host 代码是 Windows 本身内置的 `conhost.exe` 的实际源代码。 自 2014 年接管 Windows 命令行以来,团队为 Console 添加了几个新功能,包括背景透明、 基于行的选择、[ANSI / Virtual Terminal 序列](https://en.wikipedia.org/wiki/ANSI_escape_code)支持、[24-bit 色](https://devblogs.microsoft.com/commandline/24-bit-color-in-the-windows-console/)、 [Pseudoconsole ("ConPTY")](https://devblogs.microsoft.com/commandline/windows-command-line-introducing-the-windows-pseudo-console-conpty/) 等。 然而,由于 Windows Console 的主要目标是保持向后兼容性,我们一直无法添加社区(以及团队) 多年来想要的许多功能,包括选项卡、Unicode 文本和 Emoji。 这些限制促使我们创建全新的 Windows Terminal。 ### 共享组件 在彻底改造 Windows Console 的过程中,我们相当大程度地使其代码库现代化, 将逻辑实体清晰地分离到模块和类中,引入了一些关键的可扩展性点, 用更安全、更高效的 [STL 容器](https://docs.microsoft.com/en-us/cpp/standard-library/stl-containers?view=vs-2022) 替换了几个旧的、自制的集合和容器, 并通过使用 Microsoft 的 [Windows Implementation Libraries - WIL](https://github.com/Microsoft/wil) 使代码更简单、更安全。 这次重构使得 Console 的几个关键组件可在 Windows 上的任何终端实现中重用。 这些组件包括新的基于 DirectWrite 的文本布局和渲染引擎、 能够存储 UTF-16 和 UTF-8 的文本缓冲区、VT 解析器/发射器等。 ### 创建全新的 Windows Terminal 当我们开始规划新的 Windows Terminal 应用程序时,我们探索并评估了几种方法和技术栈。 我们最终决定,继续投资我们的 C++ 代码库最能满足我们的目标, 这将允许我们在现有的 Console 和新的 Terminal 中重用几个上述现代化的组件。 此外,我们意识到这将允许我们将 Terminal 的大部分核心构建为一个可重用的 UI 控件, 供其他人将其整合到自己的应用程序中。 这项工作的成果包含在此仓库中,并作为您可以从 Microsoft Store 下载的 Windows Terminal 应用程序, 或[直接从此仓库的 releases](https://github.com/microsoft/terminal/releases) 交付。 ## 资源 有关 Windows Terminal 的更多信息,您可能会发现以下资源有用且有趣: * [命令行博客](https://devblogs.microsoft.com/commandline) * [命令行背景博客系列](https://devblogs.microsoft.com/commandline/windows-command-line-backgrounder/) * Windows Terminal 发布:[Terminal "Sizzle Video"](https://www.youtube.com/watch?v=8gw0rXPMMPE&list=PLEHMQNlPj-Jzh9DkNpqipDGCZZuOwrQwR&index=2&t=0s) * Windows Terminal 发布:[Build 2019 会议](https://www.youtube.com/watch?v=KMudkRcwjCw) * Run As Radio:[第 645 期 - Richard Turner 谈 Windows Terminal](https://www.runasradio.com/Shows/Show/645) * Azure Devops 播客:[第 54 期 - Kayla Cinnamon 和 Rich Turner 谈 Windows Terminal 上的 DevOps](http://azuredevopspodcast.clear-measure.com/kayla-cinnamon-and-rich-turner-on-devops-on-the-windows-terminal-team-episode-54) * Microsoft Ignite 2019 会议:[现代 Windows 命令行:Windows Terminal - BRK3321](https://myignite.techcommunity.microsoft.com/sessions/81329?source=sessions) ## 常见问题 ### 我构建并运行了新的 Terminal,但它看起来和旧的 console 一样 原因:您在 Visual Studio 中启动了不正确的解决方案。 解决方案:确保您在 Visual Studio 中构建并部署 `CascadiaPackage` 项目。 ## 文档 所有项目文档位于 [aka.ms/terminal-docs](https://aka.ms/terminal-docs)。如果您想为文档做出贡献,请在 [Windows Terminal 文档仓库](https://github.com/MicrosoftDocs/terminal) 提交 pull request。 ## 贡献 我们很高兴能与您——我们了不起的社区——一起构建和增强 Windows Terminal! ***在您开始开发功能/修复之前***,请阅读并遵循我们的 [贡献者指南](./CONTRIBUTING.md), 以帮助避免任何浪费或重复的工作。 ## 与团队沟通 与团队沟通的最简单方式是通过 GitHub issues。 请提交新问题、功能请求和建议,但 **请务必在创建新问题之前搜索类似的开放/关闭的已存在问题。** 如果您想提出一个您认为(暂时)不值得开 issue 的问题,请通过 Twitter 联系我们: * Christopher Nguyen, 产品经理: [@nguyen_dows](https://twitter.com/nguyen_dows) * Dustin Howett, 工程主管:[@dhowett](https://twitter.com/DHowett) * Mike Griese, 高级开发者:[@zadjii@mastodon.social](https://mastodon.social/@zadjii) * Carlos Zamora, 开发者:[@cazamor_msft](https://twitter.com/cazamor_msft) * Pankaj Bhojwani, 开发者 * Leonard Hecker, 开发者:[@LeonardHecker](https://twitter.com/LeonardHecker) ## 开发者指南 ## 前置条件 您可以通过以下两种方式之一配置环境来构建 Terminal: ### 使用 WinGet 配置文件 克隆仓库后,您可以使用 [WinGet 配置文件](https://learn.microsoft.com/en-us/windows/package-manager/configuration/#use-a-winget-configuration-file-to-configure-your-machine) 来设置您的环境。[默认配置文件](.config/configuration.winget) 安装 Visual Studio 2022 Community 和其余所需的工具。 .config 目录中还有另外两个适用于 Visual Studio 2022 企业版和专业版变体的配置文件。要运行默认配置文件,您可以从资源管理器双击该文件或运行以下命令: ``` winget configure .config\configuration.winget ``` ### 手动配置 * 您必须运行 Windows 10 2004 (build >= 10.0.19041.0) 或更高版本才能运行 Windows Terminal * 您必须[在 Windows 设置应用中启用开发者模式](https://docs.microsoft.com/en-us/windows/uwp/get-started/enable-your-device-for-development) 才能在本地安装并运行 Windows Terminal * 您必须安装 [PowerShell 7 或更高版本](https://github.com/PowerShell/PowerShell/releases/latest) * 您必须安装 [Windows 11 (10.0.22621.0) SDK](https://developer.microsoft.com/en-us/windows/downloads/windows-sdk/) * 您必须至少安装 [VS 2022](https://visualstudio.microsoft.com/downloads/) * 您必须通过 VS Installer 安装以下工作负载。注意:在 VS 2022 中打开解决方案将[提示您自动安装缺失的组件](https://devblogs.microsoft.com/setup/configure-visual-studio-across-your-organization-with-vsconfig/): * 使用 C++ 的桌面开发 * 通用 Windows 平台开发 * **以下单个组件** * C++ (v143) 通用 Windows 平台工具 * 您必须安装 [.NET Framework 目标包](https://docs.microsoft.com/dotnet/framework/install/guide-for-developers#to-install-the-net-framework-developer-pack-or-targeting-pack) 以构建测试项目 ## 构建代码 OpenConsole.slnx 可以在 Visual Studio 内部构建,也可以使用 **/tools** 目录中的 一组便捷脚本和工具从命令行构建: ### 在 PowerShell 中构建 ``` Import-Module .\tools\OpenConsole.psm1 Set-MsBuildDevEnvironment Invoke-OpenConsoleBuild ``` ### 在 Cmd 中构建 ``` .\tools\razzle.cmd bcz ``` ## 运行和调试 要在 VS 中调试 Windows Terminal,右键点击 `CascadiaPackage`(在解决方案资源管理器中)并转到属性。 在“调试”菜单中,将“应用程序进程”和“后台任务进程”更改为“仅限机”。 然后,您应该能够通过按 F5 来构建和调试 Terminal 项目。 确保选择“x64”或“x86”平台 - Terminal 无法为“Any Cpu”构建(因为 Terminal 是 C++ 应用程序, 而不是 C# 应用程序)。 ### 代码指南 请阅读下面关于我们编码实践的简短文档。 这是一项正在进行的工作,我们要了解需要为人们提供什么才能使他们成为我们项目的有效贡献者。 * [代码风格](./doc/STYLE.md) * [代码组织](./doc/ORGANIZATION.md) * [旧版代码库中的异常](./doc/EXCEPTIONS.md) * [WIL 中用于与 Windows 交互的有用智能指针和宏](./doc/WIL.md) ## 行为准则 本项目采用了 [Microsoft 开源行为准则][conduct-code]。有关更多信息,请参阅[行为准则常见问题解答][conduct-FAQ],或如有任何其他问题或评论,请联系 [opencode@microsoft.com][conduct-email]。
标签:C++, CLI, CMD, DirectWrite, DirectX, Homebrew安装, IPv6, Microsoft, PowerShell, Shell, WiFi技术, Windows Console, Windows Terminal, Windows系统, Windows终端, 多标签页, 威胁情报, 开发者工具, 控制台, 效率工具, 数据擦除, 端点可见性, 系统工具, 终端模拟器, 自定义配置, 跨平台开发