microsoft/terminal:104K stars 的 Windows Terminal 到底做了什么
posts posts 2026-07-20T03:02:36+08:00microsoft/terminal 是 Windows 10/11 上 Windows Terminal + 原生 console host 的开源实现,104K stars、10万+ stars 的 C++ 项目。它把 Windows 的终端体验从 conhost 升级到现代 GPU 加速 / 多 tab / Unicode 完整支持的 Terminal。技术笔记windows-terminal, c++, winui, console, wslmicrosoft/terminal:104K stars 的 Windows Terminal 到底做了什么
一句话判断
microsoft/terminal 不是普通的"终端模拟器"项目,而是 Microsoft 官方的新一代 Windows 终端 + 原生 console host——104K stars、9.4K forks 的 C++ 大型项目,承载 Windows Terminal(用户面)+ Windows 原生 console host(系统面)两个独立但同源的产品。它的存在解决了 Windows 上"终端体验 20 年没跟上 macOS / Linux"的痛点。
项目定位
- 仓库:
microsoft/terminal,MIT 协议,C++ 实现 - GitHub Stars:104K,Forks 9.4K(2026-07-18 数据)
- 最低系统要求:Windows 10 2004 (build 19041) 或更高
- 核心组件:
- Windows Terminal(用户面):新终端应用,支持多 tab / 分割窗格 / GPU 加速渲染
- Windows Console Host(系统面):原 conhost.exe 的现代化重写,保证兼容性
系统地图
| 模块 | 责任 |
|---|---|
| Terminal App | 新终端 UI(多 tab、分割窗格、主题、配置文件) |
| Console Host | 兼容层,把 Windows 控制台应用接到新 Terminal |
| Render Engine | 基于 DirectX 的 GPU 加速文本渲染 |
| Terminal Core | 终端状态机 + 输入 / 输出 / 滚动 / 选择逻辑 |
| Settings & Profiles | JSON 配置文件,支持 PowerShell / WSL / cmd / 自定义 shell |
| Cascadia Code Font | 配套等宽字体(仓库内或单独发布) |
关键机制拆解
1. Windows Terminal vs Console Host 的双层架构
这是 microsoft/terminal 最容易被误解的设计。仓库同时承载两个产品:
- Windows Terminal(
Terminal/):新终端应用,用户主动启动,提供多 tab / GPU 渲染 / 现代 UI - Console Host(
src/host/):当用户从 cmd / PowerShell / WSL 启动传统控制台应用时,系统底层跑的 conhost.exe 现代化版本
两个组件共享 Terminal Core(终端状态机、文本渲染管线),但入口和 UI 不同。这套架构让 Windows 同时支持"现代多 tab 体验"和"老控制台应用兼容"——比如老旧的批处理脚本仍然能跑,但渲染走新管线。
2. GPU 加速渲染
Windows Terminal 的渲染管线基于 DirectX(D3D11/D3D12):
- 文本以 GPU 纹理方式渲染,不是 GDI(Graphics Device Interface,Windows 老图形接口)
- 支持 ligature(连字)、emoji、彩色 emoji
- 滚动 / 选择 / 复制都是 GPU 操作,不阻塞 UI
这套 GPU 渲染让 Windows Terminal 在长输出 / 高分辨率 / 高刷新率显示器上的体验接近 macOS iTerm2 / Linux Alacritty。
3. 多 tab + 分割窗格
UI 层提供 macOS iTerm2 / Linux tmux 用户早就习惯的多 tab + 分割窗格。每个 pane 是独立的 shell session,互不干扰。配置文件(profiles.json)支持:
- 自定义字体 / 字号 / 颜色主题
- 自定义 background image / acrylic 背景模糊
- 自定义 keybindings(快捷键)
- 自定义启动命令(默认启动 PowerShell / cmd / WSL / 自定义 shell)
4. WSL 集成
Windows Terminal 把 WSL(Windows Subsystem for Linux)作为一等公民。每个 WSL 发行版(Ubuntu / Debian / Arch / 自定义)可以单独配置成一个 profile,启动时直接进入对应发行版。这让 Windows Terminal 成为 WSL 用户的事实标准终端——VS Code 的 WSL 扩展、WSLg GUI 应用的启动终端,都默认推荐 Windows Terminal。
5. 跨平台分发
README 给出的官方安装路径:
| 渠道 | 方式 |
|---|---|
| Microsoft Store(推荐) | 自动更新,与系统集成最好 |
| GitHub Releases | 手动下载 .msixbundle,适合企业内网 |
| winget | winget install --id Microsoft.WindowsTerminal -e |
| Chocolatey(非官方) | choco install microsoft-windows-terminal |
| Scoop(非官方) | scoop install windows-terminal |
多种安装渠道覆盖了从个人用户到企业内网到命令行重度用户的各种场景。
6. Windows 11 24H2 的 Terminal 默认化
从 Windows 11 24H2 开始,Windows Terminal 已经成为默认终端应用——按 Win+R 输入 wt 直接打开多 tab 终端。这是从 Windows Vista 以来终端体验最大的一次升级。
关键机制:C++ 工程实践
microsoft/terminal 是大型 C++ 项目管理的范例:
- WinUI 3 / XAML for UI
- WIL(Windows Implementation Library) for Windows API smart pointers
- vcpkg for C++ 依赖管理
- GitHub Actions for CI,多平台构建
- 大量 unit test + UI test
文档方面,仓库里有完整的贡献者文档:
doc/STYLE.md:代码风格doc/ORGANIZATION.md:代码组织doc/WIL.md:WIL smart pointers 使用指南doc/EXCEPTIONS.md:遗留代码的异常处理约定
这是学习大型 C++ 项目工程化的最佳案例之一——1000+ 贡献者协作的代码仍然保持可读和可维护。
适用人群
- Windows 用户:想要现代化终端体验(多 tab、GPU 渲染、emoji)
- WSL 用户:WSL + Windows Terminal 是微软官方推荐组合
- 跨平台开发者:在 Windows 上跑 Linux 工作流的人
- C++ 学习者:学习大型 C++ 项目工程化的范例
- UI / 终端工程师:研究 DirectX 文本渲染、终端状态机的实现细节
不适合谁
- macOS / Linux 用户:仓库明确是 Windows 项目,虽然 Terminal Core 理论可移植,但 UI 层是 WinUI
- 追求轻量级终端的人:Windows Terminal 是功能齐全的"重客户端",如果你只需要一个轻量 shell,Alacritty / WezTerm 等更轻
- 不愿装 Microsoft Store 的人:手动安装 .msixbundle 需要处理 VC++ 框架依赖、自动更新失效
仓库地址
https://github.com/microsoft/terminal
阅读路径建议
- 如果只是用:Microsoft Store 安装,体验多 tab + GPU 渲染 + WSL 集成
- 想贡献代码:先读
doc/ORGANIZATION.md和doc/STYLE.md,理解仓库结构 - 想研究渲染:看
src/renderer/目录,研究 DirectX 文本渲染管线 - 想研究终端状态机:看
src/terminal/目录,理解 VT(Virtual Terminal,虚拟终端序列)解析