Windows Terminal概述git
github项目地址https://github.com/microsoft/Terminal
在深刻了解代码以前,请花几分钟时间查看下面的概述:github
Windows终端
Windows Terminal是一个面向命令行用户的全新,现代,功能丰富,高效的终端应用程序。它包括Windows命令行社区最常请求的许多功能,包括对选项卡,富文本,全球化,可配置性,主题和样式等的支持。安全
终端还须要知足咱们的目标和措施,以确保它保持快速,高效,而且不会消耗大量的内存或电力。框架
Windows控制台主机
Windows控制台主机conhost.exe是Windows的原始命令行用户体验。它实现了Windows的命令行基础结构,并负责托管Windows控制台API,输入引擎,呈现引擎和用户首选项。此存储库中的控制台主机代码conhost.exe是构建Windows自己的实际源代码。ide
控制台的主要目标是与现有控制台子系统应用程序保持向后兼容。工具
自2014年得到Windows命令行的全部权以来,该团队已向控制台添加了几项新功能,包括窗口透明度,基于行的选择,支持ANSI /虚拟终端序列,24位颜色,Pseudoconsole(“ConpTY”) “)等等。布局
可是,因为Console的主要目标是保持向后兼容性,所以咱们没法添加社区一直要求的许多功能,以及咱们过去几年一直但愿添加的功能 - 好比标签!性能
这些限制促使咱们建立了新的Windows终端。测试
共享组件
在对控制台进行大修时,咱们对代码库进行了大规模的现代化改造。咱们将逻辑实体彻底分离为模块和类,引入了一些关键的可扩展点,用更安全,更高效的STL容器替换了几个旧的,自行开发的集合和容器,并经过使用Microsoft的WIL头库使代码更简单,更安全。ui
这项大修工做致使建立了几个关键组件,这些组件对Windows上的任何终端实现都颇有用,包括一个新的基于DirectWrite的文本布局和渲染引擎,一个可以存储UTF-16和UTF-8的文本缓冲区,以及VT解析器/发射器。
创建一个新的终端
当咱们开始构建新的终端应用程序时,咱们探索并评估了几种方法和技术堆栈。咱们最终决定经过坚持使用C ++并共享上述现代化组件,将它们置于现代Windows应用程序平台和UI框架之上来最好地实现咱们的目标。
此外,咱们意识到这将容许咱们将终端的渲染器和输入堆栈构建为可重用的Windows UI控件,其余人能够将其合并到他们的应用程序中。
常问问题
我在哪里能够下载Windows终端?
目前尚未可下载的二进制文件。
Windows终端处于早期的 alpha阶段,还没有为普通大众作好准备。若是你想早点进入,你能够尝试从源头本身构建它。
不然,您须要等到6月中旬才能正式预览构建。
我建造并运行了新的终端,但它看起来就像旧的控制台!是什么赋予了?
首先,确保您CascadiaPackage在Visual Studio中构建和部署,而不是 Host.EXE。OpenConsole.exe只是conhost.exe,你知道和喜欢的旧控制台。opencon.cmd将推出openconsole.exe,不幸的openterm.cmd是,目前已经破产。
其次,尝试按Ctrl+ T。默认状况下,只有一个选项卡时,隐藏选项卡。在将来,用户界面将是显着不一样,但就目前而言,缺省值应该看起来像控制台默认值。
我试过运行WindowsTerminal.exe它崩溃了!
不要尝试无包装运行它。确保CascadiaPackage从Visual Studio 构建和部署,并运行Windows终端(预览)应用程序。
确保您使用的是正确版本的Windows。您须要使用Insider的版本,或等待1903版本,由于Windows终端须要最新Windows版本的功能。
入门
先决条件
您必须运行Windows 1903(build> = 10.0.18362.0)或更高版本才能运行Windows Terminal
截至2019年5月,此版本仅可经过Windows Insider Program得到。您能够经过设备的系统设置注册和配置Insider Program。
您必须安装1903 SDK(build 10.0.18362.0)
您至少须要安装VS 2017
您须要在VS中安装如下两个软件包(Visual Studio Installer中的“工做负载”选项卡):
“使用C ++进行桌面开发”
“通用Windows平台开发”
若是你正在运行VS2019,你还须要安装“v141工具集”和“用于x86和x64的Visual C ++ ATL”
您还须要在“设置”应用中启用“开发者模式”,以启用安装终端应用以在本地运行。
调试
要在VS中进行调试,请右键单击CascadiaPackage(来自VS Solution Explorer)并转到属性,在“调试”菜单中,将“应用程序进程”和“后台任务进程”更改成“仅限本机”
特约
咱们很高兴与您,咱们的社区一块儿工做,构建和加强Windows终端!
咱们要求您在开始处理您想要贡献的功能以前,请提交一份描述您提议的更改的问题:咱们很乐意与您合做,找出最佳方法,在整个功能开发过程当中提供指导和指导,以及帮助避免任何浪费或重复的努力。
👉 记得!您的贡献可能会合并到Windows的将来版本中!所以,全部拉取请求都将受到与咱们内部贡献者相同的质量,编码标准,性能,全球化,可访问性和兼容性的严格审查。
⚠ 注意:命令行团队正在积极地使用此存储库,并将按期从新构建代码,以便更容易理解,导航,构建,测试和贡献,所以DO指望对代码布局进行重大更改按期。
与团队沟通
与团队沟通的最简单方法是经过GitHub问题。请提交新的问题,功能请求和建议,但DO会先搜索相似的打开/关闭预先存在的问题。
请帮助咱们保持这个存储库的清洁,包容和乐趣!咱们不会容忍任何侮辱,粗鲁,不尊重或不恰当的行为。阅读咱们的行为准则了解更多详情。
若是您想提出一个您认为不存在问题的问题,请经过Twitter与咱们联系:
Rich Turner,项目经理:@richturn_ms
Dustin Howett,工程主管:@dhowett
Michael Niksa,高级开发人员:@michaelniksa
Kayla Cinnamon,项目经理(尤为是UX问题):@cinnamon_msft
开发者指导
创建守则
此存储库使用git子模块来实现其某些依赖项。要确保子模块已恢复或更新,请确保在构建以前运行如下命令:
git submodule update --init --recursive
OpenConsole.sln能够在Visual Studio中构建,也可使用MSBuild从命令行构建。要从命令行构建:
。\吨 ools \ r azzle.cmd
BCZ
咱们在/ tools目录中提供了一组便捷脚本和README,以帮助自动化构建和运行测试的过程。
编码指导
请查看如下有关咱们的编码标准等的简要文档。
👉 若是您发现这些文档中缺乏某些内容,请随时为存储库中的任何文档文件作出贡献(或者建立一些新文档!)
这是一项正在进行中的工做,由于咱们了解了为了成为项目的有效贡献者而须要提供的人员。
编码风格代码组织咱们的遗留代码库中的例外状况有用的智能指针和宏用于与WIL中的Windows链接行为守则该项目采用了Microsoft开源行为准则。有关更多信息,请参阅行为准则常见问题解答或联系opencode@microsoft.com以及任何其余问题或意见。