Windows Terminal,windows控制台常用命令
Windows终端是一个全新的,流行的和强大的命令行终端工具。它包含许多在社区中非常受欢迎的功能,如多标签支持、富文本、多语言支持、可配置性、主题和样式、支持表情符号和基于GPU的文本渲染等。同时,终端仍然满足我们的目标和要求,以确保它是快速高效的,并且不消耗大量的内存和功率。
Windows 控制台主机
Conhost.exe,Windows控制台的宿主程序,是Windows的原生命令行体验。它实现了Windows的命令行基础结构,并提供了Windows控制台API、输入引擎、渲染引擎和用户配置信息。这个项目中的控制台主机代码实际上是Windows中conhost.exe的源代码。
控制台的主要目的是维护与现有控制台应用程序的向后兼容性。
自2014年拥有Windows命令行以来,开发团队已经为控制台添加了许多新功能,包括窗口透明性、基于行的选择、对ANSI/虚拟终端序列的支持、24位颜色和一个伪控制台(“ConPTY”)等。
但是,由于控制台的主要目标是保持向后兼容,虽然这么多年来社区一直希望我们能增加一些功能(比如标签页),但我们不可能增加这些功能。
许多限制使我们决定开发一个全新的Windows终端。
共享的组件
在检修控制台时,我们对其代码库进行了大量改进。主要是将逻辑实体清晰地划分为模块和类,引入一些关键的扩展点,用更安全高效的STL容器替换几个老旧的自制集合和容器,利用微软Wilheader库让代码更简单安全。
这次彻底检查导致创建了几个对Windows上的任何终端实现都有用的关键组件,包括基于DirectWrite的新文本布局和呈现引擎、能够存储UTF-16和UTF-8的文本缓冲区以及VT解析器/传输器。
构建一个全新终端
当我们开始构建一个全新的终端应用程序时,我们探索并评估了几种方法和技术栈。最后,我们决定继续用C开发,共享上述现代组件来实现我们的目标,在现代Windows应用平台和UI框架的基础上进行开发。
此外,我们意识到终端的渲染器和输入堆栈可以构建到可重用的Windows UI控件中,以便其他人可以将它们合并到其他应用程序中。
源码构建
这个项目使用git子模块来包含一些相关的依赖项。为了确保子模块得到更新,请在构建器中使用以下命令进行检查:
gitsubemuleupdate-init-recursive
OpenConsole.sln需要在Visual Studio中或使用MSBuild在命令行上构建。命令行的构建如下:
nugetrestore openconsole . slnmsbuildopenconsole . SLN
我们还在工具目录中提供了一组常用的脚本来帮助自动化构建和运行测试的过程。
项目包含:
Windows终端
Windows控制台主机(conhost.exe)
上述两个项目的共享组件
颜色工具
示例项目将展示如何使用Windows控制台API。